过滤器映射 URL 模式 *.action 不起作用 struts2
Posted
技术标签:
【中文标题】过滤器映射 URL 模式 *.action 不起作用 struts2【英文标题】:Filter mapping Url pattern *.action not working 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] 关联。
【问题讨论】:
见***.com/q/12672569/1700321。 Error 404 on using servlets with struts 2的可能重复 【参考方案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
【讨论】:
以上是关于过滤器映射 URL 模式 *.action 不起作用 struts2的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Jetty 中的 /* 上映射 servlet 过滤器?
如何创建 JSF 过滤器/url 模式来保护 javascript