• Spring MVC 구성 주요 컴포턴트
* DispatcherServlet
- Front Controller : 모든 요청을 최초로 받아들이는 역할
* Controller (요청을 실제로 처리하는 역할)
- 클라이언트 요청 처리를 수행하는 Controller
* HandlerMapping (어떤 요청 컨트롤러가 처리할지 결정)
- 클라이언트의 요청을 처리한 Controller를 찾는 작업 처리
* View
- 응답하는 로직을 처리
* ViewReslover
- 응답할 View를 찾는 작업을 처리
* ModelAndView (응답에 사용할 데이터와 페이지 정보 집합)
- 응답할 View와 View에게 전달할 값을 저장하는 용도의 객체
• 요청 처리 순서
①DispatcherServlet이 요청을 수신
• 단일 Front controller servlet
• 요청을 수신하여 처리를 다른 컴포넌트에 위임
• 어느 컨트롤러에 요청을 전송할지 결정
②DispatcherServlet은 HandlerMapping에 어느 컨트롤러를 사용할 것인지 문의
③DispatcherServlet은 요청을 컨트롤러에게 전송하고 컨트롤러는 요청을 처리한 후 결과 리턴
• 비즈니스 로직 수행 후 결과 정보(Model)가 생성되어 JSP와 같은 뷰에서 사용됨
④ModelAndView를 생성하여 DispatcherServlet에 리턴
⑤ModelAndView 정보를 바탕으로 바탕으로ViewResolver 에게 View를 요청
⑥View는 결과정보를 사용하여 화면을 표현함.
1. DispatcherServlet을 web.xml에 서블릿으로 등록
2. DispatcherServlet이 사용할 스프링 설정파일을 생성
3. 2의 설정파일에 HandlerMapping, Controller, ViewResolver들을 빈(bean) 객체로 등록
pom.xml
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.1.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.1.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.1.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.1.6.RELEASE</version>
</dependency>
</dependencies>
dispatcher-servlet.xml
<bean id="handlerMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
<bean class="controller.WhatTimeController" name="/whatTime.do"></bean>
WhatTimeController.java
package controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
public class WhatTimeController implements Controller{
@Override
public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {
// TODO Auto-generated method stub
String inTime = new java.text.SimpleDateFormat("HHmmss").format(new java.util.Date());
ModelAndView mav = new ModelAndView();
mav.addObject("msg",inTime);
mav.setViewName("jsp/whatTime.jsp");
return mav;
}
}
web.xml
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
jsp/whatTime.jsp
<body>
${msg }<br>
현재시간이라능~~
</body>
ViewResolver
1. 디펜더시 등록
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.1.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.1.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.1.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.1.6.RELEASE</version>
</dependency>
</dependencies>
2. web.xml
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
3.dispatcher-servlet.xml
4.controller/MyController.java
@Controller //@Component의 아들로써 빈으로 등록하게함
//Request를 받아 처리하는 컨트롤러로써 인식
public class MyController {
@RequestMapping("hello.do")
public ModelAndView hello(){
ModelAndView mav = new ModelAndView();
mav.addObject("msg","Hello World");
mav.setViewName("hello");
return mav;
}
@RequestMapping("whatTime.do")
public ModelAndView whatTime(){
ModelAndView mav = new ModelAndView();
mav.addObject("time",new Date());
mav.setViewName("whatTime");
return mav;
}
}
5. hello.jsp // whatTime.jsp 작성
<body>
${msg }
</body>
<body>
${time }
</body>
' IOT 기반 응용 SW과정 > Web Programing' 카테고리의 다른 글
Day64 (0) | 2016.06.20 |
---|---|
Day63 Spring-member (0) | 2016.06.17 |
Day61 (0) | 2016.06.15 |
Day60 Spring-AOP (0) | 2016.06.14 |
Day59 Spring-AOP (0) | 2016.06.13 |