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


相关推荐

  • mt4编程语言 c语言,MT4编程之MQL4编程语言介绍[通俗易懂]

    mt4编程语言 c语言,MT4编程之MQL4编程语言介绍[通俗易懂]语言介绍MetaQuotesLanguage4(MQL4)是一种新的内置型程序用来编写交易策略。这种语言可以创建你自己的智能交易,使自己的交易策略能够完全自动地执行。而且,MQL4还能自定义客户指标,脚本和数据库。内包含了大量可以分析当前及历史报价所必须的函数,以及一些基本的运算和逻辑操作。并内置了一些基本的指标和操作命令。MetaEditor4集合了编写MQL4程序代码的各种语句,它…

    2022年5月15日
    39
  • 全局莫兰指数_空间自相关 | 莫兰指数

    全局莫兰指数_空间自相关 | 莫兰指数空间自相关:是指一些变量在同一个分布区内的观测数据之间潜在的相互依赖性。其中,自相关中的“自”表示当你进行相关性观察统计量,是来源于不同对象的同一属性。Tobler(1970)曾指出“地理学第一定律:任何东西与别的东西之间都是相关的,但近处的东西比远处的东西相关性更强”。空间自相关统计量是用于度量地理数据(geographicdata)的一个基本性质:某位置上的数据与其他位置上的数据间…

    2022年6月25日
    61
  • 软件测试方法分类

    软件测试方法分类软件测试方法按各种类划分为 一 按开发阶段划分单元测试 模块测试 单元测试是对软件组成的单元进行测试 其目的是检验软件基本组成单位的正确性 TDD 测试驱动开发 开发人员先不写代码 测试人员先写测试用例 开发人员根据测试用例写代码测试阶段 编码后或者编码前 TDD 测试对象 最小模块 测试人员 白盒测试工程师或者开发工程师 测试依据 代码和注释 详细设计文档

    2025年7月8日
    2
  • json序列化和反序列化方法(数据整理常用的三种方式)

    以下内容是本作者从官网中看相应的教程后所做的demo,其体现了作者对相关知识点的个人理解。。作者才疏学浅,难免会有理解不到位的地方。。还请各位读者批判性对待。。。      本文主要介绍在Json数据的序列化与反序列化的过程中我经常用到的三种工具的基本使用方法,及其他们之间的比较。。。希望能够对读者们有一些帮助。。。这里介绍到的三种解析与生成Json数据的方法分别是:

    2022年4月16日
    27
  • Spring Boot热部署-JRebel

    Spring Boot热部署-JRebel

    2021年5月16日
    170
  • MySql的root密码忘记该怎么找回

    MySql的root密码忘记该怎么找回Windows下如果MySQL密码忘记了root密码导致无法登录,如下图所示,这个时候怎么办,只能重置root密码了。1.打开任务管理器查看MySql服务是否启动,如果已启动则先将其停止2.找到MySql目录下的my.ini文件3.打开该文件,找到里面的[mysqld],然后在这个下面添加skip-grant-tables,添加完后保存文件4.重新进到任务管理器将…

    2022年6月17日
    26

发表回复

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

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