Spring MVC pattern - 개념 정리 /파일별 역할

Spring MVC pattern - 개념 정리 /파일별 역할

개념정리

jsp-mvc패턴

index.jsp -> Servlet -> factory -> Servlet -> Command -> Servlet -> nextPage

spring-mvc패턴

index.jsp -> DispatcherServlet -> HandlerMapping

-> DispatcherServlet -> Controller

(-> DistpartcherServlet -> ViewResolver)

-> DispatcherServlet -> View

DispatcherServlet 과 HandlerMapping 은 spring에서 이미 구현되어 있는 서블릿이다.

1. DispatcherServlet

1) org.springframework.web.servlet.DispatcherServlet

2. HandlerMapping(org.springframework.web.servlet.handler)

1) BeanNameUrlHandlerMapping : default(알아서 만들어준다)

2) SimpleUrlHandlerMapping

controller만 내가 직접 생성하고 Controller interface 상속받기.

3. Controller(org.springframework.web.servlet.mvc) : 실제구현하는 곳

1) Controller(interface)

- ModelAndView객체를 반환하는 handlerRequest 메소드를 상속받아 구현해야 한다.

2) AbstractController

3) AbstractCommandController

- ModelAndView객체를 반환하는 handleRequest 메서드를 상속받아 구현한다.

4) SimpleFormController

student-servlet.xml내부에 구현.

4. ViewResolver(org.springframework.web.servlet.view) //길잡이 역할.

1) InternalResourceViewResolver : default(알아서 만들어준다)

2) ResourceBundleViewResolver

3) velocity.VelocityViewResolver : 외부프레임워크를 통해 결과를 본다

5. View(org.springframework.web.servlet.view) : 실제 보여지는 객체

1) InternalResourceView : default(알아서 만들어준다)

2) JstlView

3) VelocityView

Spring으로 MVC를 구현하면

xml파일 두개(web.xml, student-servlet.xml)와

Controller, CommandController 자바 파일을 만드면 된다.

나머지는 spring에서 이미 구현해 놓은 기능을 사용하기만 하면 된다.

파일별 역할

web.xml

DispatcherServlet 을 특정 url 과 매핑시킨다 .

를 통해 한국어를 사용할 수 있게 한다 .

-servlet.xml

dataSource 객체를 등록하고 오라클과 연결한다 .

class="org.springframework.jdbc.datasource.DriverManagerDataSource">

jdbcTemplate 객체를 등록하고 dataSource 를 참조한다 .

DAO 객체를 등록하고 jdbcTemplate 를 참조한다 .

기능에 따라 다양한 Controller 들을 등록 ( url 과 매핑 ) 하고 DAO 를 참조한다 .

class="student.controller.InsertStudentController">

DTO

프로그램에 필요한 자료형을 등록한다 .

DAO

-servlet.xml 에서 등록한 파일들 중 최조 구현

따라서 jdbcTemplate import + setJdbcTemplate 구현 (DTO 와 비슷함 ) 구현 이유는 처음 생성된 싱글톤 객체를 참조해서 사용해되기 때문

RowMapper 를 중첩 클래스로 구현 , select, find 메서드에서 사용됨

Controller

jsp_mvc 에서 command 가 담당하던 기능 , 프로그램의 실제적인 명령 처리를 담당한다 . ex) insert 의 경우 데이터를 담은 dto 를 DAOImpl 에게 넘겨줌 !

Controller 을 implements 한다 .

setDAO 를 구현한다 .

private StudentDAO studentDAO;

public void setStudentDAO(StudentDAO studentDAO) {

this.studentDAO = studentDAO;}

ModelAndView 를 반환하는 handleRequest(req, resp) 를 override 하고

handleRequest 내부에서 모든 것을 처리한다.

handleRequest 내부에서 ModelAndView mav 객체를 생성하고

mav.setViewName("/message"); //RequestDispatcher 객체를 통해 구현한 기능을 ModelAndView 하나도 request와 RequestDispatcher모두 구현!

mav.addObject("msg", msg); // addObject는 setAttribute

mav.addObject("url", url);

from http://gritman-coding-stainedglazz.tistory.com/45 by ccl(A) rewrite - 2021-10-02 13:27:59