Struts2--获取ServletAPI的方式

当我们在使用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存储的方式来操作,那当我们需要操作对象的时候就可以使用第三种方式

你可能感兴趣的:(Struts2--获取ServletAPI的方式)