Struts2中的ActionContext

        在做完的SSH网上商城项目中,在各个的action中都用到了ActionContext,例如往session中存值,往值栈中存值等,那么到底什么是ActionContext呢?

        ActionContext(com.opensymphony.xwork.ActionContext)是Action执行时的上下文,上下文可以看作是一个容器(其实我们这里的容器就是一个Map而已),它存放放的是Action在执行时需要用到的对象,比如:在使用WebWork时,我们的上下文放有请求的参数(Parameter)、会话(Session)、Servlet上下文(ServletContext)、本地化(Locale)信息等。在每次执行Action之前都会创建新的ActionContext,ActionContext是线程安全的,也就是说在同一个线程里ActionContext里的属性是唯一的,这样我的Action就可以在多线程中使用。

        例如获取session:

     Map session = ActionContext.getContext().getSession();

       这里是把session对象进行了重新包装,包装成了Map对象,很多都是这样包装的:

                        

返回值都是Map类型,这样做的好处是,直接供我们的Action使用,而不用直接和底层的HttpSession打交道。也正是框架的包装,让我们的Actoion可以完全的和Web层解藕。

        那么在jsp中如何取值呢?

        先看action中如何赋值的:

            ActionContext.getContext().getValueStack().set("pageBean", pageBean);这样是把pageBean放到了值栈中,jsp中:

<s:iterator var="order" value="pageBean.list">
						<tr>
							<th colspan="5">订单编号:<s:property value="#order.oid" />    订单金额:<font
								color="red"><s:property value="#order.total" />
							</font>
这样就可以通过值栈拿到里面的值了。

        还有个对象:ServletActionContext。

            这个是继承了ActionContext类,通过ServletActionContext,可以直接访问JavaServlet相关对象,例如:

HttpServletRequest、HttpServletResponse、ServletContext、ServletConfig、PageContext等。

举个例子:取到HttpSession对象:

HttpSession session = ServletActionContext. getRequest().getSession();

        暂时对这两个对象理解就这么深,以后还会有更加深刻的学习。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值