structs2-运用Action

来源:互联网 发布:war3 for mac打不开 编辑:程序博客网 时间:2024/06/05 19:25

要使用Action,是使用配置+实现类的模式。
第一步:建立一个类名字尾部为Action,例如LoginAction。可选择让其实现Action接口或继承ActionSupport。
第二步:在这个类中实现控制方法,该方法约定返回一个字符串结果。
第三步:配置struct.xml文件

public interface Action{public static final String ERROR = "error";public static final String INPUT = "input";public static final String LOGIN = "login";public static final String NONE= "none";public static final String SUCCESS = "success";public String execute() throws Exception;}

尽管实际使用中Action类只需要将名字定义为*Action的样子,但是Structs2定义了Action接口为了使用户使用更规范。


public class ActionSupport
extends Object
implements Action, Validateable, ValidationAware, TextProvider, LocaleProvider, Serializable


ActionSupport类实现了包括Action的众多接口的默认方法,默认方法例如获取国际化信息的方法,数据校验的方法,默认的处理用户请求的方法,如果让开发者继承ActionSupport类,能大大简化Action开发。

如:

package com.action;public class UserAction extends ActionSupport{    private int userId;private String userName;private String userPw;private String userRealname;private String userAddress;private String userSex;private String userTel;private String userEmail;private String userQq;private String userType;private String message;private String path;private TUserDAO userDAO;private TStuDAO stuDAO;public String userAdd(){return "succeed";}public String userEdit(){return "successAdd";}public String userLogin(){return "succeed";}/*省略ser() get()方法}
然后就是配置相应的Action信息:


Structs2 使用包来组织Action,因此,将Action定义在包定义下完成定义Action通过<package../>下的<Action../>子元素来完成。


<package../>有如下几个属性:
name:这是一个必需属性,该属性指定该包的名字,该名字是其被其它包引用的key
extends:该属性是一个可选属性,该属性指定该包继承其它包。继承其他包意味着可以继承其他包中的Action定义,拦截器定义。
namespace:可选属性,定义该包的命名空间
abstract:可选属性,指定该包是否是个抽象包。抽象包中不能包含Action定义


struts-default包是struts内置的,它定义了很多拦截器,而Struts2很多核心的功能都是通过这些内置的拦截器实现,如:从文件上传、数据验证、自动封装前台传过来的参数等等。我们写的包继承了struts-default包才能使用struts2为我们提供的这些功能,所以通常我们写的每个包都应该继承它。
<action../>的常用属性:
name:必需属性,该属性指定此Action的名字,习惯上此名字为Action的方法名。调用时此名字为被引用的key.
class:必需属性,指定这个Action类的URL。
method:可选属性,执行Action类中指定的方法调用,假如不指定则默认使用Action的execute()方法。

<struts>    <package name="lunwen186" extends="struts-default">        <action name="userAdd" class="com.action.UserAction" method="userAdd">        </action>        <action name="userEdit" class="com.action.UserAction" method="userEdit">        </action>        <action name="userLogin" class="com.action.UserAction" method="userLogin">        </action>    </package></struts>


0 0