![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/UQJR6/btrzg4Ixza8/d8dmnrpKM5aJU2H0afmLwK/img.png)
리다이렉트(redirect) 리다이렉트란 컨트롤러에서 뷰를 분기하는 방법으로 사용자가 요청한 URL이 아닌 다른 URL을 넘겨주는 것이다. 예를 들어, 회원정보수정 페이지로 접근했을 때 로그인이 되어있지 않다면 사용자를 회원정보수정페이지가 아닌 로그인 페이지로 이동(리다이렉트)시켜야한다. Controller에 Redirect 구현 @RequestMapping(value = "/member/modifyForm") public String modifyForm(Model model, HttpServletRequest request) { HttpSession session = request.getSession(); Member member = (Member) session.getAttribute("member"..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/OAWwO/btry7LCziEA/IOPjdwGlNV10mPBKhILDTk/img.png)
HTTP 클라이언트와 서버가 통신 할 때 이용하는 프로토콜인 HTTP는 비상태 프로토콜(stateless Protocol)이다. 즉, 클라이언트-서버 간의 요청-응답이 이루어졌을 때, 서버는 클라이언트에 관한 어떠한 상태정보도 저장하지 않는다. 이러한 특징은 서버가 클라이언트와의 연결을 유지하는데 소모되는 자원낭비를 줄일 수 있지만, 로그인 상태 유지, 장바구니와 같이, 연결정보를 유지해야 하는 기능을 구현하는데 어려움이 있다. 이를 해결하기 위한 두 가지 방법으로 세션과 쿠키가 있다. 세션은 서버에서 사용자 정보를 관리하는 반면, 쿠키는 클라이언트가 사용자 정보를 관리한다. 쿠키를 이용하면 서버의 부하를 줄일 수 있지만, 보안적인 측면에서 취약할 수 있기 때문에 주로 장바구니, 팝업 보지않음과 같은 민..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/RmbUo/btry316Xx8A/Xq377dJgzoQuykkAKMjZvK/img.png)
@ModelAttribute Controller에서 커맨드객체를 활용했을 때 view에서 객체명.변수명 형식을 이용해 값을 가져올 수 있다. 이 때 @ModelAttribute 어노테이션을 활용해 view에서 활용할 객체명을 변경할 수 있다. Controller // 변경 전 public String memJoin(Member member) // 변경 후 public String memJoin(@ModelAttribute("mem") Member member) memJoinOk.jsp memJoinOk ID : ${mem.memId} PW : ${mem.memPw} Mail : ${mem.memMail} Phone : ${mem.memPhone1} ${mem.memPhone2} ${mem.memPhone..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cR2Q2R/btryYmWyS9N/dbozG2yaO6jkHPpFTGnEiK/img.png)
화면으로 부터 사용자가 입력한 정보를 Controller가 넘겨받을 때 보통 HttpServletRequest 객체를 이용하거나 @RequestParam어노테이션을 이용한다. 이후 model 객체를 활용해 view단으로 데이터를 전송해 사용자에게 보여진다. model 객체와 HttpServletRequest 객체를 활용해 입력한 정보를 받고 해당 정보를 view로 보내는 과정을 진행해보고, 그로인해 발생할 수 있는 단점(단순반복코드)을 스프링에서 제공하는 커맨드 객체를 이용해 보완해보겠다. 커맨드 객체 HttpServletRequest를 통해 들어온 RequestParameter들을 setter를 이용해 객체에 정의되어있는 변수에 값이 바인딩 되는 객체를 의미한다. 커맨드 객체를 활용하기 위해선 Http..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/ltvVl/btryf1skcxD/LqHSdZQSqykSOEW1mUWoqk/img.png)
모델1 웹 프로그래밍 구축 방법 중 Model 1 방식을 이용하게 되면 브라우저(사용자)로 부터 받은 요청을 하나의 파일에서 모두 처리하게 되는데, JSP, service, dao 등 여러 기능이 하나의 파일에 담기게 되면 큰 프로젝트의 경우 구축이후 유지보수 측면에서 어려움을 겪는다. 모델2 이러한 단점을 보완하기 위해 나온 방식이 Model 2 방식이다. Model 1방식과 달리 각각의 기능을 모듈화 하였으며 MVC 패턴을 웹 개발에 도입한 구조이다. 각각 모듈의 기능을 간단히 정리하면 다음과 같다. Controller : 사용자 요청(URL, 매개변수)를 이용해 Service객체를 호출 및 DB로 부터 받은 Model을 View로 넘겨준다. Service : POJO(순수자바)객체로 구성되며 비즈니..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/lgjsh/btrwAZ3WBlT/XyRLivX9SAejzOpqtmpKn1/img.png)
지금까지 스프링컨테이너와 Bean객체를 생성할 때 xml 파일을 생성한 뒤 Bean태그를 이용했다. xml 파일을 설정하지 않고도, 어노테이션을 활용해 Java파일에서 스프링컨테이너를 생성하는 과정을 알아본다. xml에서 Java클래스 변환을 알아보면서 다음과 같은 주제를 다룬다. xml > Java로 변환 DB 모델의 property List와 Map 타입의 변수 스프링컨테이너 생성 ■ 스프링 설정파일.xml > Java로 변환 MemberConfig.java @Configuration public class MemberConfig { } xml파일 대신 컨테이너로 사용할 Java 클래스에 @Configuration 어노테이션을 선언해줌으로, MemberConfig 클래스는 스프링설정파일로써, 스프링 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/biJxMH/btrwl7Bvz9m/wocFG2RYGdCIV4hJVB3Vp0/img.png)
Bean객체를 이용하기 위해선 스프링 컨테이너를 생성해준 뒤 getBean을 통해 객체를 가져오는 과정을 거쳐야한다. 이 때 컨테이너와 Bean이 생성되는 시점과 소멸되는 시점에 특정한 작업을 필요한 경우 생명주기를 알아야한다. 컨테이너 생성 = Bean객체 생성 GenericXmlApplicationContext ctx = new GenericXmlApplicationContext("classpath:appCtx.xml"); ctx.close(); 스프링 컨테이너가 초기화되면 xml상에 작성된 Bean 객체 또한 같이 생성된다. 이후 ctx.close()를 이용해 스프링 컨테이너를 메모리에서 해제하게 되면 생성된 Bean 객체 또한 같이 해제되므로, Bean객체의 생성과 소멸시점은 스프링컨테이너와 동일..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/7RoNB/btrwgElpr0X/oLCKU5tEGZ1h6AWvAkz90k/img.png)
의존성 주입을 위해 사용되는 어노테이션은 @Autowired, @Resource, @Inject 가 있는데 이 중 비슷한 @Autowired와 @Inject를 비교해보자. @Autowired vs @Inject @Autowired private InjectionBean injectionBean; @Inject private InjectionBean injectionBean; 두 어노테이션 모두 컨테이너상에서 데이터 타입이 같은 Bean을 찾아 의존성을 주입해주는 방식으로 주입 방식과 역할은 동일하며 2가지 차이점을 제외하면 이 둘은 거의 동일하다고 볼 수 있다. 차이점 1. 스프링 컨테이너에 Bean 객체가 존재하지 않을 경우 예외처리 방식 이럴 경우는 거의 없겠지만, 프로그래머가 컨테이너에 Bean을 ..
- Total
- Today
- Yesterday
- HeidiSQL
- 데이터베이스
- 스프링
- CSS
- CS
- 프로그래머스
- C++
- 국비교육
- C
- 오라클
- 백준
- 스프링부트
- Java
- 개발용어
- JSP
- 네트워크
- 부트스트랩
- 환경설정
- svn
- JVM
- Thymeleaf
- 오류
- Open API
- 이클립스
- SQL
- 인턴
- 넥사크로
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |