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
    评论
<?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> <constant name="struts.devMode" value="true" /> <package name="default" namespace="/" extends="struts-default"> <action name="helloworld" class="com.mytest.HelloWorldAction"> <result> /result.jsp </result> </action> </package> <package name="LoginForm" extends="struts-default"> <action name="login" class="com.mytest.LoginAction" method="execute"> <result> /login.jsp </result> </action> </package> </struts> <!--1.使用 struts2.5.16 版本 2.lib 文件夹下放置:工程所需jar包 3.xml标签库为远程获取,路径:http://struts.apache.org/dtds/struts-2.5.dtd 可设置为本地【xml输入语法快捷提示】,就不用远程获取了:window-->preference-->输入Catalog-->xml下的Catalog-->Add-->location:解压缩struts-core-2.5.16.jar 后,文件struts-2.5.dtd文件路径。 4.设置开发者模式: <constant name="struts.devMode" value="true" /> <constant name="struts.i18n.encoding" value="utf-8" /> 每次HTTP请求系统都重新加载资源文件,有助于开发 5.struts配置文件改动后,是否重新加载 <constant name="struts.configuration.xml.reload" value="true" /> 6.查看源码:Build path 后的类库中,奶瓶图标找到struts-core-2.5.16.jar 右键-->properties-->java Source Attachment-->External location :源码路径 7.查看文档API:Build path 后的类库中,奶瓶图标找到struts-core-2.5.16.jar 右键-->properties-->javadoc location :输入网址 或选择源码DOC目录 8.拦截器:web.xml 配置拦截器<filter> struts2.5的filter-class 与struts2.5以前版本有所不同 <!-- 浏览器访问 http://localhost:8080/MyWeb/helloworld --> --> <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>Struts 2</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <!-- 配置核心拦截器 --> <filter> <filter-name>struts2</filter-name> <!-- Filter的实现类 struts2.5 --> <filter-class> org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter </filter-class> </filter> <filter-mapping> <!-- 拦截所有的url --> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值