
스프링 MVC - 실용적인 방식 MVC 프레임워크 만들기에서 v3은 ModelView를 개발자가 직접 생성해서 반환했기 때문에, 불편했던 기억이 날 것이다. 물론 v4를 만들면서 실용적으로 개선한 기억도 날 것이다. 스프링 MVC는 개발자가 편리하게 개발할 수 있도록 수 많은 편의 기능을 제공한다. 실무에서는 지금부터 설명하는 방식을 주로 사용한다. SpringMemberControllerV3 * v3 * Model 도입 * ViewName 직접 반환 * @RequestParam 사용 * @RequestMapping -> @GetMapping, @PostMapping @Controller // Spring 컨테이너에 컨트롤러 빈으로 등록됨 @RequestMapping("/springmvc/v3/membe..

@RequestMapping 을 잘 보면 클래스 단위가 아니라 메서드 단위에 적용된 것을 확인할 수 있다. 따라서 컨트롤러 클래스를 유연하게 하나로 통합할 수 있다. SpringMemberControllerV2 * 클래스 단위 -> 메서드 단위 * @RequestMapping 클래스 레벨과 메서드 레벨 조합 @Controller // Spring 컨테이너에 컨트롤러 빈으로 등록됨 @RequestMapping("/springmvc/v2/members") // 클래스 레벨의 URL 매핑 public class SpringMemberControllerV2 { private MemberRepository memberRepository = MemberRepository.getInstance(); @RequestM..

스프링 MVC - 시작하기 스프링이 제공하는 컨트롤러는 애노테이션 기반으로 동작해서, 매우 유연하고 실용적이다. 과거에는 자바 언어에 애노테이션이 없기도 했고, 스프링도 처음부터 이런 유연한 컨트롤러를 제공한 것은 아니다. @RequestMapping 스프링은 애노테이션을 활용한 매우 유연하고, 실용적인 컨트롤러를 만들었는데 이것이 바로 @RequestMapping 애노테이션을 사용하는 컨트롤러이다. 다들 한번쯤 사용해보았을 것이다. 여담이지만 과거에는 스프링 프레임워크가 MVC 부분이 약해서 스프링을 사용하더라도 MVC 웹 기술은 스트럿츠 같은 다른 프레임워크를 사용했었다. 그런데 @RequestMapping 기반의 애노테이션 컨트롤러가 등장하면서, MVC 부분도 스프링의 완승으로 끝이 났다. @Req..

뷰 리졸버 OldController - 뷰 조회할 수 있도록 변경 @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"); } } 일단 이렇게만 하면 404 오류페이지 나옴. 현재 뷰를 찾지 못하기 때문에. application.pr..

1. 과거 - 지금은 전혀 사용하지 않지만, 스프링이 주로 사용했던 스프링이 제공하는 간단한 컨트롤러로 핸들러 매핑과 어댑터를 이해해보기 Controller 인터페이스 과거 버전 스프링 컨트롤러 스프링도 처음에는 이런 딱딱한 형식의 컨트롤러를 제공했음. OldController @Component("/springmvc/old-controller") public class OldController implements Controller { @Override public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { System.out.println("OldControl..

직접 만든 MVC 프레임워크와 스프링 MVC를 비교해보자 직접 만든 MVC 프레임워크 구조 SpringMVC 구조 직접 만든 프레임워크 => 스프링 MVC 비교 DispatcherServlet 구조 살펴보기 DispacherServlet 서블릿 등록 그림 요청 흐름 DispacherServlet.doDispatch() protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception { HttpServletRequest processedRequest = request; HandlerExecutionChain mappedHandler = null; ModelAndView mv = null; /..