본문 바로가기
⚙️Backend/Spring

[Spring] MVC Project part 3

by Bㅐ추 2020. 5. 30.
728x90
반응형

2020/05/30 - [🌎Web Application/Spring] - [Spring] MVC Project part 1

2020/05/30 - [🌎Web Application/Spring] - [Spring] MVC Project part 2

 

 

1. web.xml (DispatcherServlet)

web.xml을 서블릿 배포 기술자, 영어로는 DD (Deploment Descriptor)라고 한다. 

web.xml은 WAS (Web Application Server: 여기서는 Tomcat)이 최초 기동될 때, WEB-INF 디렉토리에 존재하는 web.xml을 읽고, 그에 해당하는 웹 애플리케이션 설정을 구성한다. 

 

다시 말해, 각종 설정을 위한 설정파일이라고 이야기 할 수 있다.

web.xml에는 다른 설정파일을 읽어들이는 부분과 DispatcherServlet을 매핑하는 부분이 자동으로 만들어진다.

해당 web.xml코드를 다음과 같이 수정한다.

<!-- Context parameter ( 전역 파라미터 ) -->	
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/spring/appServlet/applicationContext.xml</param-value>
	</context-param>

*톰캣을 실행하기 전에 개발자는 톰캣의 설정파일인 web.xml 파일에 <context-param>으로 전역 파라미터를 설정한다.

파라미터의 이름은 contextConfigLocation이고 어떤 객체들을 미리 만들어 놓을지가 작성된 설정파일의 경로(applicationContext.xml)를 값으로 할당해 놓습니다.

즉, 스프링이 실행시 applicationContext.xml의 설정 정보를 읽어들인다.

 

	<servlet-mapping>
		<servlet-name>appServlet</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>

다음 설정의 의미는 다음과 같다.

*.do로 오는 모든 요청을 DispatcherServlet이 받겠다는 의미이다.

즉, 앞단에서 모든 요청을 스프링이 받아들인 후에 URL에 대응되는 컨트롤러를 찾아가 특정 메서드를 실행하게 한다.

컨트롤러를 어떻게 찾아가는지, 어떤 메서드를 실행하는 지는 어노테이션으로 명시한다.

 

그리고 아래의 코드를 추가한다.

	<!-- 설정된 값을 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>

이 코드의 의미는 /*로 오는 모든 요청들을 DispatcherServlet로 전달되기 이 전에 Encoding을 해주는 기능이다.

전에는 서블리에서 매번 request를 인코딩해주었어야 했는데, 이제  해당 코드를 추가함으로써 그럴 필요가 없다.

 

2. root-context.xml -> applicationContext.xml

root-context.xml 파일을 applicationContext.xml 로 이름을 바꾸고

경로를 다음과 같이 위치하게 한다.(servlet-context.xml와 같은 레벨로 둔다.)

해당 applicationContext.xml 은 mvc설정과 관련된 여러 처리를 담당하는 설정 파일로 DAO, VO 그리고 service 등과 같은 파일을 어떻게 사용할 것인가 빈(객체)들을 관리하는 문서이다.

 

3. servlet-context.xml (Handler Mapping)

	<!-- ( 1 )  -->
	<annotation-driven />

	<resources mapping="/resources/**" location="/resources/" />

	<!-- ( 2 ) -->
	<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>
	
	<!-- ( 3 ) -->
	<context:component-scan base-package="com.mvc.upgrade" />

( 1 )  여기에 추가된 <mvc:annotation-driven>은 우리가 Annotation을 활용할 때 기본적인 Default 방식을 설정해주는 것 이다.

( 2 )  서블릿 설정으로 prefix(접두사)와 suffix(접미사)를 붙여주는 역할을 담당한다.  즉, 우리가 일일이 전체경로와 .jsp를 붙이지 않아도 되도록 도와준다.

( 3 ) 일반적으로 스프링에서 클래스를 만들고 *의존성 주입은 @Autowired를 통해 (클래스 생성을) 처리한다. 그런데 @Autowired를 하기 위해서는 application-context.xml에 해당클래스 모두를 bean으로 등록해두어야 되는데, 이러한 과정이 번거로우므로<context:component-scan>을 이용하여 처리하게 해주는 것이다. base-pacakge = "com.mvc.upgrade"라고 나와있는데, 이것은 패키지가 com.mvc.upgrade 인  모두를 등록하겠다는 것입니다.

 

 

 

728x90
반응형

'⚙️Backend > Spring' 카테고리의 다른 글

[Spring] MVC Project part 5  (6) 2020.05.30
[Spring] MVC Project part 4  (0) 2020.05.30
[Spring] MVC Project part 2  (0) 2020.05.30
[Spring] MVC Project part 1  (0) 2020.05.30
[Spring] AOP(Aspect Oriented Programming) part 3  (0) 2020.05.30