Struts2-Action访问Servlet API

来源:互联网 发布:湖南广电网络董事长 编辑:程序博客网 时间:2024/04/28 20:04

Struts2框架的Action没有和任何Servlet API耦合,但是web应用中不可避免的要访问到Servlet API,例如HttpRequest(request),HttpResponse(response),ServletContext(application)。

Servlet可以使用以下三种方式访问Servlet API

ActionContext

Struts2提供了一个ActionContext来访问Servlet API
常用方法:

  1. Object get(Object key),类似HttpServletRequest的getAttribute(String name)。
  2. Map getApplication(),返回一个Map,模拟了ServletContext
  3. static ActionContext getContext(),静态方法,返回ServletContext实例
  4. Map getParameter(),返回请求参数的
  5. void setApplication(Map application),把Map里面的key-value替换成application中的。
  6. Map getSession(),返回session
  7. void setSession(Map session),类似setApplication(Map application)

直接访问Servlet API

虽然ActionContext可以直接访问Servlet API,但是这并不是直接获取Servlet API的实例。Struts2还提供了三个接口:
ServletContextAware:实现该接口可以直接访问ServletContext实例。
ServletRequestAware:实现该接口可以直接访问ServletRequest实例。
ServletResponseAware:实现该接口可以直接访问ServletReqponse实例。

这三个接口都相当简单只需在Action中添加一个对应的实例变量和set方法,就可以在Action中使用实例了。
例如:

package com.tuxianchao;import javax.servlet.ServletContext;import org.apache.struts2.util.ServletContextAware;import com.opensymphony.xwork2.ActionSupport;public class MyAction extends ActionSupport implements ServletContextAware {    // 添加一个servletContext实例变量    private ServletContext servletContext;    // 重写接口中的方法,实例化servletContext,    @Override    public void setServletContext(ServletContext servletContext) {        this.servletContext = servletContext;    }    //然后就可以在action中访问servletcontext的API了}

ServletActionContext

ServletActionContext是struts2提供的一个工具类,包含一系列静态方法用来获取设置PageContext,HttpServletResponse,HttpServletRequest等。
1. static PageContext getPageContext();
2. static HttpServletRequest getHttpServletRequest();
3. static HttpServletResponse getHttpServletResponse();
4. static ServletContext getServletContext();
5. …..

0 0
原创粉丝点击