学习Struts2框架遇到的问题可以说是很常见的,我自己就总结了一下遇到的一些问题,希望可以对你有帮助。
404问题
原因:这是访问路径错误,这是很常见的错误,也就是输入的地址栏中的路径不正确。这是前台错误,后台代码并没有错误。
解决:检查输入路径。
后缀名问题
原因:Struts2默认action的后缀名是.action,有时不写出.action后缀名也可以访问(如果web.xml中的url-pattern值为/*)。既然是默认的话,也就有自定义的后缀名。
解决:主要配置两个文件struts.xml和web.xml。
<!-- 指定被struts2处理的请求后缀类型。多个用逗号隔开 -->
<constant name="struts.action.extension" value="action,do,go,xkk"/>
<!-- 配置Struts2过滤器 -->
<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>
端口占用问题
原因:Tomcat服务器的默认端口是8080(可以修改),当服务器没有关闭时,又再次启动Tomcat服务器就会抛出端口被占用的错误。比如:Failed to initialize connector [Connector[HTTP/1.1-8080]]。
解决:到Tomcat安转文件下的bin目录下的shutdown文件双击,出现一闪后表示退出成功。
开发者模式问题
原因:Struts框架默认情况下是非开发者模式,即struts.devMode的常量值为false,当修改struts.xml文件时服务器不会重新加载配置文件,使用的还是未改变之前的struts.xml文件。
解决:可以关闭Tomcat然后再启动,也可以在struts.xml中配置成为开发者模式。
<!-- 是否使用struts的开发模式。开发模式会有更多的调试信息。默认值为false(生产环境下使用),开发阶段最好打开 -->
<constant name="struts.devMode" value="true" />
乱码问题
原因:jsp、Struts2、数据库三者的编码不同,导致数据在传输过程中出现乱码的问题。
解决:设置jsp页面的编码pageEncoding为UTF-8(以UTF-8为例),struts.xml配置文件中配置常量。
<!-- 设置表单提交数据的格式,对get和post都有用 -->
<constant name="struts.i18n.encoding" value="UTF-8"/>
表单数据提交问题
原因:属性封装和模型驱动封装modelDriven的类中的属性名和表单form标签中的相关name属性值不一致,导致数据提交失败。当然表单提交的数据项可以和属性封装或者模型驱动封装的数量可以不一致。
解决:检查属性名和name属性值是否一致。
服务器多项目加载问题
原因:myeclipse中有多个项目发布到了Tomcat服务器,其中有的项目如果有错误,就会报错。因为Tomcat服务器启动时就会将webapps目录下的所有web项目加载。解决:不需要到Tomcat服务器的webapps目录下将不需要的项目删除,可以在myeclipse中的server小窗口将已经加载的其他项目取消发布。如果没有server小窗口可以设置出来,Window -> show view ->other... ->输入server -> 双击即可。
多余的话
以上的问题只是暂时发现的常见问题,今后还会继续更新。
这是我的一些理解了,希望见谅。