Struts2的2.5.10版本找不到StrutsPrepareAndExecuteFilter过滤器 与 struts.xml文件通配符异常问题

Struts2的2.5.10版本找不到StrutsPrepareAndExecuteFilter过滤器 与 struts.xml文件通配符异常问题

一、异常描述:

今天在整合ssh的时候,在配置Struts2框架之后,启动之后,项目报错抛异常:主要异常信息如下:

java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:532)
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:514)
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:142)
    at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:260)
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:107)
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4775)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5452)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

二、异常分析:

从异常信息来看,出现的问题是找不到struts2的过滤器。

经过排查,原来,以前依赖的Struts2的jar包版本是2.3.24,而现在依赖的版本被我升级成2.5.10。这两个版本的struts2的过滤器所在位置是不相同的,但是我仍然使用的是2.3.24的路径,因此才会出现该异常。

三、解决方法:

解决方法:修改web.xml文件中的struts2过滤器的路径:

1、在struts2-core-2.3.24.jar中,struts2过滤器的配置为:

<!-- 配置strut2过滤器  版本2.3.24 -->
<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>/*</url-pattern>
</filter-mapping>

2、在struts2-core-2.5.10.1.jar中,struts2过滤器的配置应该改为:

<!-- 配置strut2过滤器  版本2.5.10.1-->
<filter>
	<filter-name>struts2</filter-name>
	<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
	</filter>
<filter-mapping>
	<filter-name>struts2</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>

重新启动项目,异常解决。

 

四、struts2-core-2.5.10.1版本的另一个问题:

当在struts.xml文件中配置使用通配符方式访问action的时候,出现了以下404错误。

Struts2的2.5.10版本找不到StrutsPrepareAndExecuteFilter过滤器 与 struts.xml文件通配符异常问题

 查看该action,发现该action里面的方法确实存在,但是为什么会出现404呢?

原因是在struts2-core-2.5.10.1版本中,默认不被开启通配符,因此需要我们手动配置开启。

配置代码如下:

<action name="customerAction_*" class="customerAction" method="{1}">
	<result name="success">/index.jsp</result>
	<!-- struts2 2.5.10默认不使用通配符 使用下面代码开启 -->
	<allowed-methods>regex:.*</allowed-methods>
</action>

重启项目,访问该action,问题解决。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/114716.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • siamfc-pytorch代码讲解(三):demo&track

    siamfc-pytorch代码讲解(三):demo&track我之前的两篇博客:siamfc-pytorch代码讲解(一):backbone&headsiamfc-pytorch代码讲解(二):train&siamfc代码来自:https://github.com/huanglianghua/siamfc-pytorch今天主要看一下demo的部分,也就是涉及到测试tracking的部分。直接上代码:一、demo.pyfro…

  • java 构造函数是如何执行的「建议收藏」

    java 构造函数是如何执行的「建议收藏」1.构造函数不是方法!!  原因1:方法的话,会直接执行方法体内的代码,但是构造函数首先执行的不是{}里的代码块,而是给对象的成员初始化;      2.方法可以被调用其他方法调用,但是构造函数不能被方法或变量调用。  packagecom.statics.www;publicclassSon{//构造函数执行第二步:privateintnum2=

  • JVM简介

    JVM简介

  • Navicat 连接 MySQL「建议收藏」

    Navicat 连接 MySQL「建议收藏」简述Navicat是一套快速、可靠和全面的数据库管理工具,专门用于简化数据库管理和降低管理成本。Navicat图形界面直观,提供简便的管理方法,设计和操作MySQL、MariaDB、SQLServer、Oracle、PostgreSQL和SQLite的数据。在使用Navicat远程连接MySQL数据库时,经常会出现一些错误,今天我们来分享一下经验。|版权声明:一…

  • webAR涉及的技术「建议收藏」

    webAR涉及的技术「建议收藏」1.技术体系1.1技术体系整理其中绿色底色的代表Demo中表现出的能力比较成熟,可以直接应用。脑图地址:http://naotu.baidu.com/file/3392a895a90397252

  • pycharm2022.01.13专业版激活码【2022免费激活】

    (pycharm2022.01.13专业版激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号