org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuterFilter not found

版权声明:欢迎转载评论~哈哈哈哈请标明出处呀 https://blog.csdn.net/legendaryhaha/article/details/89065484

Struts2报错


如标题所述,配置Struts2.3时报了这样的错误,踩了挺多坑的

解决办法

(1)网上最流行的解法是说:Struts2.5版本的web.xml配置中应该这样写:
在这里插入图片描述
而2.3是:

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

可是,我的Struts就是2.3的,查找后也确实存在该路径,最便捷的查找路径的办法,按ctrl点击filter-class中的类路径。

(2)上述方法不管用,考虑的是jar包冲突,因为自己除了引入Struts2的jar包,还引入了servlet-api即其他jsp相关的jar包。可能和自带的jar包有冲突了,于是删除了自己引入的jar包,但是还是没有卵用。

(3)[郁闷…]尽然2.3不行,于是升级为2.5,在2.5中,log4j-api是要的,而之前版本的xwork已经被并到Struts-core包中了。升级完后,把原来的项目移除Tomcat后重新添加——运行,还是报错,只不过没了ng。

(4)重新审视我的配置文件,查找是否为配置文件的问题:配置都很简单,没有骚操作。其中action的类名和方法名也没有问题,然后确认Tomcat是否真的加载了文件,在Tomcat的项目的classes目录下进行查找,发现是有的。

struts.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-
//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
    <package name="user" namespace="/"  extends="struts-default">
        <action name="user_login_go" class="com.fang.service.UserAction" method="user_login">
            <result name="success">/userlogin.jsp</result>
        </action>
    </package>
</struts> 

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-
//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
    <display-name>Struts2 Web Application</display-name>
    <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>
</web-app>

(5)确认Apache Tomcat的环境中添加了这些jar包,其实就是将jar包引入到webapp(myEclipse叫webRoot)目录下的lib目录中,因为我是采用Maven的,直接右击项目,属性(properties),搜索Deployment,点击add将Maven引入到工程下,终于成功解决。

原来,eclipse中使用tomcat使用启动web项目的流程是 java build path编译项目源代码生成的class文件放到buildpath的设置路径中,根据web deployment assembly将项目中的各个资源发布到设置的指定文件中,此时没有引入相关jar包,所以报了这个错。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/legendaryhaha/article/details/89065484