Struts2 Servlet API

Struts2中访问三种对象有多种方式大致可分为两类 与servlet API解耦的访问方式与servlet API耦合的访问方式
一 、与servlet API解耦的访问方式

为了方便对Action类做单元测试,Struts2对HttpServletRequest,HttpSession和ServletContext行了封装,构造三个Map来代替,在Action中用这些Map来存取对象

ActionContext是action这行的上下文.
使用ActionContext对象来获取三种对象

ActionContext act=ActionContext.getContext();
Map request=(Map)act.get("request");
Map session=(Map)act.getSession();
Map applicant=(Map)act.getApplication();
((Map)act.get("request")).put("str", "request");
((Map)act.get("session")).put("str", "session");
((Map)act.get("application")).put("str", "application");

除上述方法外,还可以实现

org.apache.struts2.interceptor.ApplicationAware;
org.apache.struts2.interceptor.RequestAware;
org.apache.struts2.interceptor.SessionAware;

接口分别实现applicantion,request,session对象;

private Map request;//变量名称必须为request,下面的方法是从接口中实现的。
public void setRequest(Map<String, Object> request) {
 this.request=request;
}
private Map session;//变量名称必须为session,下面的方法是从接口中实现的。
public void setSession(Map<String, Object> session) {
 this.session=session;
}
private Map applicantion;;//变量名称必须为applicantion,下面的方法是从接口中实现的
public void setApplication(Map<String, Object> applicantion) {
 this.applicantion=applicantion;
}

与servlet API耦合的访问方式

需要使用ServeltActionContext,这个是ActionContext的子类提供了访问servletAPI的静态方法

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

除了上述方法外还可以通过实现接口来获取三个对象:

实现接口

org.apache.struts2.interceptor.ServletRequestAware;
org.apache.struts2.interceptor.ServletResponseAware
;

分别获取对象request,response

private HttpServletRequest request;
public void setServletRequest(HttpServletRequest request) {
        this.request=request;
}
private HttpServletResponse response;
public void setServletResponse(HttpServletResponse response) {
       this.response=response;
}

或实现org.apache.struts2.util.ServletContextAware;获取ServletContext

public void setServletContext(ServletContext context) {
	// TODO Auto-generated method stub
		
}




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值