[Spring] Spring MVC (04/13)

박세윤·2023년 4월 13일
0

Spring

목록 보기
3/11
post-thumbnail

📌 Spring MVC


✅ Back 복습 + Spring MVC에 적용

  • 강의 꼭 다시 돌려 볼 것



✅ Spring Web MVC

  • Servlet API를 기반으로 구축된 웹 프레임워크

  • 정식 명칭은 Spring Web MVC이지만, Spring MVC로 주로 알려져있다.

  • Spring Framework가 제공하는 DI, AOP 뿐 아니라, WEB 개발을 위한 기능을 제공

  • DispatcherServlet(FrontController)를 중심으로 디자인 되었으며, View Resolver, Handler, Mapping, Controller와 같은 객체와 함께 요청을 처리하도록 구성되어 있다.


  • 다른 프레임워크와 마찬가지로 Front Controller Pattern으로 구성됨.

  • 중심이 되는 DispatcherServlet(front controller)은 요청 처리를 위한 기능을 제공



✅ Spring MVC

  • 컨테이너 구성

  • Web과 직접적으로 관련되있는 것들을 Servlet WebApplicationContext에서 작성

-위에서 작성안하고 남은 것(웹과 직접적으로 관련 없는?) (DAO 등)을 Root WebApplicationContext에 작성한다.



✅ Spring MVC 구성요소

  • DispatcherServlet -> 클라이언트 요청 처리 (요청 및 처리 결과 전달)

  • HandlerMapping -> 요청을 어떤 Controller가 처리할 지 결정

  • Controller -> 요청에 따라 수행할 메서드를 선언하고, 요청 처리를 위한 로직 수행 (비즈니스 로직 호출 (Service 호출))

    • 호출한 service가 dao나 repository 등을 호출하고 ...
  • ModelAndView(바구니) -> 요청처리를 하기 위해서 필요한 혹은 그 결과를 저장하기 위한 객체

  • ViewResolver -> Controller에 선언된 view이름을 기반으로 결과를 반환할 View 결정

  • View -> 응답화면 생성



✅ Spring MVC - 요청 처리 흐름

  1. 클라이언트 요청이 들어오면 DispatcherServlet이 받는다.

  2. HandlerMapping이 어떤 Controller가 요청을 처리할 지 결정

  3. DispatcherServlet은 Controller에 요청을 전달

  4. Controller는 요청을 처리

  5. 결과(요청 처리를 위한 data, 결과를 보여줄 view의 이름)를 ModelAndView에 담아 반환

  6. ViewResolver에 의해서 실제 결과를 처리할 View를 결정하고 반환

  7. 결과를 처리할 View에 ModelAndView 전달

  8. DispatcherServlet은 View가 만들어낸 결과를 응답



✅ Spring Web MVC 구성하기

  • DispatcherServlet 생성

  • web.xml (pjt/src/main/webapp/WEB-INF/web.xml)


  • root WebApplicationContext
    • 여러 Servlet에서 공유해야 하는 DAO, Service 등의 bean을 포함


  • servlet-context.xml(/WEB-INF/spring/appServlet/servlet-context.xml)

  • MVC 구성요소 bean 등록 (handler mapping, view resolver, controller)


  • Controller class (main/java/com/ssafy/pjt02/HomeController.java)


  • View (WEB-INF / views / home.jsp)


✅ Spring Web MVC - Controller

  • @RequestMapping

  • URL을 클래스 또는 특정 핸들러(메서드)에 매핑

  • 일반적으로 클래스에 작성하는 @RequestMapping은 요청 경로, 혹은 요청 패턴에 매칭

  • 메서드 Annotation은 요청 방식 (GET, POST) 등으로 범위를 좁혀준다.


  • Controller Handler Method argument 1

  • Controller Handler Method argument 2


  • Controller Handler Method argument EX 1

  • Controller Handler Method argument EX 2

  • Controller Handler Method argument EX 3

  • Controller Handler Method argument EX 4

  • Controller Handler Method argument EX 5


  • Controller Handler return value


  • Controller Handler return value - view 이름 지정

  • ModelAndView, String


  • Controller Handler return value - view 이름 암시적 지정

  • 암시적으로 view가 결정되는 경우 (RequestToViewNameTranslator에 의해 결정됨)

    • Map, Model일 경우
    • return type void이면서 HttpResponse, HttpServletResponse를 인자로 받지 않음.


  • Controller Handler return value - redirect

  • redirect를 위해서 사용

  • view 이름에 "redirect:" 접두어를 붙임


  • Controller Handler return value - @ResponseBody

  • View 렌더링이 아니라, 데이터(XML, JSON 등)를 응답하기 위해서 사용

  • @RestController와 함게 사용됨. (추후 학습)



🔎 참고

  • Spring Web MVC - Board


  1. Web.xml 설정

  1. app-context.xml

  1. root-context.xml

DAO, Service Scan

  1. BoardController.xml

  1. BoardServiceImp.java, BoardDaoImp.java



profile
개발 공부!

0개의 댓글