struts2常用对象

struts2常用对象有:

  • ActionSupport
  • ActionContext
  • ServletActionContext

1. ActionSupport对象

1) struts2不要求我们自己设计的action类继承任何的struts基类或struts接口,但是有时为了方便实现我们自己的action,可以继承com.opensymphony.xwork2.ActionSupport类,并重写此类里的public String execute() throwsException方法。因为此类中实现了很多的实用接口,提供了很多默认方法,这些默认方法包括国际化信息的方法、默认的处理用户请求的方法等,这样可以大大的简化Action的开发。

2) Action实现方法:
      1、普通的java类,里面有public Striing execute方法即可;(最常用)
      2、实现Action接口;(一般不用)
      3、从ActionSupport继承,好处在于可以直接使用Struts2封装好的方法。

publicclass UserAction extends ActionSupport {

……

      public String login() {
      ........
           if((user != null) && (user.getLoginName().equals("admin"))) {
                Map<String, Object> session = ActionContext.getContext().getSession();
                session.put("user", user);
                return "success";
           }
           return "error";
      }
}

2. ActionContext对象

     1) ActionContext(com.opensymphony.xwork.ActionContext)是Action执行时的上下文,上下文可以看作是一个容器(其实我们这里的容器就是一个Map而已),它存放的是Action在执行时需要用到的对象。

     2) ActionContext为Struts提供数据环境,维护着一个Map结构,ValueStack中的每一个元素都是根对象,Action位于ValueStack的最顶层。ActionContext中封装了servlet对象,从而将Action与Servlet解耦(即Action无需依赖任何Servlet API)。 Map结构如图:
     3) 获取request、session的方法:
         ActionContext context = ActionContext.getContext(); (单立模式)
         Map<String, Object>  request = (Map)context.get(“request”);//获取request 的参数
         Map<String, Object>  session = context.getSession();//获取session 
         Map<String, Object> application = context.getApplication();//获取application的AttributeMap

     4) getParameters()得到代表所有请求参数的 map对象;  (url上的参数)

3. ServletActionContext对象

     1) ServletActionContext(com.opensymphony.webwork. ServletActionContext),这个类直接继承了我们上面介绍的   ActionContext,它提供了直接与Servlet相关对象访问的功能,它可以取得的对象有:
             1.  javax.servlet.http.HttpServletRequest : HTTPservlet请求对象
             2.  javax.servlet.http.HttpServletResponse : HTTPservlet相应对象
             3.  javax.servlet.ServletContext : Servlet上下文信息
             4.  javax.servlet.ServletConfig : Servlet配置对象
             5.  javax.servlet.jsp.PageContext : Http页面上下文

     2) 如果ActionContext能够实现我们的功能,那最好就不要使用ServletActionContext,让我们的Action尽量不要直   接去访问Servlet的相关对象。(下载的时候用到)

     3) 不要在Action的构造函数里使用ActionContext.getContext(),因为这个时候ActionContext里的一些值也许没有设 置,这时通过ActionContext取得的值也许是null;同样,HttpServletRequest req =           ServletActionContext.getRequest()也不要放在构造函数中,也不要直接将req作为类变量给其赋值。(要的时候再取)



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值