码迷,mamicode.com
首页 > 移动开发 > 详细

struts2 ,web.xml中配置为/*.action,运行报错Invalid <url-pattern> /*.action in filter mapp

时间:2016-01-03 00:34:18      阅读:319      评论:0      收藏:0      [点我收藏+]

标签:

首先,修改成:

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

是可以的。

引起此错误的原因如下:

这个对filter的基础知识的理解:容器只认 全名匹配,路径匹配,扩展名匹配.
/*.action  又是路径匹配,有时扩展名匹配. 容器没办法区分

 

解决方法:写*.action

    <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>*.action</url-pattern>
    </filter-mapping>

 

如果改为这样的话,如果某些页面使用了struts2的标签的话,运行时是会报错,说是<url-pattern>*.action</url-pattern>配置的不对,那么采用以下某网友提供的方法:

由于你使用标签的时候访问的是*.jsp页面,访问的时候用到标签也要使用到struts2的包,所以你的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>*.action</url-pattern>
  </filter-mapping>
  <filter>
<filter-name>struts3</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
   <filter-name>struts3</filter-name>
   <url-pattern>*.jsp</url-pattern>
</filter-mapping>
就是把*.jsp的请求也用struts2拦截掉,这样就不会出错了。这个问题不是标签问题,是struts2拦截器到底拦截什么请求的问题,

struts2 ,web.xml中配置为/*.action,运行报错Invalid <url-pattern> /*.action in filter mapp

标签:

原文地址:http://www.cnblogs.com/wql025/p/5095574.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!