gpt4 book ai didi

java - 将过滤器映射到 Tomcat7 中 webapp 的上下文根

转载 作者:行者123 更新时间:2023-12-02 06:54:04 31 4
gpt4 key购买 nike

我正在制作一个小型网络应用程序(这可能被视为一项单一任务)。我的工具是java7,tomcat7.0.40。

我有一个过滤器,称为 FlowFilter。以下是 web.xml 中 FlowFilter 的定义和映射:

<filter>
<filter-name>FlowFilter</filter-name>
<filter-class>path.to.filter.FlowFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>FlowFilter</filter-name>
<url-pattern></url-pattern>
<url-pattern>*.flow</url-pattern>
<url-pattern>*.request</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>ERROR</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>

我的 web 应用程序根目录位于:http://[host]/mywebapp 。

我还有一个通过 web.xml 配置的欢迎文件:

<welcome-file-list>
<welcome-file>jsp/index.jsp</welcome-file>
</welcome-file-list>

从映射中可以看出,我需要 FlowFilter 在以下 3 种情况下准确执行:

  1. 当请求以“.flow”结尾时
  2. 当请求以“.request”结尾时
  3. 当我访问 http://[host]/mywebapp(“”映射)时。

问题是在第三种情况下从未调用 FlowFilter。

正如我在 servlet-3 规范、12.2 和 6.2.4 中所读到的,url 模式规则适用于过滤器。

但是当我调试 Tomcat 的 ApplicationFilterFactory.matchFiltersURL 时,过滤器的 url 模式永远不会与“”映射匹配。

问题是:是不是只有 Tomcat 还没有实现这样的功能,还是我误读了规范,或者我以错误的方式映射了过滤器,以及为什么。

谢谢。

最佳答案

如果您定义了<welcome-file-list>这个will beat the filter .

您可以删除 <welcome-file-list>并在应用过滤规则后自行重定向。并尝试使用<url-pattern>/</url-pattern>用于匹配上下文根。

另请参阅this answer .

关于java - 将过滤器映射到 Tomcat7 中 webapp 的上下文根,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17630307/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com