티스토리 뷰

언어/SPRING

[SPRING] MVC 공부

Sime 2016. 11. 16. 09:35


Spring MVC


Spring MVC 구성 주요 컴포넌트


DispatcherServlet 

- Front Controller

모든 요청을 최초로 받아들이는 역할


Controller

- 클라이언트 요청 처리를 수행하는 Controller

요청을 실제로 처리하는 역할


HandlerMapping

- 클라이언트의 요청을 처리할 Controller를 찾는 작업 처리

어떤 요청을 어떤컨트롤러가 처리할지를 결정


View

- 응답하는 로직을 처리


ViewReslover

-응답할 View를 찾는 작업을 처리


ModelAndView

- 응답할 View와 View에게 전달할 값을 저장하는 용도의 객체

응답에 사용할 데이터와 페이지 정보의 집합




MVC 흐름




요청 처리 순서

①DispatcherServlet이 요청을 수신

 - 단일 Front controller servlet

 - 요청을 수신하여 처리를 다른 컴포넌트에 위임

 - 어느 컨트롤러에 요청을 전송할지 결정

②DispatcherServlet은 HandlerMapping에 어느 컨트롤러를 사용할 것인지 문의

③DispatcherServlet은 요청을 컨트롤러에게 전송하고 컨트롤러는 요청을 처리한 후 결과 리턴

 - 비즈니스 로직 수행 후 결과 정보(Model)가 생성되어JSP와 같은 뷰에서 사용됨

④ModelAndView를 생성하여 DispatcherServlet에 리턴

⑤ModelAndView 정보를 바탕으로 바탕으로 ViewResolver 에게 View를 요청 

⑥View는 결과정보를 사용하여 화면을 표현함.



Spring MVC 구현

web.xml에 DispacherServlet 등록 및 Spring설정파일 등록

Spring 설정파일에 HandlerMapping 설정

컨트롤러 구현 및 Spring 설정파일에 등록

컨트롤러와 JSP의 연결 위해 View Resolver Spring설정 파일에 등록

JSP 코드 작성(View)



프로젝트 작성


1. Dynamic Web Project -> maven 셋팅


2. pom.xml 설정 - dependency(Spring-core, context, web, webmvc)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<dependencies>
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>4.1.6.RELEASE</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.1.6.RELEASE</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-web -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>4.1.6.RELEASE</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>4.1.6.RELEASE</version>
        </dependency>
    </dependencies>
cs


3. WebContent/WEB-INF/web.xml
1
2
3
4
5
6
7
8
9
10
 <servlet>
  <servlet-name>dispatcher</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
  </servlet>
  
  <servlet-mapping>
  <servlet-name>dispatcher</servlet-name>
  <url-pattern>*.do</url-pattern>
  </servlet-mapping>
 
cs



0123456789101112131415




viewResolver 사용하기


dispatcher-servlet.xml에 추가

1
2
3
4
5
    <bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="jsp/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>
cs

controller에서 경로명과 확장자를 안적어도 된다!!


<예제>

ModelAndView mav = new ModelAndView();

mav.addObject("msg", "hihihihihi");

mav.setViewName("hello");



루트 컨테이너 등록하기


01234567891011121314151617181920


중간 빠진부분들은 전에 쓴 글 참고 dao 만들기랑 mapper 만들기 

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함