栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

web.xml中的Servlet URL映射如何使用?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

web.xml中的Servlet URL映射如何使用?

从Servlet 3.0
规范开始,这是Web容器在收到请求后必须定位servlet的方式(重点是我的):

用于映射到servlet的路径是来自请求对象的请求URL减去上下文路径和路径参数。以下URL路径映射规则按顺序使用。
使用第一个成功的匹配,不尝试其他匹配

  1. 容器将尝试查找请求路径与Servlet路径的精确匹配。成功匹配将选择servlet。
  2. 容器将递归地尝试匹配最长的路径前缀。 这是通过使用“
    /”字符作为路径分隔符,一次将路径树下移到一个目录来完成的。最长的匹配确定所选的servlet。

    3.
    如果URL路径中的最后一个段包含扩展名(例如.jsp),则servlet容器将尝试匹配处理该扩展名请求的servlet。扩展名定义为最后一个段之后的最后一个段的一部分。字符。
  3. 如果前三个规则均未导致servlet匹配,则容器将尝试提供适合于所请求资源的内容。如果为应用程序定义了“默认”
    servlet,则将使用它。许多容器提供了一个隐式默认servlet来提供内容。

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

您还应该查看映射的规范(如下所示):

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

  • 以字符开头

    ‘/’
    并以
    ‘/*’
    后缀结尾的字符串用于路径映射。

  • ‘*.’
    前缀开头的字符串用作扩展名映射。

  • 空字符串

    ("")
    是一种特殊的URL模式,它精确地映射到应用程序的上下文根,即形式的请求
    http://host:port/<contextroot>/
    。在这种情况下,路径信息为
    ’/’
    ,而servlet路径和上下文路径为空字符串
    (““)

  • 仅包含

    ’/’
    字符的字符串表示应用程序的“默认”
    servlet。在这种情况下,Servlet路径是请求URI减去上下文路径,并且路径信息为null。

  • 所有其他字符串仅用于完全匹配

现在让我们来看一些例子。考虑以下一组映射:

路径模式Servlet/ foo / bar / * servlet1/ baz / * servlet2/目录servlet3* .bop servlet4

将导致以下行为:

传入路径Servlet处理请求/foo/bar/index.html servlet1/foo/bar/index.bop servlet1/ baz servlet2/baz/index.html servlet2/目录servlet3/catalog/index.html“默认” servlet/catalog/racecar.bop servlet4/index.bop servlet4

请注意,在的情况下

/catalog/index.html
/catalog/racecar.bop
,该servlet映射到
“/catalog”
不使用,因为并不是完全配对。

现在遇到您的问题了:)

/path/test
属于映射规范的第5点。这意味着只有以结尾的路径才是
/path/test
target
servlet1

但是

/path/test/*
符合相同规范的第一点。这意味着:

.../path/test
将处理
servlet1

.../path/test/abc
将由
servlet2

我在测试应用程序中对此进行了验证。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/485953.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号