如何在 /

问题描述 投票:0回答:3

我的

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


    索引
    索引


    登录
    登录



    索引
    /


    登录
    /登录

servlets url-pattern
3个回答
9
投票

/
的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 重写过滤器。

另请参阅:


2
投票

是的,有区别。可以使用类似 UrlRewriteFilter 的内容来删除尾部斜杠,或者让您的 web.xml 指定两者:

<url-pattern>/login</url-pattern>

<url-pattern>/login/*</url-pattern>    

映射到登录 servlet。


-1
投票

如果你想让它进入登录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 框架教程

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.