我在这两条线web.xml
<url-pattern>/</url-pattern> : Index Servlet
和
<url-pattern>/login</url-pattern> : Login Servlet
但whem我打开http://localhost:8084/login/
,它进入Index Servlet
,当我打开http://localhost:8084/login
,它关系到Login Servlet
。
是否有任何区别http://localhost:8084/login/
和http://localhost:8084/login
?
我web.xml
的<servlet> <servlet的名称>索引</ servlet的名称> <servlet的类>索引</ servlet的类> </ servlet的> 的<servlet> <servlet的名称>登录</ servlet的名称> <servlet的类>登录</ servlet的类> </ servlet的>
和
<servlet-mapping>
<servlet-name>Index</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Login</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
的URL模式/
有特殊的意义。 这即表示“默认的Servlet” URL模式。 所以每次 不匹配任何其他更具体的网址模式要求 web.xml
最终将在这个servlet结束。 请注意,这从而也分为静态文件,就像普通的香草HTML / CSS / JS和图像文件! 通常情况下,“默认的servlet”已经由servlet容器本身(例如参见提供Tomcat的DefaultServlet
文档 )。 覆盖在自己的Web应用程序的“默认的servlet”应该格外小心,绝对不能这样做。
你需要给你的servlet指数不同的URL模式。 它应该是一样的,你在definied一个<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。 为什么不尝试春天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框架教程