servlet路径映射配置(七)

  1. 由于客户端是通过URL地址访问web服务器中的资源,所以servlet程序若想被外界访问,必须把servlet程序映射到一个URL地址上,这个工作在web.xml文件中使用<servlet>元素和<servlet-mapping>元素完成。
  2. <servlet>元素用于注册servlet,它包含两个主要的子元素,<servlet-name>和<servlet-class>,分别用于设置servlet的注册名称和servlet的完整类名。
  3. 一个<servlet-mapping>元素用于映射一个已注册的servlet的一个对外访问路径,它包含有两个子元素:<servlet-name>和<url-pattern>,分别用于指定servlet的注册名称和servlet的对外访问路径。
  4. 同一个servlet可以被映射到多个URL上,即多个<servlet-mapping>元素的<servlet-name>子元素的设置值可以是同一个servlet的注册名。
  5. url-pattern完全匹配,必须以正斜杠/开始。
  6. 在servlet映射到的URL中也可以使用*通配符,但是只能有两种固定的格式:一种扩展名匹配,格式是"*.扩展名",注意绝对不能以/开头;另一种是目录匹配,格式是以正斜杠(/)开头并以"/*"结尾。

    <servlet-mapping>

               <servlet-name>MyName</servlet>

               <url-pattern>*.do</url-pattern>

    </servlet-mapping>

     

    <servlet-mapping>

                 <servlet-name>MyName</servlet-name>

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

    </servlet-mapping>

  7. 映射匹配举例

对于如下的一些映射关系:

√  servlet1 映射到 /abc/*

扫描二维码关注公众号,回复: 2729380 查看本文章

√  servlet2 映射到 /*

√  servlet3 映射到 /abc

√  servlet4 映射到 *.do

问题:

√  当请求URL为"/abc/a.html","/abc/*" 和 "/*" 都匹配,哪个servlet响应

     servlet引擎将调用servlet1。

√  当请求URL为"/abc"时,"/abc/*" 和 "/abc"都匹配,哪个servlet响应

     servlet引擎将调用servlet3。

√  当请求URL为"/abc/a.do"时,"/abc/*" 和 "*.do"都匹配,哪个servlet响应

     servlet引擎将调用servlet1。

√  当请求URL为"/a.do"时,"/*" 和 "*.do"都匹配,哪个servlet响应

     servlet引擎将调用servlet2。

√  当请求URL为"/xxx/yyy/a.do"时,"/*" 和 "*.do"都匹配,哪个servlet响应

     servlet引擎将调用servlet2。

总结:

√  优先级:完全匹配 > 目录匹配 > 扩展名匹配

猜你喜欢

转载自blog.csdn.net/Ada_yangyang/article/details/81603375