[ /* 和 / 的区别 ] Difference between / and /* in servlet mapping url pattern

Posted zZ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[ /* 和 / 的区别 ] Difference between / and /* in servlet mapping url pattern相关的知识,希望对你有一定的参考价值。

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

The /* on a servlet overrides all other servlets,

including all servlets provided by the servletcontainer such as the default servlet and the JSP servlet. 

无论你发送什么请求,都会经过这个servlet.

通常来讲,只会用在Filter上,进行全部过滤.

It is able to let the request continue to any of the servlets listening on a more specific URL pattern by calling FilterChain#doFilter().

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

The / doesn‘t override any other servlet. 

它只替换servlet容器的内置默认servlet.

ps:默认servlet是为那些不匹配任何注册过的servlet准备的.

通常,它只会在静态资源上调用(CSS/JS/image/etc)和直接侦听.

servlet容器的内置servlet也有处理Http缓存请求,媒体流和文件下载的能力.

 

通常,你不会想要override默认的服务器.

不然你就不得不取代它的任务,这可不轻松.

因此,这对于servlet是一个不好的URL-pattern.

 

至于JSP页面为什么不会hit到这个servlet,是因为servlet容器的内置JSP servlet会被调用.

--已经被默认映射成更详细的RUL pattern *.jsp

 

<url-pattern></url-pattern>

然后,还有一个空字符串URL pattern.

当context root被请求时,它就会被调用.

这和<welcome-file>途径是不同的,

它的子文件夹被请求时,它不会被调用.

 

这更像是你需要一个"主页servlet"时想要寻找的URL pattern.

空字符和/ URL pattern的定义和直观期待有所差距,很容易混淆.

 

Front Controller

In case you actually intend to have a front controller servlet, then you‘d best map it on a more specific URL pattern like *.html*.do/pages/*/app/*, etc. You can hide away the front controller URL pattern and cover static resources on a common URL pattern like /resources/*/static/*, etc with help of a servlet filter. See also How to prevent static resources from being handled by front controller servlet which is mapped on /*. Noted should be that Spring MVC has a builtin static resource servlet, so that‘s why you could map its front controller on / if you configure a common URL pattern for static resources in Spring. See also How to handle static content in Spring MVC?

以上是关于[ /* 和 / 的区别 ] Difference between / and /* in servlet mapping url pattern的主要内容,如果未能解决你的问题,请参考以下文章

set集合的差集的区别

Difference between Hard Clip(H) and Soft Clip(S) in Samtools CIGAR string

What's the difference between all the Selection Segues?

The difference between "#" and "$" in MyBatis _mybatis

The difference between a local variable and a member variable

What is the difference between Alibaba Dubbo and Apache Dubbo