Struts2学习笔记

记录学习使用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"/>即可。