我启动tomcat后,浏览器出现404错误:
我输入localhost:8080/mvc/hello
或localhost:8080/mvc/hello.jsp
但如果我输入localhost:8080
,这是正常的,可以访问:
在我的springmvc-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"
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.1.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd">
<!-- scan the package and the sub package -->
<context:component-scan base-package="com.ypd.springmvcdemo"/>
<!-- don't handle the static resource -->
<mvc:default-servlet-handler />
<!-- if you use annotation you must configure following setting -->
<mvc:annotation-driven />
<!-- configure the InternalResourceViewResolver -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>
在我的MVCController.java
:
@Controller
@RequestMapping("/mvc")
public class MVCController {
@RequestMapping("/hello")
public String hello() {
return "hello";
}
}
在我的web.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<!--configure the setting of springmvcDispatcherServlet and configure the mapping-->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-servlet.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
这是我hello.jsp
的页面:
(我很抱歉springmvc-servlet.xml
的位置,我已将其找到resource
库下
更新 - 1:
我很抱歉,当我发布这个快照时出现错误,在我的问题项目中,web文件夹上没有蓝点。看到我的回答我发现了它的问题。
更新图片:
那么,错误在哪里?
修改
我的hello.jsp
:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
Hello, world, jack loly!
</body>
</html>
修改
日志看起来是正确的:
[2017-03-20 03:06:48,255]神器SpringMVCDemo:战争爆炸:服务器未连接。部署不可用。 连接到目标VM,地址:&#39; 127.0.0.1:51764&#39;,transport:&#39; socket&#39; 2017年3月20日15:06:50.080 info [main] org.apache.catalina.startup.VersionLoggerListener.log服务器版本:Apache Tomcat / 9.0.0.M17 2017年3月20日15:06:50.085 info [main] org.apache.catalina.startup.VersionLoggerListener.log服务器内置:2017年1月10日20:59:20 UTC 2017年3月20日15:06:50.085 info [main] org.apache.catalina.startup.VersionLoggerListener.log服务器编号:9.0.0.0 2017年3月20日15:06:50.085 info [main] org.apache.catalina.startup.VersionLoggerListener.log操作系统名称:Mac OS X 2017年3月20日15:06:50.088 info [main] org.apache.catalina.startup.VersionLoggerListener.log操作系统版本:10.12.2 2017年3月20日15:06:50.089 info [main] org.apache.catalina.startup.VersionLoggerListener.log架构:x86_64 2017年3月20日15:06:50.089 info [main] org.apache.catalina.startup.VersionLoggerListener.log Java主页:/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/jre 2017年3月20日15:06:50.089 info [main] org.apache.catalina.startup.VersionLoggerListener.log JVM版本:1.8.0_121-b13 2017年3月20日15:06:50.089 info [main] org.apache.catalina.startup.VersionLoggerListener.log JVM供应商:Oracle Corporation 2017年3月20日15:06:50.089 info [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:/Users/jack/Library/Caches/IntelliJIdea2016.3/tomcat/Tomcat_9_0_0_M17_SpringMVCDemo 2017年3月20日15:06:50.090 info [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:/ Users / jack / Library / Tomcat9 2017年3月20日15:06:50.091 info [main] org.apache.catalina.startup.VersionLoggerListener.log命令行参数:-Djava.util.logging.config.file = / Users / jack / Library / Caches / IntelliJIdea2016 0.3 / Tomcat的/ Tomcat_9_0_0_M17_SpringMVCDemo / CONF / logging.properties 2017年3月20日15:06:50.091 info [main] org.apache.catalina.startup.VersionLoggerListener.log命令行参数:-Djava.util.logging.manager = org.apache.juli.ClassLoaderLogManager 2017年3月20日15:06:50.091 info [main] org.apache.catalina.startup.VersionLoggerListener.log命令行参数:-agentlib:jdwp = transport = dt_socket,address = 127.0.0.1:51764,suspend = y,服务器=正 2017年3月20日15:06:50.091 info [main] org.apache.catalina.startup.VersionLoggerListener.log命令行参数:-Dcom.sun.management.jmxremote = 2017年3月20日15:06:50.092 info [main] org.apache.catalina.startup.VersionLoggerListener.log命令行参数:-Dcom.sun.management.jmxremote.port = 1099 2017年3月20日15:06:50.093 info [main] org.apache.catalina.startup.VersionLoggerListener.log命令行参数:-Dcom.sun.management.jmxremote.ssl = false 2017年3月20日15:06:50.093 info [main] org.apache.catalina.startup.VersionLoggerListener.log命令行参数:-Dcom.sun.management.jmxremote.authenticate = false 2017年3月20日15:06:50.093 info [main] org.apache.catalina.startup.VersionLoggerListener.log命令行参数:-Djava.rmi.server.hostname = 127.0.0.1 2017年3月20日15:06:50.093 info [main] org.apache.catalina.startup.VersionLoggerListener.log命令行参数:-Djdk.tls.ephemeralDHKeySize = 2048 2017年3月20日15:06:50.093 info [main] org.apache.catalina.startup.VersionLoggerListener.log命令行参数:-Djava.protocol.handler.pkgs = org.apache.catalina.webresources 2017年3月20日15:06:50.093 info [main] org.apache.catalina.startup.VersionLoggerListener.log命令行参数:-Dcatalina.base = / Users / jack / Library / Caches / IntelliJIdea2016.3 / tomcat / Tomcat_9_0_0_M17_SpringMVCDemo 2017年3月20日15:06:50.094 info [main] org.apache.catalina.startup.VersionLoggerListener.log命令行参数:-Dcatalina.home = / Users / jack / Library / Tomcat9 2017年3月20日15:06:50.094 info [main] org.apache.catalina.startup.VersionLoggerListener.log命令行参数:-Djava.io.tmpdir = / Users / jack / Library / Tomcat9 / temp 2017年3月20日15:06:50.094 info [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent在java.library.path中找不到基于APR的Apache Tomcat Native库,它可以在生产环境中实现最佳性能: /用户/插孔/图书馆/的Java /扩展:/图书馆/的Java /扩展:/网络/资源库/的Java /扩展:/系统/库/的Java /扩展:/ usr / lib中/ JAVA :. 2017年3月20日15:06:50.527 info [main] org.apache.coyote.AbstractProtocol.init初始化ProtocolHandler [&#34; http-nio-8080&#34;] 2017年3月20日15:06:50.560 info [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector使用共享选择器进行servlet写入/读取 2017年3月20日15:06:50.563 info [main] org.apache.coyote.AbstractProtocol.init初始化ProtocolHandler [&#34; ajp-nio-8009&#34;] 2017年3月20日15:06:50.565 info [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector使用共享选择器进行servlet写入/读取 2017年3月20日15:06:50.581 info [main] org.apache.catalina.startup.Catalina.load在1455 ms内处理初始化 2017年3月20日15:06:50.709 info [main] org.apache.catalina.core.StandardService.startInternal开始服务Catalina 2017年3月20日15:06:50.709 info [main] org.apache.catalina.core.StandardEngine.startInternal启动Servlet引擎:Apache Tomcat / 9.0.0.M17 2017年3月20日15:06:50.745 info [main] org.apache.coyote.AbstractProtocol.start启动ProtocolHandler [http-nio-8080] 2017年3月20日15:06:50.766 info [main] org.apache.coyote.AbstractProtocol.start启动ProtocolHandler [ajp-nio-8009] 2017年3月20日15:06:50.769 info [main] org.apache.catalina.startup.Catalina.start服务器启动时间为187毫秒 连接到服务器 [2017-03-20 03:06:51,046]神器SpringMVCDemo:战争爆炸:正在部署神器,请稍等...... [2017-03-20 03:06:51,751]神器SpringMVCDemo:战争爆炸:神器部署成功 [2017-03-20 03:06:51,751]神器SpringMVCDemo:战争爆炸:部署耗时705毫秒 2017年3月20日15:07:00.750 info [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory部署Web应用程序目录/ Users / jack / Library / Tomcat9 / webapps / manager 2017年3月20日15:07:00.802 info [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录/ Users / jack / Library / Tomcat9 / webapps / manager的部署已完成52 MS
修改
编辑-2
答案 0 :(得分:0)
将springmvc-servlet.xml文件放在WEB-INF中并更改web.xml的行
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-servlet.xml</param-value>
</init-param>
到
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/springmvc-servlet.xml</param-value>
</init-param>
答案 1 :(得分:0)
有几件事需要注意。
网址应为:
RequestMapping(mvc,hello)
@RequestMapping(value="/mvc")
。您可以删除@RequestMapping("/hello")
并在hello()
方法上保留load-on-startup
。<强>更新强>
在web.xml
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
{{1}}
答案 2 :(得分:0)
我认为你的tomcat部署配置并不都行。您的应用程序上下文应该是您要加载应用程序的上下文,并告诉tomcat在该上下文中分派所有请求。
e.g。您的应用程序上下文可以是/helloApp
。现在,当您启动tomcat时,您的应用程序将加载到localhost:8080/helloApp/
。这是您的应用程序根上下文。现在,如果您点击localhost:8080/helloApp/mvc/hello
,则需要看到您的内容。
答案 3 :(得分:0)