HTTP 메서드 매핑 PathVariable(경로 변수)URL 경로에 동일한 패턴의 가변 값을 받아서 처리하기 위할 때 사용/** * PathVariable 사용 * 변수명이 같으면 생략 가능 * @PathVariable("userId") String userId -> @PathVariable String userId */@GetMapping("/mapping/{userId}")public String mappingPath(@PathVariable("userId") String data) { log.info("mappingPath userId={}", data); return "ok";} 특정 조건 매핑파라미터헤더미디어 타입 조건 매핑 - HTTP 요청 Content-Type, consume미디어 타입..
Spring/MVC
FrontController vs 스프링 MVCFrontController => DispatcherServlethandlerMappingMap => HandlerMappingMyHandlerAdatper => HandlerMappingModelView => ModelAndViewviewResolver => ViewResolverMyView => View DispatcherServlet부모 클래스에서 HttpServlet을 상속 받아서 사용, 서블릿으로 동작DispatcherServlet => FrameworkServlet => HttpServletBean => HttpServlet스프링 부트는 DispatcherServlet을 서블릿으로 자동으로 등록모든 경로(urlPatterns="/")에 대해서 매..
V1 구조public class MemberControllerV1 implements ControllerV1 { @Override public void process(HttpServletRequest request, HttpServletResponseresponse) throws ServletException, IOException { String viewPath = "/WEB-INF/views/new-form.jsp"; RequestDispatcher dispatcher = request.getRequestDispatcher(viewPath); dispatcher.forward(request, response); }}@WebServlet(name = "frontControllerServlet..
개요너무 많은 역할하나의 서블릿이나 JSP만으로 비즈니스 로직과 뷰 렌더링까지 모두 처리하는 문제점너무 많은 역할 담당유지보수 어려워짐 변경의 라이프 사이클내부와 외부의 라이프 사이클이 다름UI 수정과 비즈니스 로직 수정은 각각 다르게 발생할 가능성이 매우 높음대부분 서로 영향을 주지 않는다분리되어 있기 때문에 함께 관리하는 것은 좋지 않다 기능 특화뷰 테플릿은 화면을 렌더링 하는데 최적화 되어 있기 때문에 분리하여 담당하는 것이 효과적이다 Model View Controller컨트롤러HTTP 요청을 받아서 파라미터를 검증하고, 비즈니스 로직을 실행한다. 그리고 뷰에 전달할 결과 데이터를 조회해서 모델에 담는다모델뷰에 출력할 데이터를 담아둔다.뷰가 필요한 데이터를 모두 모델에 담아서 전달해주기에 뷰는 비..
서블릿 등록@WebServlet 서블릿 어노테이션name : 서블릿 이름urlPatterns : URL 매핑@WebServlet(name = "hello", urlPatterns = "/hello")public class Hello extend HttpServlet {} HTTP 요청 메시지 로그 propertieslogging.level.org.apache.coyote.http11=debug WAS의 요청 응답 구조 HttpServletRequest개발자가 HTTP 요청 메시지를 편리하게 사용할 수 있도록 HTTP 요청 메시지를 파싱한 것을 담는 객체HTTP 요청 메시지를 편리하게 조회 할 수 있게 해줌 임시 저장소 기능저장 : request.setAttribute(name, value)조회 : re..