我的
web.xml
<url-pattern>/</url-pattern> : Index Servlet
<url-pattern>/login</url-pattern> : Login Servlet
http://localhost:8084/login/
时,它会转到Index Servlet
,当我打开http://localhost:8084/login
时,它会转到Login Servlet
。http://localhost:8084/login/
和http://localhost:8084/login
有什么区别吗?web.xml
和索引 索引 登录 登录
索引 / 登录 /登录
/
的URL模式有特殊的含义。它即表示“默认 Servlet”URL 模式。因此,不与web.xml
中任何其他更具体的URL模式匹配的每个请求最终都会出现在这个servlet中。请注意,这也涵盖了静态文件,例如普通 HTML/CSS/JS 和图像文件!通常,“默认 Servlet”已由 servlet 容器本身提供(请参阅 Tomcat 的
DefaultServlet
文档)。在你自己的 web 应用程序中覆盖“默认 Servlet”应该非常小心,绝对不是这样。
您需要为索引 servlet 提供不同的 URL 模式。它应该与您在
<welcome-file>
中定义的相同。
所以万一
<welcome-file-list>
<welcome-file>index</welcome-file>
</welcome-file-list>
您需要按如下方式映射索引 servlet
<servlet-mapping>
<servlet-name>Index</servlet-name>
<url-pattern>/index</url-pattern>
</servlet-mapping>
对于您想要的特定目的来说,没有必要按照其他答案的建议使用 URL 重写过滤器。
是的,有区别。可以使用类似 UrlRewriteFilter 的内容来删除尾部斜杠,或者让您的 web.xml 指定两者:
<url-pattern>/login</url-pattern>
和
<url-pattern>/login/*</url-pattern>
映射到登录 servlet。
如果你想让它进入登录Servlet。 为什么不尝试 Spring URL 映射
@RequestMapping(value="/login", method=RequestMethod.GET)
public String demo(ModelMap map) {
String something = name;
// Do manipulation
return "login"; // Forward to login.jsp
}
观看此 Spring MVC 框架教程