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,问题解决。

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

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

(0)
上一篇 2021年9月26日 下午6:00
下一篇 2021年9月26日 下午7:00


相关推荐

  • linux下查看计划任务,linux查看计划任务.docx

    linux下查看计划任务,linux查看计划任务.docxlinux查看计划任务实验案列:管理进程及设置计划任务需求:管理系统中进程  设置计划运行的系统管理任务步骤:  1管理系统中地进程  启动系统中portmap服务,确认服务运行状态,通过ps或pgrep命令查看portmap的进程信息  Ps:查看静态的进程统计信息,a:显示当前终端下的所有进程信息,u:使用以用户为主的格式输出进程信息,x:显示当前用户在所有终端下的进程信息,-e:显示系统内的…

    2022年7月15日
    16
  • Coreseek:部门查询和增量索引代替实时索引

    Coreseek:部门查询和增量索引代替实时索引

    2021年12月31日
    50
  • 简单模拟mybatis的MapperScan

    简单模拟mybatis的MapperScan一、问题描述在mybatis中,mapper通常是一个接口,但是我们却可以直接通过这个接口调用方法。按道理来说接口是不能直接调用方法的,只有实现类才能调用接口。但在下面的代码中,我们直接调用applicationContext.getBean(TestMapper.class).list(“”),就可以查询我们的数据库。也就是说applicationContext.getBean(TestMa…

    2022年5月6日
    73
  • 阿里通义千问:多个产品升级,Qwen-Image图片编辑模型即将上线

    阿里通义千问:多个产品升级,Qwen-Image图片编辑模型即将上线

    2026年3月13日
    1
  • .pkl文件怎么打开_python pkl文件

    .pkl文件怎么打开_python pkl文件1.show_pkl.py:#show_pkl.pyimportpicklepath=’aus_openface.pkl’#path=’/root/……/aus_openface.pkl’pkl文件所在路径 f=open(path,’rb’)data=pickle.load(f)print(data)print(len(data))2.运行命令…

    2025年10月15日
    3
  • recvfrom error 10022

    recvfrom error 10022http://blog.sina.com.cn/s/blog_6ffee9410100pqdt.html折腾了一个下午加大半个晚上,查了300多个网页,20多个技术论坛,终于把这个问题解决了,真不容易。总结下出现这个错误的一般原因和我出错的原因。出现这个错误的一般原因:1.fromlen参数没有初始化2.from参数没有设置正确,也就是结构问题3.参

    2022年7月23日
    12

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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