본문 바로가기

spring/Web

개념 잡기

URL에 의한 요청을 


스프링의 controller가 처리해 주고 


controller는 어떤 뷰(jsp 같은)를 보여줄지에 처리해준다.


아래의 예제를 보면 설정 파일 2개가 있다.


아래의 예제로 스프링의 컨트롤러와 뷰의 처리 개념을 잡아보자


========================================================================================================================================================

web.xml


<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">

  <display-name>s_mvc1</display-name>

  <servlet>

  <servlet-name>test</servlet-name> <!-- test-servlet.xml 파일을 찾게된다. -->

  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

  </servlet>

  <servlet-mapping>

  <servlet-name>test</servlet-name>

  <url-pattern>*.do</url-pattern>

  </servlet-mapping>

</web-app>


========================================================================================================================================================

test-servlet.xml


<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

<!-- HandlerMapping : BeanNameUrlHandlerMapping (생략가능)-->

<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>

<!-- Controller : ParameterizableViewController (URL 요청에 의한 어떤 View를 보여줄지 맵핑 설정을 해줌 -->

  <!-- URL에 http://아이피:포트번호/<프로젝트이름>/index.do 라는 요청에 있을 경우 아래 InternalResourceViewResolver bean 태그에 설정값에 의해 list1.jsp가 view됨 -->

  <bean name="/index.do" class="org.springframework.web.servlet.mvc.ParameterizableViewController">

<property name="viewName" value="list1"/> <!-- WebContent 폴더 바로 아래의 list1.jsp 을찾음 -->

</bean>

<bean name="/good/sijak.do" class="org.springframework.web.servlet.mvc.ParameterizableViewController">

<property name="viewName" value="view/list2"/> <!-- WebContent 폴더 바로 view 폴더 아래 list1.jsp 을찾음 -->

</bean>

<!-- ViewResolver : InternalResourceViewResolver (controller의 view 요청을 처리할 방법을 설정-->

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<property name="prefix" value="/"/> <!-- controller 가 반환하는 값 앞에 붙는 문자 -->

<property name="suffix" value=".jsp"/> <!-- controller 가 반환하는 값 뒤에 붙는 문자 -->

</bean>


</beans>

========================================================================================================================================================

뷰파일들 생략..



========================================================================================================================================================

========================================================================================================================================================

url 요청 들어옴(브라우저에 해당 주소를 치고 엔터)


web.xml이 url 요청에 대해서 servlet-mapping 설정을 보고 servlet 설정파일을 찾아 들어가면서 url을 넘겨줌


servlet 설정파일에서 요청된 url과 일치하는 


controller 클래스 (controller를 구현하거나 abstractController를 상속받은)


혹은 


requestmapping 어노테이션으로 mapping된 메소드를 실행하여 모델을 처리하고 view를 리턴해줌