问题出在servlet映射的url模式中。
<url-pattern>/DispatcherServlet</url-pattern>
假设我们的控制器是
@Controller
public class HomeController {
@RequestMapping("/home")
public String home(){
return "home";
}
}
当我们在浏览器中点击某些URL时。调度程序servlet将尝试映射此URL。
当前我们Serlvet的网址模式是/Dispatcher
指从{contextpath}/Dispatcher
但是当我们请求时,我们http://localhost:8080/home
实际上是在询问/哪些资源不可用。所以要么我们需要说调度程序servlet就可以/
通过
<url-pattern>/</url-pattern>
我们通过/ dispatcher /Dispatcher/*
例如
<?xml version="1.0" encoding="UTF-8"?>
<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="WebApp_ID"
version="3.1">
<display-name>springsecuritydemo</display-name>
<servlet>
<description></description>
<display-name>offers</display-name>
<servlet-name>offers</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>offers</servlet-name>
<url-pattern>/Dispatcher/*</url-pattern>
</servlet-mapping>
</web-app>
并要求http://localhost:8080/Dispatcher/home
或只是/要求像
http://localhost:8080/home