• 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="handlerMappingclass="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

<context:component-scan base-package="controller"></context:component-scan>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="jsp/"></property>
<property name="suffix" value=".jsp"></property>
</bean>


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

+ Recent posts