struts2 ,web.xml中配置為/*.action,運行報錯Invalid /*.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攔截器到底攔截什么請求的問題,


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM