Struts 2读书笔记-----Action访问Servlet API
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
|
方法名 |
功能描述 |
|
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范围设置属性值。
- ActionContext ctx = ActionContext.getContext();
- //获得Session
- Map session = ctx.getSession();
- //获得Application
- Map application = ctx.getApplication();
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 |
- <span style="font-size:13px;"> private HttpServletResponse response;
- //重写实现ServletResponseAware接口
- public void setServletResponse(HttpServletResponse response) {
- this.response = response;
- }</span>
通过上面可知,实现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整合开发》
Struts 2读书笔记-----Action访问Servlet API的更多相关文章
- Struts2笔记--Action访问Servlet API
Web应用中通常需要访问的Servlet API就是HttpServletRequest.HttpSession和ServletContext,这三个接口分别代表JSP内置对象中的request.se ...
- struts2 笔记01 登录、常用配置参数、Action访问Servlet API 和设置Action中对象的值、命名空间和乱码处理、Action中包含多个方法如何调用
Struts2登录 1. 需要注意:Struts2需要运行在JRE1.5及以上版本 2. 在web.xml配置文件中,配置StrutsPrepareAndExecuteFilter或FilterDis ...
- 笔记01 登录、常用配置参数、Action访问Servlet API 和设置Action中对象的值、命名空间和乱码处理、Action中包含多个方法如何调用
Struts2登录 1. 需要注意:Struts2需要运行在JRE1.5及以上版本 2. 在web.xml配置文件中,配置StrutsPrepareAndExecuteFilter或FilterDis ...
- Action访问Servlet API的三种方法
一.为什么要访问Servlet API ? Struts2的Action并未与Servlet API进行耦合,这是Struts2 的一个改良,从而方便了单独对Action进行测试.但是对于Web控制器 ...
- struts2的action访问servlet API的三种方法
学IT技术,就是要学习... 今天无聊看看struts2,发现struts2的action访问servlet API的三种方法: 1.Struts2提供的ActionContext类 Object g ...
- Struts2学习笔记(五)——Action访问Servlet API
在Strut2中访问Servlet API有三种方式: 1.通过ActionContext访问Servlet API,推荐使用这种,但是这种方案它获取的不是真正的事Servlet API. 步骤: 1 ...
- Action访问Servlet API
访问Servlet API 1.通过ActionContent类访问Servlet API ActionContext中访问Servlet API的几个常用的方法: (1)Map getApplica ...
- 关于Struts2自动装配和访问Servlet API
自动装配 1.根据属性的getter和setter获取值 index.jsp <s:form action="hello" method="POST"& ...
- Action访问Servlet的API
Action访问Servlet的API_,主要访问如下: 1.>获取request对象 2.>获取请求参数 3.>获取response对象,可用于传递cookie 3.>获取作 ...
随机推荐
- ADO.NET DataReader和DataAdapter的区别
SqlDataReader是一个向前的指针,本身并不包含数据,调用一次 Read() 方法它就向前到下一条记录,一个SqlDataReader必须单独占用一个打开的数据库连接. 在使用 SqlData ...
- o2o
o2o(电子商务名词) -- 百度名片 O2O即Online To Offline(在线离线/线上到线下),是指将线下的商务机会与互联网结合,让互联网成为线下交易的前台,这个概念最早来源于美国.O2O ...
- Opensuse13.2开启ssh
要开启ssh很简单,步骤分为三步 步骤1: 安装ssh zypper install ssh 步骤2:启动ssh daemon网上很多通过 service 命令或者 init.d 目录中的脚本启动ss ...
- javascript取消disabled属性
jQuery: $("#ID").attr("disabled",false);
- 移动web前端的一些硬技能(一)关于移动设备
移动端web其实也就是小尺寸触摸屏设备的web,其中包含了两个词——1.小尺寸设备:2.触摸屏.能把这两个问题给解决掉,就已经是一个基本合格的移动web前端开发工程师了.对于前端工程师来说,前路漫漫, ...
- POJ1015 动态规划
POJ1015 问题重述: 在n个候选者中选取m个人进入陪审团.每个候选者获得两项评分:D[j],P[j].求解最佳评审团,使得在每个成员的两项评分和之差 最小的情况下,使得两项评分和之和 最大. 分 ...
- 使用grid++report打印选中行
接上一篇<hibernate+spring+mvc+Easyui框架模式下使用grid++report的总结>对grid++report做进一步开发 先写一下实现流程: 1.默认为全部载入 ...
- 使用Hexo搭建GitPage
资料: hexo官方文档:https://hexo.io/zh-cn/docs/ jekyll官方文档:http://jekyll.com.cn/docs/home/ 简介: 使用hexo和jekyl ...
- ng-repeat-start ng-repeat-end 的使用
ng-repeat-start与ng-repeat-end时AngularJS(1.2.x)扩展的, 使用这两个指令可以灵活控制遍历形式. 例如: index.html <div class=& ...
- hdu 1317 XYZZY
http://acm.hdu.edu.cn/showproblem.php?pid=1317 #include <cstdio> #include <queue> #inclu ...