2014-04-06 2 views
0


첫 번째 MVC 응용 프로그램을 만들려고하지만 서버 (Tomcat 7)에서 프로젝트를 실행하려고하면 브라우저에 HTTP 오류 404 (here is link on the fault screen) 오류가 표시됩니다. 실수가 어디 있는지 말해 주시겠습니까? 아래에서 가장 중요한 파일을 볼 수 있습니다. 다음은 전체 프로젝트 https://github.com/tommiCZE/SpringMVCSampleApp/tree/master/SpringMVCSampleApp에 대한 링크입니다.봄 MVC HTTP 상태 404

콘솔 출력 :

IV 06, 2014 4:15:39 ODP. org.apache.catalina.core.AprLifecycleListener init 
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jdk1.7.0_10\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Common Files\Acronis\SnapAPI\;D:\Programy\Qt\4.8.4\\bin;C:\Program Files\Java\jdk1.7.0_51\bin;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\QuickTime\QTSystem\;C:\Program Files\apache-maven-3.2.1\bin;C:\Program Files\Java\jdk1.7.0_10\bin;. 
IV 06, 2014 4:15:39 ODP. org.apache.tomcat.util.digester.SetPropertiesRule begin 
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:SpringMVCSampleApp' did not find a matching property. 
IV 06, 2014 4:15:39 ODP. org.apache.coyote.AbstractProtocol init 
INFO: Initializing ProtocolHandler ["http-bio-8080"] 
IV 06, 2014 4:15:39 ODP. org.apache.coyote.AbstractProtocol init 
INFO: Initializing ProtocolHandler ["ajp-bio-8009"] 
IV 06, 2014 4:15:39 ODP. org.apache.catalina.startup.Catalina load 
INFO: Initialization processed in 552 ms 
IV 06, 2014 4:15:39 ODP. org.apache.catalina.core.StandardService startInternal 
INFO: Starting service Catalina 
IV 06, 2014 4:15:39 ODP. org.apache.catalina.core.StandardEngine startInternal 
INFO: Starting Servlet Engine: Apache Tomcat/7.0.47 
IV 06, 2014 4:15:39 ODP. org.apache.catalina.util.SessionIdGenerator createSecureRandom 
INFO: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [174] milliseconds. 
IV 06, 2014 4:15:40 ODP. org.apache.catalina.core.ApplicationContext log 
INFO: No Spring WebApplicationInitializer types detected on classpath 
IV 06, 2014 4:15:40 ODP. org.apache.catalina.core.ApplicationContext log 
INFO: Initializing Spring root WebApplicationContext 
IV 06, 2014 4:15:40 ODP. org.springframework.web.context.ContextLoader initWebApplicationContext 
INFO: Root WebApplicationContext: initialization started 
IV 06, 2014 4:15:40 ODP. org.springframework.context.support.AbstractApplicationContext prepareRefresh 
INFO: Refreshing Root WebApplicationContext: startup date [Sun Apr 06 16:15:40 CEST 2014]; root of context hierarchy 
IV 06, 2014 4:15:40 ODP. org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions 
INFO: Loading XML bean definitions from ServletContext resource [/WEB-INF/view-resolver-servlet.xml] 
IV 06, 2014 4:15:41 ODP. org.springframework.web.context.ContextLoader initWebApplicationContext 
INFO: Root WebApplicationContext: initialization completed in 347 ms 
IV 06, 2014 4:15:41 ODP. org.apache.catalina.core.ApplicationContext log 
INFO: Initializing Spring FrameworkServlet 'view-resolver' 
IV 06, 2014 4:15:41 ODP. org.springframework.web.servlet.FrameworkServlet initServletBean 
INFO: FrameworkServlet 'view-resolver': initialization started 
IV 06, 2014 4:15:41 ODP. org.springframework.context.support.AbstractApplicationContext prepareRefresh 
INFO: Refreshing WebApplicationContext for namespace 'view-resolver-servlet': startup date [Sun Apr 06 16:15:41 CEST 2014]; parent: Root WebApplicationContext 
IV 06, 2014 4:15:41 ODP. org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions 
INFO: Loading XML bean definitions from ServletContext resource [/WEB-INF/view-resolver-servlet.xml] 
IV 06, 2014 4:15:41 ODP. org.springframework.web.servlet.handler.AbstractUrlHandlerMapping registerHandler 
INFO: Mapped URL path [//Print/{arg}] onto handler 'applicationController' 
IV 06, 2014 4:15:41 ODP. org.springframework.web.servlet.handler.AbstractUrlHandlerMapping registerHandler 
INFO: Mapped URL path [//Print/{arg}.*] onto handler 'applicationController' 
IV 06, 2014 4:15:41 ODP. org.springframework.web.servlet.handler.AbstractUrlHandlerMapping registerHandler 
INFO: Mapped URL path [//Print/{arg}/] onto handler 'applicationController' 
IV 06, 2014 4:15:41 ODP. org.springframework.web.servlet.handler.AbstractUrlHandlerMapping registerHandler 
INFO: Mapped URL path [//Test] onto handler 'applicationController' 
IV 06, 2014 4:15:41 ODP. org.springframework.web.servlet.handler.AbstractUrlHandlerMapping registerHandler 
INFO: Mapped URL path [//Test.*] onto handler 'applicationController' 
IV 06, 2014 4:15:41 ODP. org.springframework.web.servlet.handler.AbstractUrlHandlerMapping registerHandler 
INFO: Mapped URL path [//Test/] onto handler 'applicationController' 
IV 06, 2014 4:15:41 ODP. org.springframework.web.servlet.FrameworkServlet initServletBean 
INFO: FrameworkServlet 'view-resolver': initialization completed in 234 ms 
IV 06, 2014 4:15:41 ODP. org.apache.coyote.AbstractProtocol start 
INFO: Starting ProtocolHandler ["http-bio-8080"] 
IV 06, 2014 4:15:41 ODP. org.apache.coyote.AbstractProtocol start 
INFO: Starting ProtocolHandler ["ajp-bio-8009"] 
IV 06, 2014 4:15:41 ODP. org.apache.catalina.startup.Catalina start 
INFO: Server startup in 1839 ms 
IV 06, 2014 4:15:41 ODP. org.springframework.web.servlet.DispatcherServlet noHandlerFound 
WARNING: No mapping found for HTTP request with URI [/SpringMVCSampleApp/] in DispatcherServlet with name 'view-resolver' 
IV 06, 2014 6:37:57 ODP. org.springframework.web.servlet.DispatcherServlet noHandlerFound 
WARNING: No mapping found for HTTP request with URI [/SpringMVCSampleApp/] in DispatcherServlet with name 'view-resolver' 

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>Archetype Created Web Application</display-name> 
    <servlet> 
    <servlet-name>view-resolver</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>view-resolver</servlet-name> 
    <url-pattern>/</url-pattern> 
    </servlet-mapping> 
    <context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>/WEB-INF/view-resolver-servlet.xml</param-value> 
    </context-param> 
    <listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 

조회 리졸버-servlet.xml에 index.jsp를

<?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" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd"> 

    <context:component-scan base-package="cz.tommi.controller" /> 

    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="prefix" value="/WEB-INF/pages/" /> 
     <property name="suffix" value=".jsp" /> 
    </bean> 
</beans> 

<html> 
<body> 
    <h2>Hello World!</h2> 
</body> 
</html> 
,617,

ApplicationController.java

package cz.tommi.controller; 

import org.springframework.stereotype.Controller; 
import org.springframework.ui.ModelMap; 
import org.springframework.web.bind.annotation.*; 


@Controller 
@RequestMapping("/") 
public class ApplicationController { 

    @RequestMapping(value="/Test", method = RequestMethod.GET) 
    public String welcome(ModelMap model) { 
     model.addAttribute("msgArgument", "Maven Java Web Application Project: Success!"); 

     return "index"; 
    } 

    @RequestMapping(value="/Print/{arg}", method = RequestMethod.GET) 
    public String welcomeName(@PathVariable String arg, ModelMap model) { 
     model.addAttribute("msgArgument", "Maven Java Web Application Project, input variable: " + arg); 

     return "index"; 
    } 
} 

답변

2

첫 번째 문제 : 응용 프로그램이 한 번 ContextLoaderListener에 의해 한번 DispatcherServlet에 의해 두 번 view-resolver-servlet.xml 구성 파일을로드합니다. 중복 콩이 많으므로이 작업을 원하지 않습니다. 현재 ContextLoaderListener이 필요하지 않습니다. 그것을 제거.

두 번째 문제 : 당신이 (적절한 네임 스페이스 선언으로) 그 상황에 맞는 구성에서

<mvc:annotation-driven /> 

을 놓치고있어. 이를 사용하지 않으면 스프링 MVC 스택은 @Controller 빈을 핸들러로 등록하지 않는다. 귀하의

<context:component-scan ... /> 

빈을 검색하고 컨텍스트에 추가 된 것을 추가합니다.

세 번째 문제 : 당신이 그 경로를 처리 할 수있는 핸들러 방법이 없을 때 당신은

/SpringMVCSampleApp 

에 요청을 전송하고 있습니다. 하나 추가하십시오. 또는 <welcome-file>을 배치 설명자에 추가하십시오. web.xml.

<welcome-file-list> 
    <welcome-file>index.jsp</welcome-file> 
</welcome-file-list> 

index.jsp이 WAR의 루트에 있다고 가정합니다. 밖에 WEB-INF.


추가 읽기