Servlet编程专题3之url-pattern设置方式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Servlet编程专题3之url-pattern设置方式相关的知识,希望对你有一定的参考价值。

1、精确路径匹配模式:请求路径必须与<url-pattern>标签中的值完全相同才可被Servlet处理。(可以匹配多个)

技术分享


2、通配符路径模式:

-  该模式中的路径由两部分组成:精确路径部分和通配符部分。请求路径中只有携带了<url-pattern>值中的指定的精确路径部分才可被当前的Servlet处理。(通配符使用*符号来表示)

技术分享

-  /*与/都是全路径模式,但是它们还是有不同的。/*是真正的全路径模式,可以拦截所有请求,无论是动态资源请求,还是静态资源请求,均会被拦截;/只会拦截静态资源请求,对于动态资源是不会进行拦截的。(直接把相应文件发送到客户端的文件都是静态资源;如果不同的用户可以得到不同的回答,是动态资源,一般是指数据库资源。)


3、后缀名模式:

技术分享

-  如上所示,如果<url-pattern>值为“.do”,则会拦截所有请求路径与.do结尾的相关用户请求。(需要注意的是,为<url-pattern>设置值时,带斜杠的通配符模式和后缀名模式不能够同时使用,例如,不能使用/*.do,/***/*.do等形式,否则,服务器将无法正常启动。)


-  附录:<url-pattern>中的匹配原则问题:

a、优先后缀匹配原则:例如SomeServlet的<url-pattern>为*.do,OtherServlet的<url-pattern>为/xxx/*。若用户请求的URL为http://localhost:8080/oa/xxx/abc.do,此时服务器发现SomeServlet的*.do和OtherServlet的/xxx/*都可以与用户提交的请求/xxx/abc.do相匹配。那么服务器会按照“路径优先匹配后缀”的原则选择OtherServlet。


b、精确路径优先匹配原则:例如SomeServlet的<url-pattern>为/some,OtherServlet的<url-pattern>为/*。若用户提交的请求URL为http://localhost:8080/oa/some,此时服务器发现SomeServlet的/some和OtherServlet的为/*,那么服务器会按照“精确路径优先”的原则学则SomeServlet。


c、最长路径优先匹配原则:

-  例如SomeServlet的<url-pattern>为/some/*,OtherServlet的<url-pattern>为/some/other/*。若用户提交的请求URL为http://localhost:8080/oa/some/other,此时服务器发现SomeServlet的/some/*与OtherServletDE/some/other/*都可以与用户提交请求的/some/other相匹配。那么服务器会按照“最长路径优先匹配”的原则选择OtherServlet。



本文出自 “12392717” 博客,请务必保留此出处http://12402717.blog.51cto.com/12392717/1972865

以上是关于Servlet编程专题3之url-pattern设置方式的主要内容,如果未能解决你的问题,请参考以下文章

Servlet编程专题1之Servlet生命周期

Servlet编程专题2之获取ServletConfig对象

Servlet编程专题10之Servlet3.0注解

Servlet编程专题9之Servlet规范中的过滤器

Servlet编程专题11之Servlet3.0特性实现文件上传

Servlet编程专题5之servlet线程安全问题