Reading – Java™ Servlet Specification Version 2.4 – Mapping Requests to Servlets

Use of URL Paths

当 Web container 接到请求后, 首先确定将这个请求 forward 给哪个 Web application. 首先确定这个 Web application 的 context path 与 request URL 开始部分相匹配. URL 中相匹配的部分就是 context path.
Web container 接下来必须定位由哪个 servlet 来处理这个 request, 使用如下描述的 path mapping 步骤. 用于映射到一个 servlet 的 path 是 request URL 减去 context path 和 path parameters. 下面的 URL path mapping rules 要按顺序进行. 第一个成功匹配的 servlet 将用于请求处理, 而不会继续进行匹配:

  1. container 会尝试将 request path 与 servlet path 进行精确匹配. 如果成功, 那么就选择这个 servlet.
  2. container 会递归尝试匹配最长路径前缀(path-prefix). 使用 ’/’ 作为路径分隔符, 每次去掉 path tree 上的一个路径, 进行匹配. 具有最长长度的那次匹配所选择的 servlet 用来处理请求.
  3. 如果 URL path 尾部包含一个 extension (e.g. .jsp), servlet container 会尝试匹配是否有这样的 servlet 用来处理带有这种扩展的请求.
  4. 如果前 3 步都没有 servlet 匹配成功, container 会尝试为该请求提供合适内容(the container will attempt to serve content appropriate for the resource requested). 如果为该 application 定义了 “default” servlet, 那么就会使用这个 servlet.

进行匹配时, container 必须对字符串进行大小写敏感比较.

Specification of Mappings

在 Web application 部署描述中, 可使用下面这些句法定义 mappings:

Implicit Mappings

如果 container 具有 JSP container, *.jsp 扩展用于映射 JSP, 允许 JSP pages 按需要执行. 这种映射叫做 implicit mapping. 如果 Web application 定义了一个 *.jsp mapping, 这个 mapping 优先于 implicit mapping.
servlet container 也可做其它 implicit mappings, 只要能让 explicit mappings 优先即可.

By javafuns on January 10, 2009 at 22:08 · Views: 966 · Permalink · RSS
Categorized in: Java · Tagged with: ,
1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

One Response

Subscribe to comments via RSS

  1. Written by 电影家有喜事2009
    on 2009/01/12 at 23:05
    Reply · Permalink

    说真的…完全看不懂

Subscribe to comments via RSS

Leave a Reply


  • Highest Rated

  • My PicasaPhotos

    IMG_0650.JPG

    IMG_0876.JPG

    IMG_0621.JPG

  • RSS My del.icio.us

  • My RSS