除了一个 servlet 之外,过滤器映射到 Struts2 的所有内容?

Posted

技术标签:

【中文标题】除了一个 servlet 之外,过滤器映射到 Struts2 的所有内容?【英文标题】:Filter mapping for everything to Struts2 besides one servlet? 【发布时间】:2011-04-20 02:28:23 【问题描述】:

我有一个 Struts2 (2.1.8.1) Web 应用程序。我的 web.xml 看起来像,

  <filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>

  <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

这被配置为将所有请求映射到 struts 过滤器。我想在我的 Web 应用程序中添加一个 servlet。我想将具有特定 url 模式的所有请求发送到该 servlet。我希望其他所有内容都转到我的 struts servlet。

我知道我只能将“*.action”映射到 struts servlet,但我讨厌 .action 位于我所有 URL 的末尾。

【问题讨论】:

【参考方案1】:

在你的 struts.xml 添加:

<constant name="struts.action.excludePattern" value="/ServletToExcludeFromStruts*"/>

对于多个排除项,该值也以逗号分隔。见http://struts.apache.org/2.2.1/docs/webxml.html

【讨论】:

以上是关于除了一个 servlet 之外,过滤器映射到 Struts2 的所有内容?的主要内容,如果未能解决你的问题,请参考以下文章

Java Servlet - 将 servlet 映射到除字符串之外的每个 URL

除了在 web.xml 中声明过滤器之外,还有啥方法可以指定过滤器的顺序吗?

将 /xxx/yyy/zzz 动态映射到类 XxxYyyZzz.java 的 servlet 或过滤器

如何在 Jetty 中的 /* 上映射 servlet 过滤器?

Servlet 过滤器 - 识别被调用的 Servlet/JSP

如何过滤所有传入的请求,而不仅仅是映射到 servlet 的请求?