java - Spring MVC Http 状态 404

标签 java eclipse spring-mvc


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

控制台输出:

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>

View 解析器-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";
   }
}

最佳答案

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

第二个问题:你失踪了

<mvc:annotation-driven />

来自该上下文配置(具有适当的命名空间声明)。没有它,Spring MVC 堆栈将不会注册您的 @Controller beans 作为处理程序。你的

<context:component-scan ... /> 

仅扫描 bean 并将找到的任何 bean 添加到上下文中。

第三个问题:您正在向

发送请求
/SpringMVCSampleApp

当您没有任何处理程序方法来处理该路径时。添加一个。或者添加<welcome-file > 到您的部署描述符,即。 web.xml .

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

假设index.jsp是 war 的根源,即。外面WEB-INF .

<小时/>

进一步阅读

关于java - Spring MVC Http 状态 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22898895/

相关文章:

java - SS_X_JSESSIONID 是什么以及何时创建?

java - Bean 验证不起作用。我正在使用 JPA 2.0 和 Hibernate 3.3

eclipse - 如何在 Eclipse 中开发 Netbeans 平台应用程序?

java - 如何使用异步http post将数据从android studio发送到xampp并在真实设备中运行?

hibernate - Spring MVC 中的 JPA Hibernate 批量/批量更新

java - 多态性的有效使用?

java - 在 Oracle 中处理 ¿

eclipse - 如何在 Eclipse 中自动删除尾随空格?

java - 使用 Hibernate 与托管提供商创建 MySQL 数据库模式、优缺点、实践。

spring-mvc - 从应用服务层报告错误