Controller
- 사용자 요청(URL 기반)에 해당하는 Controller의 특정 메서드가 호출됨
- Controller는 요청의 파라미터가 있음녀 처리하고
- 비지니스 처리를 위해서 Service 컴포넌트를 주입받아서 실행
- 실행 결과를 전달받아(화면 정보와 함께) DispatcherServlet에게 반환
- 사용되는 어노테이션
- @Controller
- @RequestMapping
- @Autowired
@RequestMapping
- 클래스 레벨 매핑, 메서드 레벨 매핑으로 구분
- 클래스 레벨에서 엮여진 URL과 메서드 레벨에서의 URL이 결합되어 실제 메서드가 호줄됨
- 요청 방식 선택
@Controller
@RequestMapping("/bbs")
public class BbsController {
@RequestMapping("/list)
public String lisf() {
retrun "bbs/list";
}
// /bbs에서 write & POST 방식으로 요청 됐을 때 호출되는 메서드
@RequestMapping(value="/write", method=RequestMethod.POST)
public string doWrite() {
return "bbs/write_ok";
}
}
- Spring4.3 이후에는 위 요청방식을 따로 적어주는 @RequestMapping 대신 @GetMapping, @PostMapping, @PutMapping, @DeleteMapping을 사용할 수 있다.
@RequestMapping :: @PathVariable
ModelAndView를 사용한 모델/뷰 처리
- 응답으로 View(JSP)와 Model(Domain 객체, VO)을 함께 처리할 때 사용
- 서비스로부터 받아온 데이터를 뷰로 전달해주는 역할
Redirect & Forward
Redirect(Forward) 처리
- 컨트롤러에서 클라이언트 요청을 처리한 후에 다른 페이지로 리다이렉트 하고 싶을 때
- return "redirect:/bbs/list";
- cf) forword 이용 : return "forward:/bbs/list";
- 경로 부분이 "/"로 시작하면 웹 어플리케이션 내의 절대경로로 리다이렉트
- "/"로 시작하지 않으면 @RequestMapping 어노테이션의 경로를 기준으로 상대경로로 리다이렉트
- 아래 코드의 경우 "redirect:/header/main"과 동일한 URL로 리다이렉트
@RequestMapping("/header/createuth")
public String createAuth() {
return "redirect:main";
}
- "redirect:"뒤에 완전한 URL을 적으면, 해당 URL로 리다이렉트 된다.
@RequestMapping("/header/createuth")
public String createAuth() {
return "redirect:http://localhost8080/TotalTest";
}