Struts2 访问Servlet API

Struts2 提供了三种方式访问本地Servlet API

  1. ActionContext【==推荐==、非耦合】

  2. XxxAware接口【==推荐==、非耦合】

  3. ServletActionContext【==不推荐==、耦合】

1. ActionContext

ActionContext是Action执行的上下文对象,在ActionContext中保存了Action执行所需要的所有对象,包括parameters,request,session,application等。

方法声明方法描述
void put(String key,Object object)将key-value键值对存放在ActionContext种。模拟Servlet API种HttpServletRequst种的setAttribute()方法。
Object get(String key)通过key来查找当前ActionContext中的值
Map<String,Object> getApplication()返回一个Application级的Map对象
static ActionContext getContext()获取当前线程的ActionContext对象
Map<String Object> getParamters()返回一个包含所有HttpServletRequest参数信息的Map对象
Map<String,Object> getSession()返回一个Map类型类型的HttpSession对象
void setApplication(Map<String,Object> application)设置Applicaton上下文
voide setSession(Map<String,Object> session)设置一个Map类型的Session值

ActionContext类访问Servlet API的常用方法,要访问Servlet API,可以通过如下方式进行,具体示例代码如下:

ActionContext context = ActionContext.getContext();
context.put("name", "张三");
context.getApplication().put("name", "李四");
context.getSession().put("name", "王五");

2. XxxAware 接口

Struts2框架提供了ActionContext类来访问Servlet API,虽然这种方法可以访问Servlet API,但是无法直接获得Servlet API实例。为了在Action中直接访问Servlet API,Struts2还提供了一系列接口,具体如下:

  • ServletRequestAware:实现该接口的Action可以直接访问Web应用的HttpServletRequest实例。

  • ServletResponseAware:实现该接口的Action可以直接访问Web应用的HttpServletResponse实例。

  • SessionAware:实现该接口的Action可以直接访问Web应用的HttpSession实例。

  • ServletContextAware:实现该接口的Action可以直接访问Web应用的ServletContext实例。

public class ProductAction extends ActionSupport implements ServletRequestAware {
    HttpServletRequest request;
​
    public String findById() {
        String pid = request.getParameter("pid");
        
        return SUCCESS;
    }
​
    @Override
    public void setServletRequest(HttpServletRequest request) {
        this.request = request;
    }
​
}

3. ServletActionContext

为了直接访问Servlet API,Struts2框架还提供了ServletActionContext类,该类包含了几个常用的静态方法,具体如下:

  • static HttpServletRequest getRequest():获取Web应用的HttpServletRequest对象

  • static HttpServletResponse getResponse():获取Web应用的HttpServletResponse对象

  • static ServletContext getServletContext():获取Web应用的ServletContext对象

  • static PageContext getPageContext():获取Web应用的PageContext对象

3.1 HttpServletRequest

HttpServletRequest request = ServletActionContext.getRequest();

3.2 HttpServletResponse

HttpServletResponse response = ServletActionContext.getResponse();

3.3 ServletContext

ServletContext context = ServletActionContext.getServletContext();

3.4 PageContext

PageContext pageContext = ServletActionContext.getPageContext();

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值