ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Spring] 게시판 만들기(8) - 디렉토리 구조 및 설정 파일 변경(web.xml, *-context.xml)
    Spring/4.3.x - 게시판 만들기 2018. 11. 30. 11:45
    반응형

    Spring MVC Project 디렉토리 구조

     

    src/main/java 

     - 자바 파일 디렉토리

    src/main/resources 

     - 리소스 파일(컴파일되지 않는 비실행 파일) 디렉토리 (mapper, sql 등) 

    src/test/java :

     - 테스트 자바 파일 디렉토리

    src/test/resources 

     - 테스트 리소스 파일 디렉토리

    Maven Dependencie

     - Maven을 통해 다운받은 라이브러리 파일 (mapper, sql) 

    src/main/webapp/resources 

     - 리소스 파일(컴파일되지 않는 비실행 파일) 디렉토리 (js, css, image 등) 

    WEB-INF 디렉토리는 외부에서 직접 접근이 차단되어 컨트롤러를 통하여 접근이 가능합니다.

    src/main/webapp/WEB-INF/classe

     - 클래스 파일 디렉토리

    src/main/webapp/WEB-INF/spring 

     - 스프링 환경 설정 파일 디렉토리 (root-context.xml, servlet-context.xml)

    src/main/webapp/WEB-INF/spring/appServlet/servlet-context.xml

     - Dispatcher 서블릿과 관련된 view 지원 및 bean을 설정하는 파일입니다.(Controller 등)

    src/main/webapp/WEB-INF/spring/root-context.xml

     - 공통 bean을 설정하는 파일입니다.(Service, Repository, DB, log 등)

    src/main/webapp/WEB-INF/views

     - 뷰 파일 디렉토리 (html, jsp)

    src/main/webapp/WEB-INF/web.xml

     - 설정을 위한 배포 설명자(Deployment Descriptor입니다) 파일입니다. 이 파일은 WAS(Web Application Server)가 최초 구동될 때 즉 톰켓이 최초 구동될 때 web.xml을 읽고 그에 해당하는 설정을 구성합니다. 즉 각종 설정을 위한 설정 파일이라고 할 수 있습니다.

    pom.xml

     - maven에서 참조하는 설정 파일

     

    설정 파일 변경(web.xml, *-context.xml) 

    1. index.jsp 추가하기

    1_1. web.xml에 welcome-file-list을 추가하세요.

    1
    2
    3
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
    cs

     

    1_2. webapp폴더 밑에 index.jsp 파일을 생성하세요.

    <welcome-file-list> 태그는 루트 경로로 접근했을 경우에 호출되는 페이지를 설정할 수 있습니다.

     

    1_3. localhost:9090/board 호출 시에 추가한 index.jsp가 호출되는지 확인하세요.

     

    2. web.xml에 servlet, servlet-mapping 태그 변경

    클라이언트로부터 어떠한 요청이 오면 Tomcat 같은 ‘ServletContainer’ 가 요청을 받는데, 이때 제일 앞에서 서버로 들어오는 모든 요청을 처리하는 프론트 컨트롤러를 Spring 에서 정의하였고, 이를 DispatcherServlet 이라고 합니다. DispatcherServlet 설정은 web.xml 에서 다음과 같이 할 수 있습니다.

     

    2_1. 하나 이상의 xml 설정 파일을 사용하기 위해서 servlet-context.xml 을 *-context.xml 로 변경하세요.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <servlet>
        <servlet-name>appServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/spring/appServlet/*-context.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
            
    <servlet-mapping>
        <servlet-name>appServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
     
    cs

     

    2_2.SampleController.java를 생성하세요.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    package com.spring.board;
     
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
     
    @Controller
    @RequestMapping(value = "/sample")
    public class SampleController {
     
        @RequestMapping(value = "/getSample")
        public void getSample(HttpServletRequest request, HttpServletResponse reponse) throws Exception {        
            System.out.println("getSample");
        }
    }
     
    cs

     

     

     

    2_3. localhost:9090/board/sample/getSample 호출 시에 console에 값이 출력되는지 확인하세요.

     

    3. UTF-8 설정 추가

    스프링은 웹 요청과 응답에 대한 인코딩 처리를 위해 CharacterEncodingFilter 를 제공합니다. 이를 통해, 인코딩 처리를 하려면 web.xml 에서 CharacterEncodingFilter 를 필터로 등록해두고 <init-param>의 encoding 속성을 통해 인코딩 방식을 설정할 수 있습니다. 또한 <filter-mapping>을 통해 어느 요청 경로에 대해 필터를 적용할 것 인지에 대한 범위 설정도 가능합니다.

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <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>
    cs

     

     

    소스 코드는 Github Repository - https://github.com/tychejin1218/board_v1 (branch : section08) 를 참조하세요.
    Github에서 프로젝트 가져오기 - https://tychejin.tistory.com/33

     

    반응형

    댓글

Designed by Tistory.