본문 바로가기

Spring/Spring MVC27

SpringMVC - 시작하기(@RequestMapping) 이제 본격적으로 SpringMVC을 사용하여 코드로 적용해보자. @RequestMapping 스프링은 애노테이션을 활용한 매우 유연하고, 실용적인 컨트롤러를 만들었다. 그것이 바로 @RequestMapping 애노테이션이다. @RequestMapping은 아래의 어댑터와 매핑의 앞글자를 따서 만든 이름인데, 이것이 바로 스프링에서 주로 사용하는 애노테이션 기반의 컨트롤러를 지원하는 핸들러 매핑과 어댑터이다. RequestMappingHandlerMapping RequestMappingHandlerAdapter 그렇다면, 이제 해당 애노테이션 기반의 컨트롤러 코드를 적용해보자. 프레임워크 만들기와 SpringMVC의 이전 포스팅들의 코드들에 @RequestMapping 기반의 스프링 MVC 컨트롤러를 변경.. 2023. 7. 19.
SpringMVC - ViewResolver 이번 포스팅에서는 스프링 MVC의 뷰 리졸버에 대해서 알아보자. 우선 이전 SpringMVC - 핸들러 매핑과 핸들러 어댑터 편에서 사용한, OldController를 아래와 같이 코드를 추가해주자. OldController import org.springframework.stereotype.Component; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.Controller; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @Component("/springmvc.. 2023. 7. 19.
SpringMVC - 핸들러 매핑과 핸들러 어댑터 이번 포스팅에서는 SpringMVC에서 구현되어있는 핸들러 매핑과 핸들러 어댑터가 어떤 것들이 있는지 알아보자. 지금은 전혀 사용하지 않지만, 과거에 주로 사용했던 스프링이 제공하는 간단한 컨트롤러로 핸들러 매핑과 어댑터를 이해해보자. Controller 인터페이스 - 과거 버전 스프링 컨트롤러 org.springframework.web.servlet.mvc.Controller public interface Controller { ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception; } 과거에는 스프링도 위와 같은 딱딱한 형식의 컨트롤러를 제공했다. 참고로, 위 Control.. 2023. 7. 19.
Spring MVC의 구조 스프링 MVC의 구조 스프링 MVC의 구조는 위의 그림과 같이 동작한다. 핸들러 조회 : 핸들러 매핑을 통해 요청 URL와 여러가지 정보를 기반으로 매핑된 핸들러(컨트롤러)를 조회한다. 핸들러 어댑터 조회 : 핸들러를 실행할 수 있는 핸들러 어댑터를 조회한다. 핸들러 어댑터 실행 : 핸들러 어댑터를 실행한다. 핸들러 실행 : 핸들러 어댑터가 실제 핸들러를 실행한다. ModelAndView 반환 : 핸들러 어댑터는 핸들러가 반환하는 정보를 ModelAndView로 변환해서 반환한다. viewResolver 호출 : 뷰 리졸버를 찾고 실행한다. JSP의 경우 : InternalResourceViewResolver가 자동 등록되고, 사용된다. View 반환 : 뷰 리졸버는 뷰의 논리 이름을 물리 이름으로 바꾸.. 2023. 7. 19.
MVC 프레임워크 만들기 (6) - Adapter Pattern-2 MVC 프레임워크 만들기 (5)에 이어지는 내용입니다. 앞전 포스팅에서는 (3)의 버젼을 지원하는 어댑터를 구현하였다. 이번에는 (4)의 버젼을 지원하는 어댑터를 구현하여서, 정말 유연한 컨트롤러처리가 가능하게 만들어 보자. 해당 코드의 동작 구조는 (5)와 동일하다. 바로 코드를 살펴보자. FrontControllerServletV5 import hello.servlet.web.frontcontroller.ModelView; import hello.servlet.web.frontcontroller.MyView; import hello.servlet.web.frontcontroller.v3.controller.MemberFormControllerV3; import hello.servlet.web.fron.. 2023. 7. 19.
MVC 프레임워크 만들기 (5) - Adapter Pattern-1 MVC 프레임워크 만들기 1~4에 이어지는 포스팅 입니다. 이전까지의 학습에서는 직접 프레임워크를 구현하고, 리팩토링 과정을 통해서 발전 시켜왔다. 하지만, 앞의 코드들을 잘 살펴보면 개발자는 MVC 프레임워크 만들기 (3) 의 방식으로 개발을 하고 싶고, 다른 개발자는 MVC 프레임워크 만들기 (4)의 방식으로 개발을 하고 싶다고 가정해보자. 이런 경우에는 각각의 버젼에 맞는 프레임 워크를 사용할 수 밖에 없을 것이다. 왜냐하면, 우리가 개발한 프론트 컨트롤러는 한가지 방식의 컨트롤러 인터페이스만 이용할 수 있기 때문이다. 이를 해결하기 위해서, 어댑퍼 패턴을 이용한다면 이러한 제약사항을 해결할 수 있다. 이번 포스팅에서는 앞의 코드들을 좀 더 유연하게 개발할 수 있도록 Adapter Pattern을 .. 2023. 7. 19.