映射请求到 Servlet

url如何映射到servlet

          在收到客户端请求时候,web容器会确定转发到哪一个servlet.而如何匹配呢?

1、当映射到servlet时候,url匹配的是去掉请求参数和上下文路径部分(也就是网站跟路径www.xxx.com/youproject)

2、规则,以下按顺序使用,如果匹配成功一个后,将不再匹配

       2.1 精确的匹配servlte

             如 url是/c2  servlte为/c2

      2.2 路径最长匹配,不断的遍历树(/为分割路径成为树)。以最长符合的为标准

             如url为/c2/c, servlte1为/c2/* servlte2为/c2/c  会匹配到servlte2 而url为/c2 则匹配到servlte1

      2.3 当url有后缀(.jsp),那么容器会匹配包含.后缀的servlte

            如url是/c2.jsp   servlte1为/c2.jsp  servlte2为*.jsp  会优先匹配到servlte1。

            如url是根目录,servlte为*.jsp,web.xml中设置了

<welcome-file-list>
        <welcome-file>login.jsp</welcome-file>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

那么匹配到的是servlte,访问跟目录是去访问index.jsp,但是servlte是匹配后缀的。所以还是访问servlte,这也说明了隐试访问

      2.4 如果上述都没有匹配成功,如果应用设置一个默认的servlet,将会调用它(一般是默认错误404页面,如果是定义了/的servlte就是它)。

匹配是区分大小写的

3、映射规范
        3.1以‘
/’开始、以‘/*’是路径匹配。
        3.2以‘
*.’扩展名映射。       
        3.4其他形式仅用于精确匹配。

servlte设定的url不能重复,否则会无法部署。

隐式映射

如果容器有一个内部的 JSP 容器, *.jsp 扩展名映射到它,允许执行JSP页面的要求。该映射被称为隐式映射。如果Web应用定义了一个*.jsp映射,它的优先级高于隐式映射。
参考资料:
http://jinnianshilongnian.iteye.com/blog/1775987


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值