web.xml文件:URL映射(web.xml : URL mapping)

2019-07-29 23:48发布

我在这两条线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>

Answer 1:

的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重写过滤器由其他答案的建议是不必要的,你心目中的特定目的。



Answer 2:

是,有一点不同。 无论是使用类似UrlRewriteFilter删除尾随斜线,或有你的web.xml同时指定:

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

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

作为映射到登录的servlet。



Answer 3:

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



文章来源: web.xml : URL mapping