Web应用中通常需要访问的Servlet API就是HttpServletRequest、HttpSession和ServletContext,这三个接口分别代表JSP内置对象中的request、session和application。

1.使用Struts2提供的ActionContext类来访问Servlet API。下面是ActionContext类中包含的几个常用方法。

  Object get(Object key):该方法类似于调用HttpServletRequest的getAttribute(String name)方法。

  Map getApplication():返回一个Map对象,该对象模拟了该应用的ServletContext实例。

  static ActionContext getContext():静态方法,获取系统的ActionContext实例。

  Map getParameters():获取所有的请求参数。类似于调用HttpServletRequest对象的getParameterMap()方法。

  Map getSession():返回一个Map对象,该Map对象模拟了HttpSession实例。

  void setApplication(Map application):直接传入一个Map实例,将该Map实例里的key-value对转换成application的属性名、属性值。

  void setSession(Map session):直接传入一个Map实例,将该Map实例里的key-value对转换成session的属性名、属性值。

  eg:
  通过ActionContext设置application范围的属性

    ActionContext ctx = ActionContext.getContext();
    ctx.getApplication.put("name","aaa");

  通过ActionContext设置request范围的属性

   ctx.put("name","bbb");

2.虽然Struts2提供了ActionContext来访问Servlet API,但这种访问不是直接获得Servlet API的实例,为了直接在Action中访问Serlvet API,struts2提供了如下几个接口

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

  ServletRequestAware:实现该接口的Action可以直接访问用户请求的HttpServletRequest实例。

  ServletResponseAware:实现该接口的Action可以直接访问服务器响应的HttpSerlvetResponse实例。

3.使用ServletActionContext访问Servlet API

  为了能直接访问Servlet API,Struts2还提供了一个ServletActionContext工具类,这个类包含了如下几个静态方法。

  static PageContext getPageContext():取得Web应用的PageContext的对象。

  static HttpServletRequest getRequest():取得Web应用的HttpServletRequest对象。

  static HttpServletResponse getResponse():取得Web应用的HttpServletResponse对象。

  static ServletContext getServletContext():取得Web应用的ServletContext对象。

Struts2笔记--Action访问Servlet API的更多相关文章

  1. struts2的action访问servlet API的三种方法

    学IT技术,就是要学习... 今天无聊看看struts2,发现struts2的action访问servlet API的三种方法: 1.Struts2提供的ActionContext类 Object g ...

  2. Struts 2读书笔记-----Action访问Servlet API

    Action访问Servlet API Struts2中的Action并没有和任何Servlet API耦合,这样框架更具灵活性,更易测试. 对于Web应用的控制器而言,不访问ServletAPI是几 ...

  3. struts2 笔记01 登录、常用配置参数、Action访问Servlet API 和设置Action中对象的值、命名空间和乱码处理、Action中包含多个方法如何调用

    Struts2登录 1. 需要注意:Struts2需要运行在JRE1.5及以上版本 2. 在web.xml配置文件中,配置StrutsPrepareAndExecuteFilter或FilterDis ...

  4. 笔记01 登录、常用配置参数、Action访问Servlet API 和设置Action中对象的值、命名空间和乱码处理、Action中包含多个方法如何调用

    Struts2登录 1. 需要注意:Struts2需要运行在JRE1.5及以上版本 2. 在web.xml配置文件中,配置StrutsPrepareAndExecuteFilter或FilterDis ...

  5. Action访问Servlet API的三种方法

    一.为什么要访问Servlet API ? Struts2的Action并未与Servlet API进行耦合,这是Struts2 的一个改良,从而方便了单独对Action进行测试.但是对于Web控制器 ...

  6. Struts2学习笔记(五)——Action访问Servlet API

    在Strut2中访问Servlet API有三种方式: 1.通过ActionContext访问Servlet API,推荐使用这种,但是这种方案它获取的不是真正的事Servlet API. 步骤: 1 ...

  7. Action访问Servlet API

    访问Servlet API 1.通过ActionContent类访问Servlet API ActionContext中访问Servlet API的几个常用的方法: (1)Map getApplica ...

  8. Struts2学习二----------访问Servlet API

    © 版权声明:本文为博主原创文章,转载请注明出处 Struts2提供了三种方式去访问Servlet API -ActionContext -实现*Aware接口 -ServletActionConte ...

  9. Struts2学习笔记三 访问servlet

    结果跳转方式 转发 <!-- 转发 --> <action name="Demo1Action" class="cn.itheima.a_result. ...

随机推荐

  1. Entity Framework(四)--EF原理和状态管理

    一.原理: 如何查看真正执行的SQL是怎样的? DbContext有一个Database属性,Database属性有一个Log属性,是Action委托类型其中的参数就是sql语句,每次EF执行sql语 ...

  2. Leetcode 662.二叉树最大宽度

    二叉树最大宽度 给定一个二叉树,编写一个函数来获取这个树的最大宽度.树的宽度是所有层中的最大宽度.这个二叉树与满二叉树(full binary tree)结构相同,但一些节点为空. 每一层的宽度被定义 ...

  3. DB2数据库的日志文件管理

    DB2数据库的日志文件管理 DB2的日志模式 1.1循环日志 当循环日志生效时,事务数据将通过循环的方式写入主要日志文件.当存储于某个日志文件中的所有记录都不再需要用于恢复时,该日志文件将被重用,并且 ...

  4. JavaWeb笔记(三)HTTP

    常见请求头 User-Agent:浏览器版本信息,可以解决浏览器兼容性问题 Referer:请求来源地址,可以防盗链和统计 Request 方法 获取请求方式: String getMethod() ...

  5. java作业 2017.10.14

    课后作业一 1.设计思想: (1)通过组合数公式计算:分别输入中的n和k的值.定义一个计算n!的方法,然后调用方法分别计算出n!,k!,(n-k)!,然后通过公式=n!/(k!*(n-k)!)算出的值 ...

  6. GDI+实现双缓冲绘图方法一

    private void Form5_MouseMove(object sender, MouseEventArgs e) { int intOX = rectDrawArea.X; int intO ...

  7. 小木乃伊到我家 dijkstra + 链表 + 优先队列

    https://ac.nowcoder.com/acm/contest/96/E?&headNav=www&headNav=acm 题目描述   AA的欧尼酱qwb是个考古学家,有一天 ...

  8. 日常收集整理些js经典实例

    跨浏览器添加事件 //跨浏览器添加事件 function addEvent(obj,type,fn){ if(obj.addEventListener){ obj.addEventListener(t ...

  9. Codeforces Round #325 (Div. 2) A

    A. Alena's Schedule time limit per test 1 second memory limit per test 256 megabytes input standard ...

  10. stringutil的方法

    StringUtils 源码,使用的是commons-lang3-3.1包. 下载地址 http://commons.apache.org/lang/download_lang.cgi 以下是Stri ...