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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • EasyCVR通过Ehome协议接入部分设备显示离线排查报告

    EasyCVR通过Ehome协议接入部分设备显示离线排查报告对于需要将不同视频协议做融合的项目,我们一般都是建议大家选用EasyCVR视频平台,EasyCVR支持多种协议的视频接入,对于通用的第三方协议,我们支持了海康的Ehome和GB28181的国标协议。EasyCVR视频网关平台接入的部分Ehome设备显示离线,可以从下图中看到,除了通过HIKSDK接入的设备外,通过Ehome接入的设备全部离线:可见离线的部分设备都是Ehome协议接入,Ehome设备为主动注册类型,判断设备是否真实在线的方法一般为抓取对应对端口7660的包,或者是在海康sdk的回调

    2022年10月28日
    0
  • 在IDEA中实战Git「建议收藏」

    在IDEA中实战Git「建议收藏」工作中多人使用版本控制软件协作开发,常见的应用场景归纳如下:假设小组中有两个人,组长小张,组员小袁场景一:小张创建项目并提交到远程Git仓库场景二:小袁从远程Git仓库上获取项目源码场景三:小袁修改了部分源码,提交到远程仓库场景四:小张从远程仓库获取小袁的提交场景五:小袁接受了一个新功能的任务,创建了一个分支并在分支上开发场景六:小袁把分支提交到远程Git仓库场景七…

    2022年6月29日
    36
  • docker入门(三):容器数据卷与DockerFile脚本,使用阿里云镜像仓库[通俗易懂]

    docker入门(三):容器数据卷与DockerFile脚本,使用阿里云镜像仓库[通俗易懂]一、容器数据卷用于数据保存和持久化,简单的理解,就是容器和主机共享的一个公共硬盘,举个例子,原本tomcat部署应用,或者查看日志还需要进入容器,现在将日志文件夹和部署文件夹拿出来挂载到主机,就可以

    2022年8月16日
    6
  • UFT12的破解方法和UFT11.5一致

    UFT12的破解方法和UFT11.5一致UFT12的破解方法和UFT11.5一致,不能永久破解,只能试用30天后重新破解。 方法:1.删除C:\ProgramData隐藏目录下的SafeNetSentinel文件夹2.运行QTP安装目录下的bin\instdemo.exe3.重新运行QTP/UFT12后即可恢复30天试用

    2022年5月8日
    117
  • [LeetCode][Java] 3Sum Closest「建议收藏」

    [LeetCode][Java] 3Sum Closest

    2022年1月24日
    40
  • kafka php使用_PHP环境搭建推荐

    kafka php使用_PHP环境搭建推荐1. 下载二进制版本http://kafka.apache.org/downloads.html kafka_2.10-0.10.0.1.tgz 解压到 /home/deploy/tar/kafka_2.10-0.10.0.1  2.启动./bin/zookeeper-server-start.sh-daemonconfig/zookeeper.properties…

    2022年9月22日
    0

发表回复

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

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