当我们在使用Struts2的时候,在Action类中要怎么获取我们所需要的ServletApi呢,比如常用的request对象,response对象等,下面介绍三种接口对象的获取的方式
1.通过我们的ActionContext来获取
ActionContext,把它理解为一个装数据的容器,每次创建Action的时候,同时都会创建一个ActionContext,它用来保存Action执行过程中用到的数据
通过ActionContext的方式也有两种获取对象的方式
方法一:当需要传输sesson的时候就可以使用这种方式来存储,维护一个map集合
Map session = ActionContext.getContext().getSession();session.put("msg", null);
方法二:
HttpServletRequest request =(HttpServletRequest)ActionContext.getContext().get("request");HttpServletResponse response = (HttpServletResponse)ActionContext.getContext().get(StrutsStatics.HTTP_RESPONSE);
2.通过实现xxAware接口并实现里面的抽象方法
public class APIAction3 extends ActionSupport implements ServletRequestAware,ServletResponseAware,ServletContextAware{
private HttpServletRequest request;
@Overridepublic void setServletRequest(HttpServletRequest request) {
this.request = request;
}
private ServletContext context;
@Overridepublic void setServletContext(ServletContext context) {
this.context = context;
}
private HttpServletResponse response;
@Overridepublic void setServletResponse(
HttpServletResponse response) {
this.response = response;
}
}
这里我就直接上代码了,类直接实现了三个接口,然后实现方法中可以直接返回我们想要的对象
3.使用ServletActionContext来直接获取
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
上面的三种方式各有各的优点:比如说当我们只需要将结果值保存起来并进行传输的话,那我们就可以直接使用第一种Map存储的方式来操作,那当我们需要操作对象的时候就可以使用第三种方式
网友评论