Struts2(4):Action访问Servlet API---ActionContext

Struts2的Action没有与任何Servlet API耦合,这是Struts2的一个设计良好之处,由于Action类不再与Servlet API耦合,从而可以更轻松地测试该Action。

但对于Web应用的控制器而言,不访问Servlet API几乎是不可能的,例如跟踪HTTP Session。Struts2框架提供了一种更轻松的方式来访问Servlet API。Web应用通常需要访问的Servlet API就是HttpServletRequest,HttpSession和ServletContext,这3个接口分别代表JSP内置对象中的request,session和application。

Struts2提供了一个ActionContext类,Struts2的Action可以通过该类来访问Servlet  API。下面是ActionContext类中包含的几个常用方法:

ActionContext类的常用方法
方法说明
static ActionContext getContext( )获取系统的ActionContext实例
Object get(Object  key)该方法类似于调用HttpServletRequest的getAttribute(String name)方法
Map getSession( )返回的map对象模拟了HttpSession实例
Map getApplication( )返回的map对象模拟了该应用的ServletContext实例
Map getParameters( )获取所有的请求参数。类似于调用HttpServletReuqest的
getParameterMap( )方法
void setSession(Map session)直接传入一个map实例,map的key-value对转换成
session的属性名和属性值
void setApplication(Map application)直接传入一个map实例,map的key-value对转换成
application的属性名和属性值
我们在Struts2(0)中的Login.java中有如下代码:

public class Login extends ActionSupport{
...
public String execute(){
		if(getUsername().equals("scott")&& getPassword().equals("tiger")){
			ActionContext.getContext().getSession().put("username",getUsername());
			return "success";
		}
		return "login";
	}
}
然后在ok.jsp中有如下代码:

login success! welcome ${username}...
访问程序时,EL表达式可以输出正确的值,这说明 ActionContext.getContext( ).getSession( ).put("username",getUsername( ))确实往session里放入了数据,也即通过ActionContext访问到了Servlet API。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值