-
<url-pattern/>的设置:
-
(1): 精确路径模式:请求路径必须与<url-pattern>的值完全相同才可被当前Servlet处理.
-
例如:<servlet-mapping>
<servlet-name>someServlet</servlet-name>
<url-pattern>/xxx/ooo/jjj/some</url-pattern>
<url-pattern>/xxx/some</url-pattern>
<url-pattern>/some</url-pattern>
</servlet-mapping> -
(2):通配符路径模式: 该模式中的路径由两部分组成:精确路径部分与通配符部分。请求路径中只有携带了<url-pattern/>值中指定的精确路径部分才可被当前Servlet处理。
-
例如:<servlet-mapping>
<servlet-name>secondServlet</servlet-name>
<url-pattern>/aaa/*</url-pattern>
</servlet-mapping> -
(3):全路径模式: 例如: <servlet-mapping>
<servlet-name>secondServlet</servlet-name>
<!-- <url-pattern>/*</url-pattern> -->
<!-- /*与/都是全路径模式,但它们还是有不同的
/*是真正的全路径模式,可以拦截所有请求,无论是动态资源请求(.jsp),还是静态资源请求(.html),均会被拦截。
/只会拦截静态资源请求,对于动态资源请求是不进行拦截的。
-->
<url-pattern>/</url-pattern>
</servlet-mapping> -
(4)后缀名模式:<servlet-mapping>
<servlet-name>secondServlet</servlet-name>
<!-- <url-pattern>/</url-pattern> -->
<url-pattern>*.do(.后面随意,只不过后面有的框架用的都是.action或者.do)</url-pattern>
</servlet-mapping> -
后缀名模式的用法限制:为<url-pattern/>设置值时,带斜杠的通配符路径模式与后缀名模式不能同时使用,例如,不能使用/*.do, /xxx/*.do等形式。否则,服务器将无法正常启动.
-
匹配原则: (1):路径优先后缀匹配原则:就是这个请求按照路径方式能匹配上,按照后缀方式也能匹配上,这时候路径优先于后缀名。
-
(2):精确路径优先匹配原则:比如说/xxx/*和/xxx/ls它会优先执行/xxx/ls.
-
(3) :最长路径优先匹配原则:比如说/xxx/*和/xxx/ooo/*,用户提交请求/xxx/ooo/dada时,会优先执行最长路径的Servlet.(就是执行/xxx/ooo/dada所对应的Servlet的service()方法,其实也可以划分到第二个匹配原则中)
Servlet中url-pattern的设置与匹配
最新推荐文章于 2024-06-05 13:48:31 发布