ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • xml 로 셋팅
    웹페이지 제작을 위한 스프링공부 2020. 5. 1. 17:40

    순서1.

    DispatherServlet을 spring framework에서 제공하는 DispatherServlet로 바꿔주어여함

     

    server폴더의 web.xml파일에 가면 다음과 같은 내용이 있다.

     <!-- The mapping for the default servlet -->
        <servlet-mapping>
            <servlet-name>default</servlet-name><!-- default 서블릿을 사용하겟다 -->
            <url-pattern>/</url-pattern><!-- /와 같은 요청이 오면 -->
        </servlet-mapping>
    
        <!-- The mappings for the JSP servlet -->
        <servlet-mapping>
            <servlet-name>jsp</servlet-name><!-- jsp라고 되어져있는 서블릿을 사용하겠다 -->
            <url-pattern>*.jsp</url-pattern><!-- 확장자명이 jsp로 되있는 요청이 들어오면 -->
            <url-pattern>*.jspx</url-pattern>
        </servlet-mapping>

     

    위에서 언급한 default 서블릿의 내용이다

        <servlet>
            <servlet-name>default</servlet-name>
            <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
            <init-param>
                <param-name>debug</param-name>
                <param-value>0</param-value>
            </init-param>
            <init-param>
                <param-name>listings</param-name>
                <param-value>false</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
        </servlet>

    아파치 톰켓에서 요청이 발생하면 최초로 그 요청을 받아들여서 그 요청을 분석하는 servlet이 이 서블릿이다

    이 default 서블릿은 수직된 요청정보를 분석하여 개발자가 만든 controller로 그 흐름을 이동시켜주는 역활을 한다

     

    이 서블릿을 spring mvc에서 제공하는 dispathcerservlet으로 변경하는 역활을 가장 먼저 수행해야한다.

     

    spring mvc와 관련된 파일들은 webContent에 담겨져있다.

    webContent에 있는 파일들은 웹 브라우저가 파일이름과 경로를 알면 직접다 주소를 치고 들어가 요청을 할 수 있다.

    하지만 webContent의 web-inf에 만들어주면 웹 브라우저가 요청을 할 수 없다.

    따라서 mvc와 관련된 파일들은 webContent의 web-inf폴더에 만들어 주면된다.

     

     서블릿을 spring mvc에서 제공하는 dispathcerservlet으로 변경하는 역활을 위해 webContent의 web-inf폴더에 web.xml파일을 만듬

     

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="4.0"
    	xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee  
    	                    http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd">
    
    
    	<!-- 현재 웹 애플리케이션에서 받아들이는 모든 요청에 대해 appServlet이라는 이름으로 정의되어 있는 서블릿을 사용하겠다. -->
    	<servlet-mapping>
    		<servlet-name>appServlet</servlet-name>
    		<url-pattern>/</url-pattern>
    	</servlet-mapping>
    	<!-- 요청 정보를 분석해서 컨트롤러를 선택하는 서블릿을 지정한다. -->
    	<servlet>
    		<servlet-name>appServlet</servlet-name>
    		<!-- Spring MVC에서 제공하고 있는 기본 서블릿을 지정한다. -->
    		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    		<!-- Spring MVC 설정을 위한 xml 파일을 지정한다. -->
    		<init-param>
    			<param-name>contextConfigLocation</param-name>
    			<param-value>/WEB-INF/config/servlet-context.xml</param-value>
    		</init-param>
    		<load-on-startup>1</load-on-startup>
    	</servlet>

    다음과 같이 작성함으로써 현재 웹 앱에서 받아들이는 모든 요청을 appservlet 이라는 이름의 서블릿으로 설정하였고

    appservlet은 spring mvc에서 제공하는 서블릿으로 지정하였다

     

    결국 이제 현재 앱은 모든 요청을 spring mvc에서 제공하는 서블릿으로 받아들이겠다는 이야기이다.

     

    *키워드*

    context

    어떠한 작업을 하기위해서 필요한 정보가 담겨져있는 곳

     

     

    servlet-context파일 , root-context파일 생성

    다음으로 위에서 지정한 appservlet의 설정을 하기위한 servlet-context(서블릿 관련 설정)이라는 xml파일을 생성하고

    프로젝트 수행시 사용할 bean들을 정의하는 파일인 root-context파일을 생성합니다

     

    root-context파일 생성

     

     

    root-context파일과 servlet-context파일을 사용하기위해 web.xml에 등록

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="4.0"
    	xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee  
    	                    http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd">
    
    
    	<!-- 현재 웹 애플리케이션에서 받아들이는 모든 요청에 대해 appServlet이라는 이름으로 정의되어 있는 서블릿을 사용하겠다. -->
    	<servlet-mapping>
    		<servlet-name>appServlet</servlet-name>
    		<url-pattern>/</url-pattern>
    	</servlet-mapping>
    	<!-- 요청 정보를 분석해서 컨트롤러를 선택하는 서블릿을 지정한다. -->
    	<servlet>
    		<servlet-name>appServlet</servlet-name>
    		<!-- Spring MVC에서 제공하고 있는 기본 서블릿을 지정한다. -->
    		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    		<!-- Spring MVC 설정을 위한 xml 파일을 지정한다. -->
    		<init-param>
    			<param-name>contextConfigLocation</param-name>
    			<param-value>/WEB-INF/config/servlet-context.xml</param-value>
    		</init-param>
    		<load-on-startup>1</load-on-startup>
    	</servlet>
    	
    	
    	<!-- Bean을 정의할 xml 파일을 지정한다. -->
    	<context-param>
    		<param-name>contextConfigLocation</param-name>
    		<param-value>/WEB-INF/config/root-context.xml</param-value>
    	</context-param>
    
    	<!-- 사용자의 요청정보를 로딩해줌 (servlet-context와 root-context를 로딩시켜줌) -->
    	<listener>
    		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    	</listener>
    	
    	
    </web-app>
    
    
    
    

     

    한글이 깨지지 않도록 utf-8으로 인코딩 설정 추가

    <!-- 파라미터 인코딩 필터 설정 -->
    	<filter>
    		<filter-name>encodingFilter</filter-name>
    		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    		
    		<init-param>
    			<param-name>encoding</param-name>
    			<param-value>UTF-8</param-value>
    		</init-param>
    		
    		<init-param>
    			<param-name>forceEncoding</param-name>
    			<param-value>true</param-value>
    		</init-param>
    
    	<!-- 필터 매핑 -->
    	</filter>
    	<filter-mapping>
    		<filter-name>encodingFilter</filter-name>
    		<url-pattern>/*</url-pattern>
    	</filter-mapping>

     

    servlet-context 파일 

    <?xml version="1.0" encoding="UTF-8"?>
    <beans:beans xmlns="http://www.springframework.org/schema/mvc"
    			 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    			 xmlns:beans="http://www.springframework.org/schema/beans"
    			 xmlns:context="http://www.springframework.org/schema/context"
    			 xsi:schemaLocation="http://www.springframework.org/schema/mvc
    			 					 http://www.springframework.org/schema/mvc/spring-mvc.xsd
    			 					 http://www.springframework.org/schema/beans
    			 					 http://www.springframework.org/schema/beans/spring-beans.xsd
    			 					 http://www.springframework.org/schema/context
    			 					 http://www.springframework.org/schema/context/spring-context.xsd">
    			 					 
    	<!-- 스캔한 패지키 내부의 클래스 중 Controller 어노테이션을 가지고 있는 클래스들을 Controller로 로딩하도록 한다 -->
    	<annotation-driven/>
    	
    	<!-- 스캔할 bean들이 모여있는 패키지를 지정한다. -->
    	<context:component-scan base-package="kr.co.softcampus.controller"/>
    	
    	<!-- Controller의 메서드에서 반환하는 문자열 앞 뒤에 붙힐 경로 정보를 셋팅한다. -->
    	<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    		<beans:property name="prefix" value="/WEB-INF/views/"/>
    		<beans:property name="suffix" value=".jsp"/>
    	</beans:bean>
    	
    	<!-- 정적파일(이미지, 사운드, 동영상, JS, CSS 등등) 경로 셋팅 -->
    	<resources mapping="/**" location="/resources/"/>
    	
    			 
    </beans:beans>
    

     

    현재 bean을 사용하지 않기때문에 root-context는 namespace 외 따로 작성하지 않았다. 

    <?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">
    	   					   
    </beans>

    '웹페이지 제작을 위한 스프링공부' 카테고리의 다른 글

    객체로 파라미터 주입받기  (0) 2020.05.02
    파라미터 추출하기  (0) 2020.05.02
    url mapping  (0) 2020.05.02
    java로 셋팅하기  (0) 2020.05.01
    java,xml 공통 셋팅  (0) 2020.05.01
Designed by Tistory.