본문 바로가기

Programming/과거포스팅

스프링 두번째 xml 설정

자 이번에 두번째 강의 입니다.

총3개의 xml을 지난시간에 봤는데요

시작지점의 web.xml 

그리고 root-context.xml과 servlet-context.xml입니다.

이 세녀석만 자유롭게 다룰줄 알면 스프링은 그렇게 어렵지 않아요~~

우선 xml의 상단에 있는 스키마에 대해선 생략을 할께요 ㅋㅋ 제가 잘 모르기도 하지만 xml의 태그들을 미리 정의해둔 정도라고만 설명 해 드리죠..

너무나 샘플에 설명이 잘 되어 있어서 더 설명을 해드릴 필요가 있을가 싶네요..
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

    <!-- The definition of the Root Spring Container shared by all Servlets and Filters -->
    <context-param>  -- 이녀석은 루트 컨텍스트로 모든 서블릿과 필터들이 공유한다고 합니다. 바로 root-context.xml을 정의해 두었네요
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring/root-context.xml</param-value>
    </context-param>
    
    <!-- Creates the Spring Container shared by all Servlets and Filters -->
    <listener> -- 이녀석은 말그대로 listenerd이구요 루트 컨텍스터에 정의되어 있는 것들을 모든 서블릿과 필터가 공유할 수 있게 해준다네요.
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!-- Processes application requests -->
    <servlet> -- 요놈은 말그대로 서블릿이다. 서블릿이 뭐냐고 질문을 한다면.. 음 jsp를 좀더 공부하고 오길..
        <servlet-name>appServlet</servlet-name> --서블릿중 DispatcherServlet이구요. 이 서블릿이 공유할수 있는 것들은 servlet-context에 정의를 할겁니다.
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> -- 요 서블릿이 앞단에서 요청정보를 핸들링해주는 서블입니다.
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
        
    <servlet-mapping> -- appServlet에 대한 url-pattern을 정의해 두었네요~
        <servlet-name>appServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

</web-app>
자 이렇게 web.xml을 살펴보았는데요
별로 어렵지 않죠? ㅎㅎ 

이제 root-context.xml과 servlet-context.xml이 남았는데요 root-context.xml은 비어 있으니 우선 넘기구요

servlet-context.xml로 가보도록 하겠습니다. 

아 여기서 한가지더 말씀드릴 부분이 있는데요

이 강의에서는 프로젝트를 진행하면서 컨트롤러와 서비스를 등록할때 어노테이션@을 사용할 것입니다. 

어노테이션을 사용하든지 빈을 등록해서 사용하든지 각각 장단점이 있는데 저는 어노테이션을 선호합니다.

만약 협업을 할때 빈으로 설정을 하게 되면 xml에 빈을 추가할때마다 서로 소스를 맞추는 작업을 해야합니다. svn을 이용한다 하더라도

번거롭기는 마찬가지지요. 그래서저는 충돌이 나는 것을 좋아하지 않기 때문에 어노테이션으로 각자 상대방의 작업에 영향을 주지 않고 

프로젝트를 진행하는걸 좋아합니다.
<?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">

    <!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->
    
    <!-- Enables the Spring MVC @Controller programming model -->
    <annotation-driven />  -- 어노테이션을 사용하겠다고 선언하는겁니다.

    <!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
    <resources mapping="/resources/**" location="/resources/" />  -- html의 리소스 디렉토리를 정의해 둔거구요~

    <!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
    <beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> -- ViewResolver구요~ jsp와 name을 매핑시켜주는 녀석이죠
        <beans:property name="prefix" value="/WEB-INF/views/" />
        <beans:property name="suffix" value=".jsp" />
    </beans:bean>
    
    <context:component-scan base-package="com.spring.web" /> 요놈이 핵심! com.spring.web 하위 모든 패키지에 있는 파일의 어노테이션을 스캔해서 빈으로 등록
    하겠다는 말이지요~
  
    
</beans:beans>

자 이렇게

간단하게 xml 설정에 대해서 알아봤습니다.
뭐 지금은 이해가 잘안되시면 넘어가셔도 됩니다^^

아차 1강때 문제가 있었죠~ 인코딩이 맞지 않았던 부분~ 

인코딩을 맞추기 위해 톰캣uriencoding을 설정할 수도 있지만 스프링에서 인코딩 처리하는 방법을 사용해보겠습니다.
<!-- ENCODING  -->
    <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>
web.xml의 적당한 보기 좋은 위치에 작성해 주시면 됩니다. 

이것을 설정해주면 모든 request와 response에 대한 인코딩 처리를 하게 되는겁니다.

자 이것을 web.xml에 추가하고 실행해 보겠습니다.


 자 이렇게 한글처리가 잘 된것을 확인 할 수 있네요~ 오늘 강의는 여기서 끝내도록 하겠습니다.

다음강의는 mybatis의 설정과 db에서 데이터를 가져오는 것을 해보도록 할께요~

'Programming > 과거포스팅' 카테고리의 다른 글

디자인패턴  (0) 2014.03.15
자바 정규식과 일치하는 문자열 추출  (0) 2013.11.05
스프링 첫번째 hello  (2) 2013.11.03
유용한 사이트 버튼 css  (0) 2013.10.30
기타용어  (0) 2013.10.20