3、Action中访问Servlet API

 

1、通过ActionContext访问Servlet API

ActionContext类提供了一个静态方法getContext(),该方法返回一个ActionContext的实例。该实例提供了一些访问Servlet API的方法,通常的方法是

返回值

方法名

功能描述

ActionContextgetContext()获取系统的ActionContext实例
MapgetSession()返回一个Map实例,该对象存入HttpSession实例。
voidsetSession(Map session)直接传入一个Map实例,将实例总得key、value对应转换成session的属性名、属性值
MapgetApplication()返回一个Map对象,该对象存入ServletContext实例
voidsetApplication()直接传入一个Map实例,将实例中的key、value对应转换成application的属性名、属性值
MapgetParameters()获得所有请求参数。类似于调用HttpServletRequest对象的getParameterMap方法

 

实际上Struts2是把Map对象模拟成ServletContext对象和HttpSession对象,从而将Servlet API从Action中分离出来。

1ActionContext ctx = ActionContext.getContext();
2  
3//获得Session
4Map session = ctx.getSession();
5  
6//获得Application
7Map application = ctx.getApplication();

 

在通常的web开发中Request和Response对象比较常见,但在Struts2框架中由于Action能与JSP页面进行数据交互,所以通常都不会用到这两个对象。如果想在Struts2程序中用到这两个对象,也有解决方法。Struts2提供了一个ServletActionContext类,在这个类中包含了一些方法,能够获得和设置request和response对象,并且还能获得ServletContext对象:

返回值

方法名

功能描述

HttpServletRequestgetRequest()获得Web应用的HttpServletRequest对象
HttpServletResponsegetResponse()获得Web应用的HttpservletResponse对象
ServletContextgetServletContext()获得Web应用的ServletContext对象

 

01//获得HttpServletRequest
02HttpServletRequest request = ServletActionContext.getRequest();
03  
04//获得HttpServletResponse
05HttpServletResponse response = ServletActionContext.getResponse();
06  
07//获得HttpSession
08HttpServletRequest request = ServletActionContext.getRequest();
09HttpSession session = request.getSession();
10  
11//获得ServletContext
12ServletContet sc = ServletActionContext.getServletContext();

 

2、通过实现*Aware接口获得Servlet API

比如在某个Action中要获得Session对象,就可以让该Action实现SessionAware接口。当然除了获得Session外,我们还可以获得其他对象:

实现接口名称

获得Servlet对象的方法

ApplicationAWarevoid setApplication(Map application)
CookiesAwarevoid setApplication(Map cookies)
RequestAwarevoid setRequest(Map request)
ServletRequestAwarevoid setApplication(HttpServletRequest request)
ServletResponseAwarevoid setApplication(HttpServletResponse response)
SessionAwarevoid setSession(Map session)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值