Step1:
Struts2的获取和添加到项目中:
在官方网站:http://struts.apache.org 获取Struts的其中一个版本。
在开发项目之前,需要添加struts2的类库支持,也就是将下载解压后的struts的lib目录下的jar包添加到项目的claspath下。通常情况下,这些jar包文件不用全部添加,根据项目实际的开发需要进行添加即可。一般项目开发首先要添加的核心jar包(版本号可以不一样)有:
commons-fileupload-1.3.2.jar、commons-io-2.2.jar、commons-logging-1.1.3.jar、freemarker-2.3.22.jar、ognl-3.0.19.jar、struts2-core-2.3.33.jar、xwork-core-2.3.33.jar。
Step2:
创建项目,将Struts2的支持类库添加到WEB-INF目录的lib文件夹中。
配置web.xml文件:声明Struts2提供的过滤器,类名:org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter。关键代码如下:
1 <!-- Struts2 过滤器 --> 2 <filter> 3 <filter-name>struts2</filter-name> 4 <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 5 </filter> 6 7 <!-- Struts2过滤映射 --> 8 <filter-mapping> 9 <filter-name>struts2</filter-name> 10 <url-pattern>/*</url-pattern> 11 </filter-mapping>
注意:Struts2.0中使用的过滤器为:org.apache.struts2.dispatcher.FilterDispatcher,在更高版本中已经不推荐使用这个了,而是使用以上的
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter 类。
Step3:
在web项目的源码文件夹下(一般为src文件夹下),创建名称为struts.xml的配置文件,关键代码如下:
1 <struts> 2 <!-- 声明包 --> 3 <package name="myPackage" extends="struts-default"> 4 <!-- 定义Action --> 5 <action name="yourActionName"> 6 <result name="yourReturn">/your.jsp</result> 7 </action> 8 </package> 9 </struts>
Step4:
Action对象请求参数的注入原理:
在项目的src目录下新建com.mypage.action包,然后在包下创建UerAction类,提供一个username属性,其代码如下:
1 public class UserAction extends ActionSupport{ 2 //用户名属性 3 private String username; 4 //为username提供setter和getter方法,省略..... 5 ........ 6 7 public String execute(){ 8 ......... 9 return SUCCESS; 10 } 11 }
然后根据Action对应配置struts.xml文件,配置代码如下:
1 <struts> 2 2 <!-- 声明包 --> 3 3 <package name="myPackage" extends="struts-default"> 4 4 <!-- 定义Action --> 5 5 <action name="userAction" class="com.mypage.action.UserAction"> 6 6 <result name="SUCCESS">/success.jsp</result> 7 7 </action> 8 8 </package> 9 9 </struts>
创建index.jsp页面,代码如下:
<html> <head> <body> <h1>struts2 test <h1> <a href="userAction">用户名</a> <br> </body> </head> </html>
注意:这段代码也可以使用Struts的动态Action,并不一定要重写execute()方法进行处理,使用动态Action的处理方式可能会更加方便。所以在实际的开发中,可以将同模块的一些请求封装在一个Action对象中,使用struts2 提供的动态Action对不同的请求进行处理。