Hyunebee
스프링 MVC - 스프링 MVC(2) 본문
옛날 방식의 MVC 구현(1)
@Component("/springmvc/old-controller")
public class OldController implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
System.out.println("OldController.handleRequest");
return new ModelAndView("new-form");
}
}
Controller를 구현해준다.
이때 Controller(interface)는 @Controller와는 다른것 이다.
이 컨트롤러가 호출될려면 handler와 adapter가 필요하다.
HandlerMapping (우선 순위 별)
0 = RequestMappingHandlerMapping : 애노테이션 기반의 컨트롤러인 @RequestMapping에서 사용
1 = BeanNameUrlHandlerMapping : 스프링 빈의 이름으로 핸들러를 찾는다
HandlerAdapter
0 = RequestMappingHandlerAdapter : 애노테이션 기반의 컨트롤러인 @RequestMapping에서 사용
1 = HttpRequestHandlerAdapter : HttpRequestHandler 처리
2 = SimpleControllerHandlerAdapter : Controller 인터페이스(애노테이션X, 과거에 사용) 처리
ViewResolver
application.properties에 등록 - ServletApplication에 직접 등록하는 방법도 있음
@RequestMapping
요청 정보를 매핑한다. 해당 URL이 호출되면 이 메서드가 호출된다. 애노테이션을 기반으로 동작하기 때문에, 메서드의 이름은 임의로 지으면 된다.
new-form
@RequestMapping("/springmvc/v1/members/new-form")
public ModelAndView process(){
return new ModelAndView("new-form");
}
컨트롤러 통합
@RequestMapping("/springmvc/v2/members")
public class SpringMemberControllerV2 {
private final MemberRepository memberRepository = MemberRepository.getInstance();
@RequestMapping("/new-form")
public ModelAndView newForm(){
return new ModelAndView("new-form");
}
공통된 부분은 묶어 처리할 수 있다.
더욱 발전된 처리
@RequestMapping(method = RequestMethod.GET)
public String Members(Model model){
List<Member> memberList = memberRepository.findAll();
model.addAttribute("members", memberList);
return "members";
}
method를 설정해 GET method가 아니면 요청을 못하게 한다. 모두 모델을 파라미터로 받음으로 interface Model로 받아서 처리할 수 있다.
@RequestMapping ->@GetMapping, @PostMapping
@PostMapping("/members/save")
public String save(@RequestParam("username") String username,
@RequestParam("age")int age,
Model model){
더 간략하게 GetMapping, PostMapping으로 사용할 수있다.
HttpServltRequest는 @RequestParm으로 대체할 수 있다.
'Spring > MVC' 카테고리의 다른 글
스프링 MVC - 기본 기능 (0) | 2022.01.17 |
---|---|
스프링 MVC - 로깅 (0) | 2022.01.17 |
스프링 MVC - 스프링 MVC (0) | 2022.01.15 |
스프링MVC - frontController(4) (0) | 2022.01.14 |
스프링MVC - frontController(3) (0) | 2022.01.14 |