【问题标题】:Filter mapping Url pattern *.action not working struts2过滤器映射 URL 模式 *.action 不起作用 struts2
【发布时间】:2014-04-22 10:03:34
【问题描述】:

在 struts2 web.xml 应用程序中,我有过滤器和 servlet

web.xml

...
<servlet>
        <servlet-name>SchServlet</servlet-name>
        <servlet-class>com.vk.translate.report.SchServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>SchServlet</servlet-name>
        <url-pattern>/SchServlet</url-pattern>
    </servlet-mapping>
...

<filter>
        <filter-name>struts</filter-name> 
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
        <!-- <init-param> <param-name>actionPackages</param-name> <param-value>com.mycompany.myapp.actions</param-v2alue> 
            </init-param> -->
    </filter>
    <filter-mapping>
        <filter-name>struts</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

...

在调用 servlet 时,它将请求映射为操作,因为 Filer Url 模式为

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

我尝试将其修改为

 <url-pattern>/*.action</url-pattern>

它显示错误。请帮助我如何调用 servlet。

<url-pattern>/SchServlet</url-pattern>

在这种情况下,当调用它显示为的 servlet 时

没有为命名空间 [/] 和操作名称映射的操作 [SchServlet] 与上下文路径 [/TranslateApp] 关联。

【问题讨论】:

标签: struts2 web.xml servlet-filters url-pattern action-mapping


【解决方案1】:

用途:

<url-pattern>*.action</url-pattern>

【讨论】:

  • 得到这个错误“Servlet failed with Exception The Struts dispatcher can be found. 这通常是由于使用没有关联过滤器的 Struts 标签造成的。只有当请求通过其 servlet 过滤器时,Struts 标签才可用,它初始化此标签所需的 Struts 调度程序。- [未知位置]"
  • 您是否点击了如下网址:http://domain.com/something.action?您点击的 url 必须与模式匹配才能调用 struts servlet。
  • 不,我无法登录应用程序,我在欢迎页面本身出现此错误http://domain.com/welcome
【解决方案2】:

这个成功了

在 struts.xml 中

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

在 web.xml 中

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

    </filter>
    <filter-mapping>
        <filter-name>struts</filter-name>
        <url-pattern>*.action</url-pattern>
    </filter-mapping>

    <servlet>
        <servlet-name>SchServlet</servlet-name>
        <servlet-class>com.vk.translate.report.SchServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>SchServlet</servlet-name>
        <url-pattern>/SchServlet</url-pattern>
    </servlet-mapping>

参考: Struts2 exclude pattern not working

【讨论】:

    猜你喜欢
    • 2019-03-06
    • 1970-01-01
    • 2011-05-24
    • 2011-04-10
    • 2011-03-28
    • 2023-03-22
    • 2011-05-11
    • 2020-05-31
    • 1970-01-01
    相关资源
    最近更新 更多