美文网首页
Servlet 3.0 之映射请求到Servlets

Servlet 3.0 之映射请求到Servlets

作者: Lucky_Micky | 来源:发表于2016-03-01 21:23 被阅读160次

    本章描述的映射技术被用来为Web容器,把客户端请求映射到servlets。

    1. URL路径的使用
      当接收到一个客户端请求时,Web容器决定转发到哪个Web应用。被选择的Web应用必须有匹配请求URL开头的最长路径。当映射到servlets时,URL匹配的部分是上下文路径。

    Web容器接着必须使用路径映射过程来定位到一个servlet去处理请求。下面的URL路径匹配规则按顺序使用。第一个成功匹配的servlet将会被使用,后面会停止匹配过程:

    1. 容器将尝试找到一个与servlet路径对应的请求路径的精确匹配。一个成功的匹配会选择这个servlet。
    2. 容器将会递归尝试匹配最长的前缀路径。这通过依次匹配一个目录的路径树来完成,并且使用"/"字符作为路径分隔符。最长的匹配将会决定被选中的servlet。
    3. 如果URL路径中的最后一段包含一个扩展名,如".jsp",servlet容器将会为这个扩展名匹配一个处理请求的servlet。
    4. 如果上述三个规则都没有找到一个servlet匹配,容器将会尝试为请求的资源提供合适的内容。如果为一个应用定义了一个默认servlet,它将会被使用。很多容器提供一个隐式的默认servlet来提供内容。
      容器必须为匹配使用大小写敏感的字符串比较。
    5. 映射详情

    在Web应用部署描述符中,下列语法被用来定义映射:

    • 以'/'字符开头的以及以'/*'后缀结尾的字符串被用来做路径匹配。
    • 以一个'*.'前缀开始的字符串被用做一个扩展名映射。
    • 空字符串("")是一个特殊的URL模式,它会映射到应用的上下文根路径。比如请求格式:http://host:port/<context-root>/。这个例子中,路径信息是'/',并且servlet路径和上下文路径是空串("")。
    • 一个仅包含'/'字符的字符串表示应用的默认servlet。这个例子中,servlet路径是请求URI减去上下文路径,并且路径信息为null。
    • 所有其它字符串仅被用做精确匹配。
    • 1. 隐式映射
      如果容器有一个内部JSP容器,.jsp扩展名会被映射到这个JSP容器,允许JSP页面按需被执行。这种映射称之为隐式映射。如果一个*.jsp映射被Web应用定义,那么它的映射优先于隐式映射。
      只要显示映射有最高优先级,一个servlet容器被允许来创建其它隐式映射。比如,*.shtml的隐式映射能够在服务器上被映射到include功能。
    • 2. 映射集合例子
      映射集合
      需要注意,在例子/catalog/index.html/catalog/racecar.bop中,映射到/catalog的servlet并不会被使用,因为映射并不精确。

    翻译自 Java Servlet Specification
    Version 3.0 Rev a
    Author:Rajiv Mordani
    Date: December 2010

    相关文章

      网友评论

          本文标题:Servlet 3.0 之映射请求到Servlets

          本文链接:https://www.haomeiwen.com/subject/xkrwkttx.html