everpresent
10
2019-01-31 15:11:24 작성 2019-01-31 17:46:52 수정됨
0
1686

STS 3.x에서 STS 4.x로 이동



제가 요즘 뒤늦게 프로그래밍을 공부하고 있습니다.

공부를 하다보니 개발환경이 참 다양하다는 걸 느끼게 되었습니다. 그래서 개인적으로 공부하면서.. 간단한걸 구현하더라고 되도록 다양한 버전/환경에 대한 각각의 튜토리얼을 만들어 보려고 하고 있습니다. 이를테면 STS-gradle-oracle, STS-maven-oracle, STS-node-oracle 과 같은 경우의 수 별로 쪼개어 만들거나 mac VS windows 별로 각각 예제를 만들어 가면서 공부하고 있습니다.

그러는 과정에서 이번에.. STS 3.x에서 STS 4.x로 이동하는 과정에서 문제가 발생하였습니다.

동일한 소스인데.. STS 3.x 에서 돌아가는 소스가 STS 4.x에서는 

servlet.mvc.method.annotation.RequestMappingHandlerMapping register를 생성하지 못하고 있습니다.


  • 주요 코드 _web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
  <display-name>studyMavenSts4</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  
  	<!-- step1) 필터 -->
	<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>
	
	<!-- step1) needed for ContextLoaderListener -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>
	    	classpath:study/java/maven/config/root-context.xml	    <!-- step 1)-->
	    	classpath:study/java/maven/config/datasource-context.xml    <!-- step 2)-->
		</param-value>
	</context-param>
	
	<!-- step1) Bootstraps the root web application context before servlet initialization -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>	
	
  	<!-- step1) The front controller of this Spring Web application, responsible for handling all application requests -->
	<servlet>
	    <servlet-name>springDispatcherServlet</servlet-name>
	    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	    <init-param>
	      <param-name>contextConfigLocation</param-name>
	      <param-value>classpath:study/java/maven/config/servlet-context.xml</param-value>
	    </init-param>
	    <load-on-startup>1</load-on-startup>
	</servlet>
  
    <!-- step1) Map all requests to the DispatcherServlet for handling -->
	<servlet-mapping>
		<servlet-name>springDispatcherServlet</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>
	
</web-app>


  • 주요 코드 _servlet-context.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xsi:schemaLocation="http://www.springframework.org/schema/mvc 
		http://www.springframework.org/schema/mvc/spring-mvc-4.3.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-4.3.xsd">

<!-- step1 기본세팅 -->
	<mvc:annotation-driven/>
	<mvc:default-servlet-handler/>
	<context:annotation-config/>
	
<!-- step1 기본세팅 -->	
	<context:component-scan base-package="study.java.maven" use-default-filters="false">
		<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
	</context:component-scan>
	
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/view/"/>
		<property name="suffix" value=".jsp"/>
	</bean>

</beans>



  • 이슈 캡쳐 case_ STS 3.9.6


       -> 결과 : 


  • 이슈 캡쳐 case_ STS 4.0.1

       -> 결과 : 



  • 원본 코드 

          http://bitly.kr/MMJyJ



동일한 코드인데.. 왜 결과가 다른지 모르겠어서 고민 끝에 이곳에 질문글을 올려봅니다.

base-package에 대한 경로 설정방식이 다른건지?..

양쪽 모두 정상적으로 톰캣을 돌아가는데 STS 4.0.1에서만 '404' 가 뜹니다.


개발환경은 : 각 STS에서 tomcat 7.0, java 1.8, spring 4.3.20 입니다.


sts4.x 부터는 별도의 설정이 필요한건지..

아니면 단순히 import를 하면 안되는데.. 제가 모르고 초보적인 실수를 반복하고 있는건지..

선배님들의 고견 부탁드립니다. 고맙습니다. 

0
  • 답변 0

  • 로그인을 하시면 답변을 등록할 수 있습니다.