0

在 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 时,它显示为

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

4

2 回答 2

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 排除模式不起作用

于 2014-03-20T13:38:56.687 回答
0

利用:

<url-pattern>*.action</url-pattern>
于 2014-03-17T09:11:58.940 回答