记录学习使用Struts2框架时遇到的问题及其解决方案,使用的IDE为Intellij IDEA,Struts2版本为2.5.13。
初次部署
添加需要的库
- commons-digester-2.1.jar
- commons-fileupload-1.3.3.jar
- commons-io-2.5.jar
- commons-lang3-3.6.jar
- commons-logging-1.1.3.jar
- freemarker-2.3.23.jar
- javassist-3.20.0-GA.jar
- log4j-api-2.8.2.jar
- ognl-3.1.15.jar
- struts2-core-2.5.13
当然这里自己一个个地添加库是比较笨的方法,官网中有介绍如何用Maven来添加依赖和构建项目的教程。
添加Servlet Filter
编辑web.xml,在web-app下一级添加
1 2 3 4 5 6 7 8 9 10 11 12
| <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class> <init-param> <param-name>actionPackages</param-name> <param-value>tech.zuosi.signinorsignup.actions</param-value> </init-param> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
|
添加struts.xml文件
在src目录下创建struts.xml并配置constant,package和action。
在我的项目中是这样写的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| <?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.mapper.action.prefix.enabled" value="true"/> <package name="default" extends="struts-default"> <action name="login" class="tech.zuosi.signinorsignup.actions.UserAction"> <result name="success">/main.jsp</result> <result name="error">/error.jsp</result> </action> <action name="register" class="tech.zuosi.signinorsignup.actions.UserAction" method="register"> <result name="success">/main.jsp</result> <result name="error">/error.jsp</result> </action> </package> </struts>
|
添加Action和JSP页面
在src下建包,添加Action和其他类,然后在JSP中编写页面内容即可。
问题解决
关于找不到struts-default.xml的解决方案
File->Project Structure->Modules,选中Struts 2并编辑File Set将struts2-core-2.5.13.jar中的struts-default.xml添加进来即可。
关于在submit标签中使用action属性无效的解决方案
编辑struts.xml,在struts下添加<constant name="struts.mapper.action.prefix.enabled" value="true"/>
即可。