【发布时间】:2016-03-17 04:19:52
【问题描述】:
我从“Spring MVC - Przewodnik dla początkujących”一书中做例子,我做的一切都像一本书一样,但是当我启动应用程序时,我得到 “HTTP Status 404”。
我的项目浏览器看起来: Project Explorer
HomeController.java
package com.packt.webstore.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class HomeController {
@RequestMapping("/webstore/")
public String welcome(Model model){
model.addAttribute("greeting", "Witaj w sklepie internetowym!");
model.addAttribute("tagline", "tralala");
return "welcome";
}
}
welcome.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet"
href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css">
<title>Witaj</title>
</head>
<body>
<section>
<div class="jumbotron">
<div class="container">
<h1>${greeting}</h1>
<p>${tagline}</p>
</div>
</div>
</section>
</body>
</html>
DefaultServlet-servlet.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"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="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.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
<mvc:annotation-driven/>
<context:component-scan base-package="com.packt.webstore" />
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
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">
<servlet>
<servlet-name>DefaultServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DefaultServlet</servlet-name>
<url-pattern>/webstore/</url-pattern>
</servlet-mapping>
</web-app>
当我运行项目时,我得到了 Http 404 和日志:
gru 11, 2015 10:11:16 AM org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:webstore2' did not find a matching property.
gru 11, 2015 10:11:16 AM org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:webstore' did not find a matching property.
gru 11, 2015 10:11:16 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server version: Apache Tomcat/8.0.30
gru 11, 2015 10:11:16 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server built: Dec 1 2015 22:30:46 UTC
gru 11, 2015 10:11:16 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server number: 8.0.30.0
gru 11, 2015 10:11:16 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Name: Windows 7
gru 11, 2015 10:11:16 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Version: 6.1
gru 11, 2015 10:11:16 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Architecture: amd64
gru 11, 2015 10:11:16 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Java Home: C:\Program Files\Java\jre1.8.0_65
gru 11, 2015 10:11:16 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM Version: 1.8.0_65-b17
gru 11, 2015 10:11:16 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM Vendor: Oracle Corporation
gru 11, 2015 10:11:16 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: CATALINA_BASE: E:\Dokumenty\eclipse - przykłady\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0
gru 11, 2015 10:11:16 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: CATALINA_HOME: E:\Dokumenty\eclipse - przykłady\apache-tomcat-8.0.30-windows-x64\apache-tomcat-8.0.30
gru 11, 2015 10:11:16 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcatalina.base=E:\Dokumenty\eclipse - przykłady\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0
gru 11, 2015 10:11:16 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcatalina.home=E:\Dokumenty\eclipse - przykłady\apache-tomcat-8.0.30-windows-x64\apache-tomcat-8.0.30
gru 11, 2015 10:11:16 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dwtp.deploy=E:\Dokumenty\eclipse - przykłady\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps
gru 11, 2015 10:11:16 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djava.endorsed.dirs=E:\Dokumenty\eclipse - przykłady\apache-tomcat-8.0.30-windows-x64\apache-tomcat-8.0.30\endorsed
gru 11, 2015 10:11:16 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dfile.encoding=Cp1250
gru 11, 2015 10:11:16 AM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
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\jre1.8.0_65\bin;C:\windows\Sun\Java\bin;C:\windows\system32;C:\windows;C:/Program Files/Java/jre1.8.0_65/bin/server;C:/Program Files/Java/jre1.8.0_65/bin;C:/Program Files/Java/jre1.8.0_65/lib/amd64;C:\ProgramData\Oracle\Java\javapath;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\windows\system32;C:\windows;C:\windows\System32\Wbem;C:\windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\TortoiseSVN\bin;C:\Program Files\Java\jdk1.8.0_65\bin;e:\Tools\apache-maven-3.3.9-bin\apache-maven-3.3.9\bin;E:\Tools\eclipse-jee-mars-1-win32-x86_64\eclipse;;.
gru 11, 2015 10:11:16 AM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-nio-8080"]
gru 11, 2015 10:11:16 AM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
INFO: Using a shared selector for servlet write/read
gru 11, 2015 10:11:16 AM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-nio-8009"]
gru 11, 2015 10:11:16 AM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
INFO: Using a shared selector for servlet write/read
gru 11, 2015 10:11:16 AM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 707 ms
gru 11, 2015 10:11:16 AM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
gru 11, 2015 10:11:16 AM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/8.0.30
gru 11, 2015 10:11:16 AM org.apache.catalina.util.SessionIdGeneratorBase createSecureRandom
INFO: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [196] milliseconds.
gru 11, 2015 10:11:17 AM org.apache.jasper.servlet.TldScanner scanJars
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
gru 11, 2015 10:11:17 AM org.apache.catalina.core.ApplicationContext log
INFO: No Spring WebApplicationInitializer types detected on classpath
gru 11, 2015 10:11:17 AM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-nio-8080"]
gru 11, 2015 10:11:17 AM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-nio-8009"]
gru 11, 2015 10:11:17 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 1429 ms
【问题讨论】:
-
你用来调用控制器的 URL 是什么。
-
你的意思是localhost:8080/webstore?
-
清除浏览器历史记录,然后重试。
-
您的 servlet 映射应该是
/或/webstore/*有一些错误。在后一种情况下,您的 URL 将是localhost:8080/webstore/webstore,因为@RequestMapping是从DispatcherServlet的映射开始的 URL 部分。我建议将 servlet 映射到/以避免冲突。
标签: java spring maven spring-mvc servlets