SPRING/SPRING MVC(9)
-
Spring MVC - 요청 매핑, @RequestMapping, @PathVariable
@RequestMapping("/hello") /hello URI로 요청이오면 해당 메서드가 호출이 된다. /hello/ 처럼 뒤에 / 가 붙어 있어도, 스프링은 /hello와 같다고 허용하여 메서드를 매핑시켜준다. 클래스 레벨에 선언하여 공통 URI부분을 매핑해서 메서드 레벨에 선언된 URI의 중복된 부분을 제거해준다. method 속성에 HTTP 메서드를 지정해주지 않으면 어떤 메서드가 와도 호출되는 매핑이 된다. 최근에는 method 속성을 사용하지 않고 @GetMapping, @PostMapping, @PutMapping, @PatchMapping, @DeleteMapping 으로 간편하게 사용할 수 있다. @PathVariable 경로변수. 요청 URI 자체가 식별자가 되는 방식. 예) 요청 U..
2021.04.06 -
Spring MVC - Front Controller의 핸들러매핑과 핸들러어댑터
Front Controller의 역할 프론트 컨트롤러의 가장 대표적인 역할을 뽑자면, 요청 URI에 따라 알맞는 컨트롤러를 선택하여 호출하는 것이다. 이 역할의 핵심이 핸들러 매핑과 핸들러 어댑터다. 핸들러란? 여기서 핸들러란 무엇일까? 다양하게 해석될 수 있는데, 여기서는 그냥 이벤트가 발생했을 때, 해당 이벤트에 맞는 동작을 수행하는자 라고 생각하면 된다. 즉, 해당 URI에 맞는 동작을 수행하는 자 = 컨트롤러 라고 생각하면된다. 컨트롤러는 구체적고 핸들러가 그 상위 개념으로 더 큰 개념이라고 생각하면 된다. Spring MVC 구조 핸들러 매핑이란? Dispatcher Servlet이 요청 URI가 어떤 핸들러와 매핑되는지 찾는 과정이다. 핸들러 매핑은 결국 요청과 알맞는 핸들러 객체를 Dispa..
2021.04.01 -
Spring MVC의 핵심! FrontController 패턴과 DispatcherServlet
DispatcherServlet이란? Spring MVC에서 프론트 컨트롤러 패턴을 구현한 Servlet이다. Front Controller란? Front Controller가 없었던 시절에는 REST API를 구현할 때, 한 개의 URL에 한 개의 서블릿이 매핑되는 구조였다. 이 구조는 매 서블릿을 구현할때마다 중복되는 소스가 발생하였다. 예를 들어 서블릿에서 처리한 결과를 JSP에 넘기기 위해, RequestDispatcher에 forward를 해주는 로직은 매번 필요한 작업이었다. 또한, 컨트롤러의 테스트 코드를 작성할 때, 서블릿에 의존되어 순수한 자바 코드로 단위 테스트가 불가능했다. 하지만 프론트 컨트롤러라는 서블릿이 컨트롤러 앞에 수문장 역할을 하면서 컨트롤러의 공통영역을 처리해주고 컨트롤러..
2021.04.01