zoukankan      html  css  js  c++  java
  • struts2 ,web.xml中配置为/*.action,运行报错Invalid <url-pattern> /*.action in filter mapp

    首先,修改成:

    <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拦截器到底拦截什么请求的问题,

  • 相关阅读:
    Codeforces VK Cup 2015 A.And Yet Another Bracket Sequence(后缀数组+平衡树+字符串)
    Tensorflow框架初尝试————搭建卷积神经网络做MNIST问题
    TopCoder代码格式模板
    TopCoder[SRM513 DIV 1]:PerfectMemory(500)
    TopCoder[SRM513 DIV 1]:Reflections(1000)
    LCT模板
    FWT模板
    BZOJ2752:[HAOI2012]高速公路(road)
    BZOJ3332:旧试题
    BZOJ3171:[TJOI2013]循环格
  • 原文地址:https://www.cnblogs.com/wql025/p/5095574.html
Copyright © 2011-2022 走看看