2014-04-06 159 views
0


我试图创建我的第一个Spring MVC应用程序,但是当我尝试在服务器上运行项目(Tomcat 7)时,在我的浏览器Http Status 404(here is link on the fault screen)中出现错误。你能告诉我哪里错了吗?您可以在下面看到最重要的文件。以下是完整项目https://github.com/tommiCZE/SpringMVCSampleApp/tree/master/SpringMVCSampleApp的链接。Spring 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中

<?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> 

的index.jsp

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

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

第一个问题:您的应用程序加载view-resolver-servlet.xml配置文件两次,一次是由ContextLoaderListener,一旦由DispatcherServlet。你不需要这个,因为你会有一堆重复的bean。您目前不需要您的ContextLoaderListener。摆脱它。

问题二:你从那个方面配置中缺少

<mvc:annotation-driven /> 

(用适当的命名空间声明)。没有它,Spring MVC栈将不会注册您的@Controller bean作为处理程序。您的

<context:component-scan ... /> 

只扫描bean并将其找到的任何内容添加到上下文中。

第三个问题:你发送一个请求

/SpringMVCSampleApp 

当你没有任何处理方法来处理这条道路。加一个。或者在您的部署描述符中添加一个<welcome-file>,即。 web.xml

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

假设index.jsp位于WAR的根部,即。外部WEB-INF


进一步阅读