Ecplise struts2 -2.5开发常见问题总结:

在报错的时候,一定要看控制台的解释:

注:我使用的是ecplise, jdk 1.8 , strust2 框架:2.5.26
tomcat 7, 8.5
在使用新版本的框架库时,注意jdk,和tomcat尽量也使用高版本的,不然会引起版本冲突,不符,不必要的麻烦

strust2 框架基本包:

strust2框架

其struts2 -2.5.26基本引入jar包13个
在这里插入图片描述

jar包大概作用:

asm-7.3.1.jar
操作Java字符码的类库

asm-commons-7.3.1.jar
提供了基于事件的表现形式

asm-tree-7.3.1.jar
提供了基于对象的表现形式

struts2-core-2.5.26.jar
Struts2框架的核心类库

(注意xwork-core.jar包已与struts2-core-2.5.26.jar整合)

ognl-3.1.28.jar
对象图导航语言——Object Graph Navigation Language,Struts2框架通过其读写对象的属性

freemarker-2.3.30.jar
Struts2标签模板使用的类库

javassist-3.20.0-GA.jar
JavaScript字节码解释器

commons-fileupload-1.4.jar
Struts2文件上传组件依赖包

commons-io-2.6.jar
Struts2的输入输出,传文件依赖的JAR

commons-lang3-3.8.1.jar
包含一些数据类型工具,是对java.lang包的增强

commons-logging-1.2.jar
Jakarta Commons-logging(JCL)是apache最早提供的日志的门面接口。提供简单的日志实现以及日志解耦功能。 JCL能够选择使用Log4j(或其他如slf4j等)还是JDK Logging,但是他不依赖Log4j,JDK Logging的API。如果项目的classpath中包含了log4j的类库,就会使用log4j,否则就使用JDK Logging。

log4j-api-2.12.1.jar
Struts2的日志管理组件依赖包的API

log4j-core-2.11.1.jar
Struts2的日志管理组件依赖包

常见bug

web.xml

	<!--配置核心控制器 -->

	<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>

在这里插入图片描述
从控制台解释中知道,是没有找到这个控制器类,我试着翻阅struts2-core-2.5.jar包,发现确实没有,经过查阅得知:
原来在2.5以上的版本,语句org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter发生了变化,其中.ng的部分被去掉了,在eclipse中编辑该语句去掉.ng,变为org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter,成功启动服务器。

在这里插入图片描述
这里是因为缺少log4j-api-2.12.1.jar 包,导入之后就可以了.
在这里插入图片描述

使用tomcat运行时报错org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19

原因:tomcat版本冲突,如果使用的是tomcat7,可以升到tomcat8.5

struts2配置默认页面,并捕捉404

见struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<!-- 4个开发模式常用配置的简介-->
<!-- 开启使用开发模式,详细错误提示 -->
<constant name="struts.devMode" value="true"/>
<!-- 指定每次请求到达,重新加载资源文件 -->
<constant name="struts.i18n.reload" value="true"/>
<!-- 指定每次配置文件更改后,自动重新加载 -->
<constant name="struts.configuration.xml.reload" value="true"/>
<!-- 指定XSLT Result使用样式表缓存 -->
<constant name="struts.xslt.nocache" value="true"/> 

<!--我想实现的功能,不依靠web.xml,在项目启动跳转默认登录网页,如果网页输入有误,跳转到error-->
<!--即在项目启动时是登录界面,而在项目后缀输入不正确的地址,则会跳转到error  -->
<!--刚开始 我一直用<default-action-ref name="Login" />  指定默认路径,但
这玩意就是个坑,它确实是默认这个路径,但如果name不存在时,它同样也指定默认路径,也就是说
项目启动时是登录界面,而如果地址错误,依旧还是跳登录界面-->
<package name="default" namespace="/" extends="struts-default">
<action name="" >
<result >/jsp/IndiLogin.jsp</result>
</action>
<action name="login" class="com.k.action.userAction" method="execute">
			<result name="error">/jsp/IndiLogin.jsp</result>
			<result name="success">/jsp/IndiShow.jsp</result>
</action>
<action name="error" >
			<result >/jsp/error.jsp</result>	
		</action>		
<action name="/*">
        <result type="redirect">error</result>
    </action>
</package>
</struts>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值