Action访问Servlet API
Struts2中的Action并没有和任何Servlet API耦合,这样框架更具灵活性,更易测试。
对于Web应用的控制器而言,不访问ServletAPI是几乎不可能的。Web应用中通常需要访问的ServletAPI就是HttpServletRequest、HttpSession和ServletContext,这三个接口分别代表JSP中内置对象中的request、session、application。
Struts 2提供了一个ActionContext类,Struts 2的action可以通过该类来访问Servlet API
ActionContext类提供了一个静态方法getContext(),该方法返回一个ActionContext的实例。该实例提供了一些访问Servlet API的方法。
方法名
|
功能描述
|
getContext()
|
静态方法,获取系统的ActionContext实例
|
getSession()
|
返回一个Map对象,该对象存入HttpSession实例。
|
setSession(Map session)
|
直接传入一个Map实例,将该map实例总得key、value对应转换成session的属性名、属性值
|
getApplication()
|
返回一个Map对象,该对象存入ServletContext实例
|
setApplication()
|
直接传入一个Map实例,将实例中的key、value对应转换成application的属性名、属性值
|
getParameters()
|
获得所有请求参数。类似于调用HttpServletRequest对象的getParameterMap方法
|
ActionContext将在Action类中通过ActionContext访问Servlet API,该Action中示范了向request、session、application范围设置属性值。
struts 2即可以彻底与Servlet API 分离,从而可以允许该脱离Web容器运行,也就可以脱离Web容器来测试Action;又允许用简单的方式来操作request、session、application范围的属性。
Action 直接访问Servlet API
虽然Struts 2 提供了ActionContext来访问Servlet API,但这种访问毕竟不是直接获得Servlet API的实例。Struts 2 提供了几种接口,Action可以直接访问Servlet API
实现接口名称
|
接口描述
|
ServletContextAware
|
实现该接口的Action可以直接访问Web应用的ServletContext实例
|
ServletRequestAware
|
实现该接口的Action可以直接访问用户请求的HttpServletRequest实例
|
ServletResponseAware
|
实现该接口的Action可以直接访问服务器响应的HttpServletResponse
|
通过上面可知,实现ServletResponseAware接口,只需要实现如下方法:
public void setServletResponse(HttpServletResponse response);
类似的,如果一个Action实现了ServletRequestAware,则需要实现如下方法:
public void setServletRequest(HttpServletRequest request);
类似的,如果一个Action实现了ServletContextAware,则需要实现如下方法:
public void setServletContext(ServletContext context);
即使我们在struts 2 的Action类中获得了httpServletRespose对象,也不要尝试直接在Action中对客户端生成响应。
使用ServletActionContext访问Servlet API
为了能够直接访问Servlet API,struts 2 还提供了一个ServletAction工具类,这个类包含了如下几个静态方法
返回值
|
方法名
|
功能描述
|
HttpServletRequest
|
getRequest()
|
获得Web应用的HttpServletRequest对象
|
HttpServletResponse
|
getResponse()
|
获得Web应用的HttpservletResponse对象
|
ServletContext
|
getServletContext()
|
获得Web应用的ServletContext对象
|
PageContext
|
getServletContext()
|
获得Web应用的ServletContext对象
|
借助于ServletActionContext工具类的帮助,Action能以更加简单的方式来访问Servlet API。
读李刚《轻量级java EE企业应用实战(第三版)—struts 2+Spring 3+Hibernate整合开发》
分享到:
相关推荐
赠送原API文档:struts2-json-plugin-2.3.24-javadoc.jar; 赠送源代码:struts2-json-plugin-2.3.24-sources.jar; 赠送Maven依赖信息文件:struts2-json-plugin-2.3.24.pom; 包含翻译后的API文档:struts2-json-...
struts2-core-2.0.1.jar, struts2-core-2.0.11.1.jar, struts2-core-2.0.11.2.jar, struts2-core-2.0.11.jar, struts2-core-2.0.12.jar, struts2-core-2.0.14.jar, struts2-core-2.0.5.jar, struts2-core-2.0.6.jar,...
struts2-spring-plugin-2.3.15.2.jar ; struts2-json-plugin-2.3.16.3.jarstruts2-spring-plugin-2.3.15.2.jar ; struts2-json-plugin-2.3.16.3.jar
servlet-api-2.5.jar和jsp-api-2.1.jar
struts2-dom-api.jar
struts2-struts1-plugin-2.3.30.jar, struts2-testng-plugin-2.3.30.jar, struts2-tiles-plugin-2.3.30.jar, struts2-tiles3-plugin-2.3.30.jar, tiles-api-2.2.2.jar, tiles-compat-3.0.1.jar, tiles-core-2.2.2....
struts2-ssl-plugin-1.2.1.jar
struts2-json-plugin,Struts JSON插件
struts2-convention-plugin-2.3.32
struts2-dojo-plugin-2.3.4 jar 日期控件的jar包 需要的自行下载
struts2的标签使用的api,也是在网上下载的,挺好的
struts2-convention-plugin-2.3.15.1.jar
struts2-core-2.2.3.1-sources.jar struts2-core-2.2.3.1-sources.jar struts2-core-2.2.3.1-sources.jar
struts2-convention-plugin-2.3.24.1
struts2-dojo-plugin-2.2.1.jar, 直接导入到Struts2项目里即可,注意版本。
struts2-bean-validation-plugin-2.5.2.jar, struts2-cdi-plugin-2.5.2.jar, struts2-config-browser-plugin-2.5.2.jar, struts2-convention-plugin-2.5.2.jar, struts2-core-2.5.2.jar, struts2-dwr-plugin-2.5.2....
struts2-dojo-plugin-2.3.15.3.jar.zip
struts2-core-2.5.18.jar包下载,支持struts2的类库下载
struts2-jquery-plugin-3.1.0.jar
struts2-core-2.5.10.jar ,struts核心包,struts2-core-2.5.10.jar