首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Web.xml: url-pattern标签是相对的吗?

Web.xml: url-pattern标签是相对的吗?
EN

Stack Overflow用户
提问于 2010-04-26 23:37:25
回答 3查看 5.9K关注 0票数 3
代码语言:javascript
复制
   <servlet-mapping>
      <servlet-name>myName</servlet-name>
      <url-pattern>/aName</url-pattern>
   </servlet-mapping>

    <security-constraint>

            <web-resource-collection>

                    ...

                    <url-pattern>
                            /*
                    </url-pattern>

            </web-resource-collection>

             ...

    </security-constraint>

这是web.xml的摘录(使用它来配置jboss/tomcat This服务)。我只是想知道web-resource-collection中的url-pattern是否与servlet-mapping中的url-pattern相关。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-05-01 04:57:14

用于为给定请求选择约束的url-pattern与任何内容都无关。这里的Servlet规范的有趣部分是:

SRV.12.8.3处理请求

当Servlet容器接收到请求时,它将使用SRV.11.1中描述的算法来选择在url-pattern上定义的与请求URI最匹配的约束(如果有的话)。如果没有选择约束,容器将接受该请求。否则,容器将确定请求的HTTP方法是否受所选模式的约束。如果不是,则接受该请求。否则,请求必须满足在url-pattern处应用于http-method的约束。要接受请求并将其分派到关联的servlet,必须同时满足以下两个规则。

和:

SRV.11.1使用URL路径

在接收到客户端请求时,Web容器确定要将其转发到的Web应用程序。选定的Web应用程序必须具有与请求URL的开头匹配的最长上下文路径。URL的匹配部分是映射到servlet时的上下文路径。

接下来,Web容器必须使用下面描述的路径映射过程定位servlet以处理请求。

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

servlet

  • 容器将尝试查找请求路径与servlet路径的完全匹配。如果匹配成功,将选择servlet。

  • 容器将递归地尝试匹配最长的路径前缀。这是通过使用‘/’字符作为路径分隔符,一次将路径树下移到一个目录中来完成的。最长的匹配项确定所选的servlet。

  • 如果URL路径中的最后一段包含扩展名(例如.jsp),servlet容器将尝试匹配处理该扩展名请求的servlet。扩展名被定义为最后一个段中最后一个‘.’之后的部分

  • 如果前面三个规则都不匹配servlet,则容器将尝试提供适合所请求资源的内容。如果为应用程序定义了“默认”servlet,则将使用它。

SRV.11.2映射规范

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

  • 以‘/’字符开头、以‘/*’后缀结尾的字符串用于路径映射。
  • 以‘*’开头的字符串前缀用作扩展映射。
  • 仅包含‘/’字符的字符串表示应用程序的“默认”servlet。在这种情况下,servlet路径是请求URI减去上下文路径,路径信息为null。
  • 所有其他字符串仅用于完全匹配。
票数 6
EN

Stack Overflow用户

发布于 2010-04-28 00:09:52

对于我来说,security-constraint/web-resource-collection/url-pattern相对于servlet映射/url模式是而不是是有意义的,原因如下:在web.xml中可以有几个servlet映射元素,在这种情况下,不清楚采用哪个servlet映射/url模式来解析相对URI。(只是猜测-我还没有在tomcat中使用安全约束)。

票数 5
EN

Stack Overflow用户

发布于 2010-04-29 00:38:04

不,它们不是相对的;没有办法将给定的servlet映射绑定到安全约束。两者都应用于给定的URL模式,安全约束也只能应用于特定的HTTP方法(GET、POST等)所以它们是相当独立的。

这两个元素都在Servlet specification中定义和描述。您可能想要阅读SRV.12.8节关于安全性的内容,以及关于url-pattern元素的详细信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2714726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档