您的位置:首页 > 编程语言 > Java开发

Struts2.x学习三(Action中访问Servlet API )

2012-07-26 14:24 232 查看

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中分离出来。

ActionContext ctx = ActionContext.getContext();

//获得Session

Map session = ctx.getSession();

//获得Application

Map application = ctx.getApplication();


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

返回值
方法名
功能描述
HttpServletRequestgetRequest()获得Web应用的HttpServletRequest对象
HttpServletResponsegetResponse()获得Web应用的HttpservletResponse对象
ServletContextgetServletContext()获得Web应用的ServletContext对象
//获得HttpServletRequest

HttpServletRequest request = ServletActionContext.getRequest();

//获得HttpServletResponse

HttpServletResponse response = ServletActionContext.getResponse();

//获得HttpSession

HttpServletRequest request = ServletActionContext.getRequest();

HttpSession session = request.getSession();

//获得ServletContext

ServletContet sc = ServletActionContext.getServletContext();


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

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

实现接口名称
获得Servlet对象的方法
ApplicationAWare

void setApplication(Map application)

CookiesAware

void setApplication(Map cookies)

RequestAware

void setRequest(Map request)

ServletRequestAware

void setApplication(HttpServletRequest request)

ServletResponseAware

void setApplication(HttpServletResponse response)

SessionAware

void setSession(Map session)

 

转自:http://www.cnblogs.com/fmricky/archive/2010/05/20/1739762.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息