struts2中的Action详解

这章,将要对struts2中的Action作一个简单的介绍。

相对struts1而言,struts2采用了低侵入的设计,struts2中不要求Action继承任何struts2中的基类,或者实现其它接口。在这种设计的方式下,struts2中的Action就相当于一个POJO,从而降低了Action的耦合性以及提高了Action的复用性。
和struts1的又一比较大的区别是,struts2中已经取消了ActionForm,所有用户请求的参数改成都封装在对应的Action中,如:

[color=blue]public class LoginAction {
private String userName;
public String getUserName() {
return userName;
}

}[/color]

如上,封装了userName属性,但注意:封装属性的同时,必须要提供set方法struts2是通过对应的set方法来处理这些参数的,而不是通过参数名来处理的

Struts2中的Action不仅可以封装请求的参数,还可以封装处理后的参数。如:

[align=center][color=blue]private String tip;
public void setTip(String tip) {
this.ti= tip;
}[/color][/align]
在Action的处理中,设置tip的值,则在处理后的视图中,则可显示该处理结果,如:
[align=center][color=blue]<s:property value=”tip”/>[/color][/align]

为了让用户的开发更加规范,struts2中提供了Action接口和ActionSupport基类,其中ActionSupport是个Action默认实现类,它提供了许多默认的实现方法。Action是个接口,具体代码如下:

[color=blue]package com.opensymphony.xwork2;
public interface Action {
public static final String SUCCESS = "success";
public static final String NONE = "none";
public static final String ERROR = "error";
public static final String INPUT = "input";
public static final String LOGIN = "login";
public String execute() throws Exception;
}[/color]

注意Action中的几个常量,对已后Action更深一步的认识有帮助.

有人也许会问,既然Action中类似一个POJO,那以后要直接用到Servlet API,如HttpServletRequest和ServletContext等这么办呢?
没关系,Struts2中提供了两种解决方法,第一种就是使用struts2提供的工具类-ServletActionContext。它提供了一些列静态方法,可以直接获得Servlet API,如
HttpServletRequest和ServletContext的对象,即:

[color=blue]ServletActionContext .getServletContext()
ServletActionContext. GetResponse()
ServletActionContext.GetRequest()
ServletActionContext. getPageContext()[/color]


第二种方法即是实现struts2中对应的几个接口:
[color=blue]ServletContextAware、ServletResponseAware、ServletRequestAware[/color]等。
如一个Action实现ServletContextAware,则必须实现如下方法:
[color=blue]Public void setServletResponse(HttpServletResponse response);[/color]
其它与此类似


其实,struts2还提供了一个非常实用的类,即跟踪Action的上下文的类ActionContext,具体下章再作详细的解释。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值