Servlet3.1规范翻译——映射请求到Servlet

《Servlet3.1规范》翻译目录 

映射请求到Servlet

 

Web容器需要本章描述的映射技术去映射客户端请求到Servlet(该规范2.5以前的版本,使用这些映射技术是作为一个建议而不是要求,允许servlet容器各有其不同的schema用于映射客户端请求到servlet)。

12.1 使用URL路径

在收到客户端请求时,web容器确定转发到哪一个Web应用。选择的Web应用必须具有最长的上下文路径匹配请求URL的开始。当映射到Servlet时,URL匹配的一部分是上下文。

Web容器接下来必须用下面描述的路径匹配步骤找出servlet来处理请求。

用于映射到Servlet的路径是请求对象的请求URL减去上下文和路径参数部分。下面的URL路径映射规则按顺序使用。使用第一个匹配成功的且不会进一步尝试匹配:

1. 容器将尝试找到一个请求路径到servlet路径的精确匹配。成功匹配则选择该servlet。

2. 容器将递归地尝试匹配最长路径前缀。这是通过一次一个目录的遍历路径树完成的,使用‘/’字符作为路径分隔符。最长匹配确定选择的servlet。

3. 如果URL最后一部分包含一个扩展名(如 .jsp),servlet容器将视图匹配为扩展名处理请求的Servlet。扩展名定义在最后一部分的最后一个‘.’字符之后。

4. 如果前三个规则都没有产生一个servlet匹配,容器将试图为请求资源提供相关的内容。如果应用中定义了一个“default”servlet,它将被使用。许多容器提供了一种隐式的default servlet用于提供内容。

容器必须使用区分大小写字符串比较匹配。

12.2 映射规范

在web应用部署描述符中,以下语法用于定义映射:

■ 以‘/’字符开始、以‘/*’后缀结尾的字符串用于路径匹配。

■ 以‘*.’开始的字符串用于扩展名映射。

■ 空字符串“”是一个特殊的URL模式,其精确映射到应用的上下文根,即,http://host:port/<context-root>/请求形式。在这种情况下,路径信息是‘/’且servlet路径和上下文路径是空字符串(“”)。

■ 只包含“/”字符的字符串表示应用的“default”servlet。在这种情况下,servlet路径是请求URL减去上下文路径且路径信息是null。

■ 所以其他字符串仅用于精确匹配。

12.2.1 隐式映射

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

Servlet容器允许进行其他的隐式映射,只要显示映射的优先。例如,一个*.shtml隐式映射可以映射到包含在服务器上的功能。

12.2.2 示例映射集合

请看下面的一组映射:

表 12-1  示例映射集合

Path Pattern

Servlet

/foo/bar/*

servlet1

/baz/*

servlet2

/catalog

servlet3

*.bop

servlet4

 

将产生以下行为:

表 12-2  传入路径应用于示例映射

Incoming Path

Servlet Handling Request

/foo/bar/index.html

servlet1

/foo/bar/index.bop

servlet1

/baz

servlet2

/baz/index.html

servlet2

/catalog

servlet3

/catalog/index.html

“default” servlet

/catalog/racecar.bop

servlet4

/index.bop

servlet4

 

请注意,在/catalog/index.html和/catalog/racecar.bop的情况下,不使用映射到“/catalog”的servlet,因为不是精确匹配的。


转载于:https://my.oschina.net/u/2372094/blog/417813

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值