Struts2之Action类概要

来源:互联网 发布:多线程编程demojava 编辑:程序博客网 时间:2024/06/07 23:59

Struts2之Action


1、Action是应用的核心,Action类包含了对用户请求的处理逻辑。Action类也被称为 业务控制器
2、Action类是一个普通的POJO(传统的、普通的java对象,包含一个无参数的execute方法),无需继承任何基类或实现任何接口
3、Action来封装HTTP请求参数,包含于请求参数对应的实例变量,并提供对应的setter和getter方法。


public class LoginAction{    private String user;    //user的getter和setter方法    public String getUser(){return user;}    public void setUser(String user){        this.user=user;    }    public String execute(){ //默认处理用户请求方法        ...        return resulterStr;  //返回处理结果字符串    }}

4、Action也可以封装处理结果
5、Struts2提供了一个Action接口,使用户开发的Action类更加规范。
6、Struts2提供了一个实现类:ActionSuport类(是Struts2默认的处理类,继承该类,会简化Action的开发)


Action访问ServletAPI

Struts2提供了一个ActionContext类,有如下常用方法:

Object get(Object key):调用HttpServletRequest的getAttribute(String name)方法
Object put(Object key,Object value)
Map getApplication():返回一个Map对象,模拟了ServletContext实例
static ActionContext getContext():获取系统的ActionContext实例
Map getParameters():获取所有的请求参数
Map getSession():返回一个Map对象,模拟了HttpSession实例
void setApplication(Map application):直接传入一个Map实例
void setSession(Map session)


Action直接访问ServletAPI

Struts2提供以下接口:

ServletContextAware:直接访问Web应用的ServletContext实例
ServletRequestAware:直接访问Web应用的HttpServletRequest实例
ServletResponseAware:直接访问Web应用的HttpServletResponse实例

public class Action implements Action,ServletResponseAware{    ...    private HttpSerlvetResponse response;    //重写该接口必须实现的方法    public void setServletResponse(HttpServletResponse response){        this.response=response;    }    ...}

使用ServletActionnContext访问ServletAPI

ServletActionContext工具类提供如下静态方法:

static HttpServletRequest getRequest()
static HttpServletResponse getResponse()
static ServletContext getServletContext()


Action的配置

在struts.xml中配置Action。配置Action就是完成用户请求和Action之间的对应关系
Struts2使用包来组织、管理Action。
<package.../>元素用于定义包配置,包含如下属性

name:必须属性。该属性指定包的名字。
extends:可选。指定该包继承的其他包。
namespace:可选属性。定义该包命名空间。
abstract:可选。指定是否为抽象包。抽象包不能包含Action定义


命名空间namespace:主要处理同一个Web应用中包含同名Action的情形
定义Action,至少指定该Action的name属性,既是名字,也是所处理请求的URL
class属性并不是必须,系统默认使用系统的ActionSupport类
Action只是一个逻辑控制器,并不直接对浏览者生成响应。Action处理完用户请求后,将指定的视图资源呈现给用户。
配置Action应配置逻辑视图和物理视图资源之间的关系,映射关系通过<result.../>定义

原创粉丝点击