truts2在Action中如何访问request,session,application(即ServletContext)对象

方式一:与Servlet API解耦的方式
可以使用struts2中提供的Map对象来访问HttpRequest,HttpSession和ServletContext对象,要获取这三个Map对象,可以使用com.opensymphony.xwork2.ActionContext类提供的静态方法
ActionContext ctx=ActionContext.getContext();
ctx.getApplication().put(“app”,”Application应用对 象”);//ServletContext放入app
ctx.getSession().put(“ses”,”session应用对象”);
ctx.put(“req”,”request对象”);
方式二:与Servlet API解耦的方式 实现相关接口
public class ServletAware implements ApplicationAware,SessionAware,RequestAware,ParameterAware{

public String execute(){
    //session实际上是SessionMap的实例,可以调用invalidate方法让session失效
    if(session instanceof SessionMap){
        SessionMap sessionMap=(SessionMap) session;
        ((SessionMap) session).invalidate();
    }
    return "success";
}
private Map<String,String[]> parameters;
private Map<String,Object> request;
private Map<String,Object> session;
private Map<String,Object> application;
@Override
public void setParameters(Map<String, String[]> arg0) {
    parameters=arg0;

}

@Override
public void setRequest(Map<String, Object> arg0) {
    request=arg0;

}

@Override
public void setSession(Map<String, Object> arg0) {
    session=arg0;

}

@Override
public void setApplication(Map<String, Object> arg0) {
    application=arg0;

}

}

:

上面的两个个方法,仅相当与request,session,applicationsetAttribute(string,object)方法。
struts2中提供的Map对象来提供类似request,session,application内置对象的功能,这些内置对象只有内置对象的一小部分功能,它不依赖于servlet,所以是解耦合的!!!

方式三:与Servlet API耦合的访问方式
也可以直接访问Servlet环境中的HttpRequest,HttpSession和ServletContext对象。通过ServletActionContext.类提供的静态方法直接获取:

   HttpServletRequest request=ServletActionContext.getRequest();
   ServletContext context=ServletActionContext.getServletContext();
   HttpSession session=request.getSession();
   HttpServletResponse response=ServletActionContext.getResponse();

方式四:与Servlet API耦合的方式 实现相应的接口
public class TestServletAwareAction implements ServletResponseAware,ServletContextAware,ServletRequestAware{

public String execute(){
    return "success";
}
@Override
public void setServletResponse(HttpServletResponse arg0) {
    // TODO Auto-generated method stub

}

@Override
public void setServletContext(ServletContext arg0) {
    // TODO Auto-generated method stub

}

@Override
public void setServletRequest(HttpServletRequest arg0) {
    // TODO Auto-generated method stub

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值