Servlet的映射路径剖析

-------------------------------- Servlet的映射路径剖析-------------------------------

Servlet 路径映射

关于Url-Pattern的配置:

  1. 1.完全路径匹配  以/开头    例如  /aaa   /aaa/bbb 
  2. 2.目录匹配           以/开头     例如  /aaa/*   /*
  3. 3.扩展名匹配 不能以/开头   例如  *.do   *.action  ....

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

       经典错误:  /*.do

举例:

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

  1. Servlet1 映射到 /abc/*
  2. Servlet2 映射到 /*
  3. Servlet3 映射到 /abc
  4. Servlet4 映射到 *.do

问题:

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

       Servlet引擎将调用Servlet1。同样是目录匹配所限定范围更精确的先匹配

  1. 当请求URL为“/abc”时,“/abc/*”和“/abc”都匹配,哪个servlet响应

       Servlet引擎将调用Servlet3。

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

       Servlet引擎将调用Servlet1

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

       Servlet引擎将调用Servlet2.

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

       Servlet引擎将调用Servlet2。

                            * 服务器端路径           /demo4  (转发、包含...)

 

代码示例:

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">

  <servlet>

    <servlet-name>ServletDme01</servlet-name>

    <servlet-class>com.rl.servlet.ServletDme01</servlet-class>

  </servlet>

 

  <servlet-mapping>

    <servlet-name>ServletDme01</servlet-name>

    <!--

            完全路径匹配

    <url-pattern>/servlet/ServletDme01</url-pattern>

             目录匹配

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

             目录全匹配

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

             后缀名匹配

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

     -->

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

  </servlet-mapping>

 

  <servlet>

    <servlet-name>ServletDme2</servlet-name>

    <servlet-class>com.rl.servlet.ServletDme2</servlet-class>

  </servlet>

 

  <servlet-mapping>

    <servlet-name>ServletDme2</servlet-name>

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

  </servlet-mapping>

</web-app>

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值