on
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