관리 메뉴

개발 블로그

FirstSpringBoard#5-1] web.xml 설정과 presentation 레이어 용 설정 파일 생성. 본문

Spring Framework 개발 일지/Spring으로 게시판 만들기

FirstSpringBoard#5-1] web.xml 설정과 presentation 레이어 용 설정 파일 생성.

anomie7 2017.08.29 11:04

 웹 애플리케이션의 영역을 크게 두가지로 나눌 수 있습니다.

 비즈니스 레이어(business layer)와 프레젠테이션 레이어(presentation layer)입니다.

 비즈니스 레이어는 비즈니스 로직과 DB와 연동하는 부분입니다.

 프레젠테이션 레이어는 사용자에게 보이는 부분과 사용자의 요청을 처리해주는 부분으로 나뉩니다.

 우리는 이제까지 비즈니스 레이어를 구현한 거에요.

 다음 시간부터는 프레젠테이션 레이어를 구현할게요.



출처: http://anomie7.tistory.com/24 [아노미7]

저번 시간에는 기본적인 비즈니스 로직을 모두 구현했어요.

 웹 애플리케이션의 영역은 크게 두가지로 나뉘어요.

 비즈니스 레이어(business layer)와 프레젠테이션 레이어(presentation layer)입니다.

 비즈니스 레이어는 비즈니스 로직과 DB와 연동을 처리하는 부분입니다.

 프레젠테이션 레이어는 사용자에게 보이는 부분과 사용자의 요청을 처리해주는 부분으로 나뉩니다.

 MVC모델에서 View와 Controller가 프레젠테이션 레이어입니다.

 이번 시간에는 프레젠테이션 레이어를 구현할게요.

 웹 애플리케이션의 영역을 크게 두가지로 나눌 수 있습니다.

 비즈니스 레이어(business layer)와 프레젠테이션 레이어(presentation layer)입니다.

 비즈니스 레이어는 비즈니스 로직과 DB와 연동하는 부분입니다.

 프레젠테이션 레이어는 사용자에게 보이는 부분과 사용자의 요청을 처리해주는 부분으로 나뉩니다.

 우리는 이제까지 비즈니스 레이어를 구현한 거에요.

 다음 시간부터는 프레젠테이션 레이어를 구현할게요.



출처: http://anomie7.tistory.com/24 [아노미7]

 웹 애플리케이션의 영역을 크게 두가지로 나눌 수 있습니다.

 비즈니스 레이어(business layer)와 프레젠테이션 레이어(presentation layer)입니다.

 비즈니스 레이어는 비즈니스 로직과 DB와 연동하는 부분입니다.

 프레젠테이션 레이어는 사용자에게 보이는 부분과 사용자의 요청을 처리해주는 부분으로 나뉩니다.

 우리는 이제까지 비즈니스 레이어를 구현한 거에요.

 다음 시간부터는 프레젠테이션 레이어를 구현할게요.



출처: http://anomie7.tistory.com/24 [아노미7]

 웹 애플리케이션의 영역을 크게 두가지로 나눌 수 있습니다.

 비즈니스 레이어(business layer)와 프레젠테이션 레이어(presentation layer)입니다.

 비즈니스 레이어는 비즈니스 로직과 DB와 연동하는 부분입니다.

 프레젠테이션 레이어는 사용자에게 보이는 부분과 사용자의 요청을 처리해주는 부분으로 나뉩니다.

 우리는 이제까지 비즈니스 레이어를 구현한 거에요.

 다음 시간부터는 프레젠테이션 레이어를 구현할게요.



출처: http://anomie7.tistory.com/24 [아노미7]


프레젠테이션 레이어 구성을 위해서 필요한 설정이 있어요.

설정 파일은 두개로 web.xml(서블릿 컨테이너 설정 파일)과 presentation-context.xml(스프링 빈 설정파일)입니다.

자바로 만드는 모든 웹애플리케이션은 Java EE 구현체 또는 서블릿 컨테이너에서 돌아갑니다.

왜냐하면 자바로 만드는 웹애플리케이션은 서블릿 규약에 따라서 처리되기 때문이죠.

자바 웹애플리케이션을 위해 서블릿 규약에 따라서 만든 서버를 WAS(Web Appliation Server) 또는 서블릿 컨테이너라고 합니다.

그리고 이 서블릿 컨테이너를 처음 생성할 때 참고하는 메타데이터를 저장하고 있는 파일이 web.xml이에요.

서블릿 컨테이너는 web.xml의 설정에 따라서 생성됩니다.

우선 src/main/webapp/WEB-INF에서 web.xml 파일을 확인해볼게요.


STS에서 프로젝트를 구성해줄 때 web.xml도 알아서 설정을 해줍니다. 아래와 같아요.

우리는 아래 그림처럼 web.xml을 설정할 건데요.
기능에 따라서 크게 3부분으로 묶어봤어요. 그림을 보면서 대략적인 설정 파일 구성에 대해서 이해해주세요.


1. ContextLoaderListener는 스프링 컨테이너를 생성합니다. 우리가 구현했던 비즈니스 레이어에 대한 스프링 컨테이너(루트 컨테이너)를 생성해줍니다.

servlet은 규약에 따라서 메소드가 정해져있는데. 생성시에 처음 실행되는 메소드가 init()에요. 이 메소드에서 루트 컨테이너를 생성합니다.

그 이유는 프레젠테이션 레이어에 해당하는 스프링 컨테이너와의 연동을 위해서입니다.


2. 우리가 JSP나 servlet을 이용해서 웹프로그래밍을 할 때 request.setCharacterEncoding("UTF-8")

response.setContentType("text/html charset=utf-8"); 이런식으로 각 파일마다 인코딩을 설정해줬었어요.

스프링 프레임워크에서는 인코딩을 쉽게 적용할 수 있는 CharacterEncodingFilter를 지원합니다.


3. 스프링 MVC에서 등록하는 유일한 Servlet이 DispatcherServlet입니다. <servlet-mapper>에서 설정한 url에 대한 모든 요청/응답을 DispatcherServlet이 해줍니다.


이 DispatcherServlet에 대한 설정파일을 등록해주는 부분이 <init-param>입니다.

이 엘리먼트에 입력한 설정파일이 프레젠테이션 레이어의 스프링 컨테이너 설정 파일입니다.

DispatcherServlet이 처리를 하는데 필요한 객체들을 등록합니다.

대표적으로 요청에 대한 Controller를 찾아서 연결해주는 Handler Mapper

Controller가 리턴해주는 view 파일의 파일명을 받아서 일치하는 view 파일을 찾아서 연결해주는 view Resolver가 있습니다.


<servlet-mapping> 엘리먼트에서는 해당 서블릿이 처리한 url을 지정하는데. 보통 /로 지정해서 웹애플리케이션에 대한 모든 요청을 디스패처서블릿이 처리하도록 합니다.

우리는 *.do로 설정했어요.


아래는 소스코드입니다. 똑같이 구성해주세요.


src/main/webapp/WEB-INF 아래에 config 파일을 만들고 spring bean configuation File을 생성해주세요.


네임스페이스에 beans와 context를 추가해줍니다.


내용은 별거 없어요. 아래와 같아요.


<context:component-scan> 엘리먼트를 이용해 xml 파일에 <bean>으로 빈 등록하지 않고 @Component, @Repository @Service @Controller와 같은 애노테이션을 이용해 간단하게 빈 등록을 할 수 있어요.

그리고 @Controller는 @RequestMapping 애노테이션으로 컨트롤러의 메소드와 url을 연결할 수 있습니다.(Handler Mapper의 기능)

presentation-layer.xml에는 Handler Mapper가 등록되어 있지 않은데.

이 경우에는 DefaultAnnotationHandlerMapping이 기본적으로 설정되어 있습니다.


이번 프레젠테이션 레이어 구성을 위한 설정 파일을 모두 생성하였습니다.

오늘 구현한 기능은 Spring MVC가 제공하는 기능도 있었어요.

DispatcherServlet이나 MVC에 대해 궁금하신 분들은 책이나 구글링을 통해서 쉽게 습득하실 수 있으실거에요.

다음 시간에는 전체 게시물 목록을 보여주는 기능 구현을 하겠습니다.


0 Comments
댓글쓰기 폼