08강 @Controller
- 목차
- 내용
- 컨트롤러 컴포넌트
- @RequestMapping 과 @PathVariable
- 학습 목표
- 컨트롤러의 개념을 이해하고 컨트롤을 작성해봅니다.
- 웹 요청방식에 대해 대응하는 코드를 작성하고, HTTP URL 경로를 통한
변수를 처리할 수 있습니다.
- 웹 요청방식에 대해 대응하는 코드를 작성하고, HTTP URL 경로를 통한
- 컨트롤러의 개념을 이해하고 컨트롤을 작성해봅니다.
- 내용
- DispatcherServlet
- 1. 웹 어플리케이션 최전방에서 사용자 요청을 압수.
- 2. URL을 기준으로 요청을 처리할 Controller를 찾음.
- 3. 해당 Controller를 호출 및 실행
- Controller
- 1. 사용자 요청(URL 기반)에 해당하는 Conroller의 특정 메소드가 호출됨.
- 2. Controller는 요청의 파라미터가 있으면 처리하고
- 3. 비즈니스 처리를 위해서 서비스 컴포넌트를 주입 받아서 실행함.
- 4. 실행된 결과를 전달받아 View정보와 함께(리턴url 등) DispatcherServlet에게 반환합니다.
- 사용되는 Annotation
- @Controller (Class Level)
- @RequestMapping (Method Level)
- GET/POST/DELETE/PUT 요청 방식이 있음.
- Spring 4.3 이후 각 요청 방식에 따른 어노테이션이 있음.
- @Autowired (멤버변수에 Service 컴포넌트 주입)
- @RequestMapping :: @PathVariable
- 요청 URL을 파라미터로 사용(경로변수)
- ex) http://cafe.daum.net/sq99/2hq/68443
- 요청 URL : /bbs/{articleId}
- 파라미터로 처리 : @PathVariable("articleId") String articleId
- 요청 URL을 파라미터로 사용(경로변수)
- ModelAndView 를 사용한 모델/뷰 처리
- 응답으로 View(JSP)와 Model(Domain Object, VO)을 함께 처리할 때 사용.
- 서비스로부터 받아온 데이터를 뷰로 전달해주는 역할.
- ModelAndView 객체를 생성하여, ViewName/Data 를 담아 return.
- view.setViewName("bbs/list"); --> 리졸버를 통해 bbs/list 페이지로 반환되도록 처리
- view.addObject("articleList", list); --> key/value 로 바인딩하여 데이터를 반환.
- jsp 페이지에서는 전달 받은 데이터를 ${key값} 이라는 표현을 통해 사용 가능함.
- string 일 경우 그대로 표현되고,
- 객체일 경우 객체네임.프로퍼티네임을 통해 사용 가능.
- Redirect & Forward
- 리다이렉트(포워드) 처리
- 컨트롤러에서 클라이언트의 요청을 처리한 후에 다른 페이지로 리다이렉트 하고 싶을 때
- return "redirect:/bbs/list";
- cf) forward : return "forward:/bbs/list";.
- 경로 부분이 "/"로 시작하면 웹 어플리케이션 내에서의 절대 경로로 리다이렉트
- "/"로 시작하지 않으면 @RequestMapping 애노테이션의 경로를 기준으로
상대 경로로 리다이렉트!
- 컨트롤러에서 클라이언트의 요청을 처리한 후에 다른 페이지로 리다이렉트 하고 싶을 때
- 리다이렉트(포워드) 처리
- 실습 내용!
- BbsController 작성 & BbsServier 사용.
- HTTP 파라미터 사용.
- 기타. Postman HTTP client 사용하여 테스트.
'Room 102. Back-end > Spring' 카테고리의 다른 글
[실전 개발자를 위한 Spring Framework ] 강의 - RESTful API (0) | 2020.05.31 |
---|---|
[실전 개발자를 위한 Spring Framework ] 강의 - HTTP 파라미터 처리 (0) | 2020.05.30 |
[실전 개발자를 위한 Spring Framework ] 강의 - MVC 패턴 (0) | 2020.05.28 |
[실전 개발자를 위한 Spring Framework ] 강의 - 계층 구조 (0) | 2020.05.25 |
[실전 개발자를 위한 Spring Framework ] 강의 - DI 개념 (0) | 2020.05.25 |