Spring MVC 4.1.7 警告:在 DispatcherServlet 中找不到带有 URI [/user] 的 HTTP 请求的映射
Spring MVC 4.1.7 WARNING: No mapping found for HTTP request with URI [/user] in DispatcherServlet
我正在尝试 link 注释定义 Java 控制器 RequestMapping。具体来说,localhost:8080/user 和 localhost:8080/signin
索引页面加载正常,但这不是控制器的问题。我一定是错过了一些愚蠢的东西。我一直在上下堆栈溢出寻找解决方案,但到目前为止没有任何效果。
此警告最流行的答案似乎是添加 context:component-扫描、mvc:annotation-驱动,甚至只是命名问题。看来我在 xml 中拥有所有必要的配置,然后是一些。我是否缺少有关项目结构的信息?或者 url 模式匹配?有人提到 jstl 并为 urls 添加 c:tags,但这也不起作用。
我正在尝试 运行 所有最新的,也许有问题?我最初在设置环境以使用 webapp 3.1 时遇到了麻烦。大多数配置使用 spring sts 工具自动进行。
- Java 8
- Tomcat 8
- 网络应用 3.1
- 行家 4.0
- STS 3.7.0
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>group</groupId>
<artifactId>artifact</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>AppName</name>
<description>App Desc</description>
<!-- custom properties -->
<properties>
<spring.version>4.1.7.RELEASE</spring.version>
</properties>
<dependencies>
<!-- spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- j2ee -->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- logging -->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<!-- testing -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>InstagramPUE</finalName>
<sourceDirectory>src/main/java</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<warSourceDirectory>webapp</warSourceDirectory>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
</plugin>
</plugins>
</build>
</project>
web.xml
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="igpue" version="3.1">
<!-- app config -->
<display-name>App Display Name</display-name>
<description>App Desc</description>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- app context -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/app-context.xml</param-value>
</context-param>
<!-- servlet config -->
<servlet>
<servlet-name>mvc-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/mvc-dispatcher-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>/</url-pattern>
<url-pattern>/signin</url-pattern>
<url-pattern>/user</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.css</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.js</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.gif</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.jpg</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.png</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.txt</url-pattern>
</servlet-mapping>
</web-app>
mvc-dispatcher-servlet.xml
<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-4.1.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">
<!-- mvc config -->
<mvc:annotation-driven />
<mvc:resources location="/resources/" mapping="/resources/**" />
<!-- scan for controller -->
<context:component-scan base-package="abnd.igpue.controller" />
<!-- bean config -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!doctype html>
<html>
<head>
<title>Title</title>
<meta charset="utf-8" />
<meta http-equiv="Content-Type" content="text/html" />
<link href="<c:url value='/resources/css/style.css' />" rel="stylehseet" type="text/css" />
</head>
<body>
<!-- html -->
<div id="page">
<div id="header">
<div id="title"><span>Title</span></div>
</div>
<div id="content">
<div id="signIn">
<c:url value="/signin" var="signInLink" />
<div id="signInLink"><a href="${signInLink}">Sign in to Instagram</a></div>
<c:url value="/user" var="userLink" />
<div id="userpage"><a href="${userLink}">User Page</a></div>
</div>
</div>
</div>
<!-- js -->
<script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
</body>
</html>
User.java
package abnd.igpue.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class User {
@RequestMapping(value = "/signin")
public String signIn() {
// if the signin was successful redirect to user page
return "redirect:user";
}
@RequestMapping(value = "/user")
public ModelAndView userHome() {
ModelAndView mav = new ModelAndView("/jsp/user.jsp");
mav.setViewName("User");
String message = "<br><div>"
+ "<h1>Hello World</h1></div><br><br>";
mav.addObject("message", message);
return mav;
}
}
我已经开始工作了。我废弃了我拥有的代码,并从头开始完全重建它。我在这两个堆栈溢出 post 之间的上一个项目中发现了一些问题(如下),但即使在让新项目工作之后,我也无法成功更新我最初发布的代码。一定是我遗漏了一些愚蠢的东西。
资源
A post 这里详细说明如何
Using <mvc:resources .../> in spring 3 causes all other views to stop working
另一个 post 这里详细介绍了如何 Add css in spring mvc
我已经将入门 Spring Web MVC 项目上传到我的 github!
如果有人感兴趣,就来吧。您可以下载并导入为 maven 项目。 https://github.com/BorysHN/SpringMVCSkeleton
我正在尝试 link 注释定义 Java 控制器 RequestMapping。具体来说,localhost:8080/user 和 localhost:8080/signin
索引页面加载正常,但这不是控制器的问题。我一定是错过了一些愚蠢的东西。我一直在上下堆栈溢出寻找解决方案,但到目前为止没有任何效果。
此警告最流行的答案似乎是添加 context:component-扫描、mvc:annotation-驱动,甚至只是命名问题。看来我在 xml 中拥有所有必要的配置,然后是一些。我是否缺少有关项目结构的信息?或者 url 模式匹配?有人提到 jstl 并为 urls 添加 c:tags,但这也不起作用。
我正在尝试 运行 所有最新的,也许有问题?我最初在设置环境以使用 webapp 3.1 时遇到了麻烦。大多数配置使用 spring sts 工具自动进行。
- Java 8
- Tomcat 8
- 网络应用 3.1
- 行家 4.0
- STS 3.7.0
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>group</groupId>
<artifactId>artifact</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>AppName</name>
<description>App Desc</description>
<!-- custom properties -->
<properties>
<spring.version>4.1.7.RELEASE</spring.version>
</properties>
<dependencies>
<!-- spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- j2ee -->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- logging -->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<!-- testing -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>InstagramPUE</finalName>
<sourceDirectory>src/main/java</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<warSourceDirectory>webapp</warSourceDirectory>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
</plugin>
</plugins>
</build>
</project>
web.xml
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="igpue" version="3.1">
<!-- app config -->
<display-name>App Display Name</display-name>
<description>App Desc</description>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- app context -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/app-context.xml</param-value>
</context-param>
<!-- servlet config -->
<servlet>
<servlet-name>mvc-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/mvc-dispatcher-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>/</url-pattern>
<url-pattern>/signin</url-pattern>
<url-pattern>/user</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.css</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.js</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.gif</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.jpg</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.png</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.txt</url-pattern>
</servlet-mapping>
</web-app>
mvc-dispatcher-servlet.xml
<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-4.1.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">
<!-- mvc config -->
<mvc:annotation-driven />
<mvc:resources location="/resources/" mapping="/resources/**" />
<!-- scan for controller -->
<context:component-scan base-package="abnd.igpue.controller" />
<!-- bean config -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!doctype html>
<html>
<head>
<title>Title</title>
<meta charset="utf-8" />
<meta http-equiv="Content-Type" content="text/html" />
<link href="<c:url value='/resources/css/style.css' />" rel="stylehseet" type="text/css" />
</head>
<body>
<!-- html -->
<div id="page">
<div id="header">
<div id="title"><span>Title</span></div>
</div>
<div id="content">
<div id="signIn">
<c:url value="/signin" var="signInLink" />
<div id="signInLink"><a href="${signInLink}">Sign in to Instagram</a></div>
<c:url value="/user" var="userLink" />
<div id="userpage"><a href="${userLink}">User Page</a></div>
</div>
</div>
</div>
<!-- js -->
<script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
</body>
</html>
User.java
package abnd.igpue.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class User {
@RequestMapping(value = "/signin")
public String signIn() {
// if the signin was successful redirect to user page
return "redirect:user";
}
@RequestMapping(value = "/user")
public ModelAndView userHome() {
ModelAndView mav = new ModelAndView("/jsp/user.jsp");
mav.setViewName("User");
String message = "<br><div>"
+ "<h1>Hello World</h1></div><br><br>";
mav.addObject("message", message);
return mav;
}
}
我已经开始工作了。我废弃了我拥有的代码,并从头开始完全重建它。我在这两个堆栈溢出 post 之间的上一个项目中发现了一些问题(如下),但即使在让新项目工作之后,我也无法成功更新我最初发布的代码。一定是我遗漏了一些愚蠢的东西。
资源
A post 这里详细说明如何 Using <mvc:resources .../> in spring 3 causes all other views to stop working 另一个 post 这里详细介绍了如何 Add css in spring mvc
我已经将入门 Spring Web MVC 项目上传到我的 github!
如果有人感兴趣,就来吧。您可以下载并导入为 maven 项目。 https://github.com/BorysHN/SpringMVCSkeleton