truts2在Action中如何访问request,session,application(即ServletContext)对象????

方式一:与Servlet API解耦的方式
    
可以使用struts2中提供的Map对象来访问HttpRequest,HttpSession和ServletContext对象,要获取这三个Map对象,可以使用com.opensymphony.xwork2.ActionContext类提供的静态方法

ActionContext ctx=ActionContext.getContext();
   
ctx.getApplication().put(“app”,”Application应用对
象”);//ServletContext放入app
   
ctx.getSession().put(“ses”,”session应用对象”);
   
ctx.put(“req”,”request对象”);

######:
上面的三个方法,仅相当与request,session,applicationsetAttribute(string,object)方法。

struts2中提供的Map对象来提供类似request,session,application内置对象的功能,这些内置对象只有内置对象的一小部分功能,它不依赖于servlet,所以是解耦合的!!!

方式二:与Servlet
API耦合的访问方式

    
也可以直接访问Servlet环境中的HttpRequest,HttpSession和ServletContext对象。通过ServletActionContext.类提供的静态方法直接获取:


      
HttpServletRequest request=ServletActionContext.getRequest();
   
   ServletContext
context=ServletActionContext.getServletContext();
      
HttpSession session=request.getSession();
   
   HttpServletResponse
response=ServletActionContext.getResponse();

方式三、实现相关接口

    1. public class BaseAction extends ActionSupport implements SessionAware, ServletRequestAware, ServletResponseAware {  
    2. private static final long serialVersionUID = 7620009925942346125L;
    3. ActionContext context = ActionContext.getContext();
    4. HttpServletRequest request;
    5. HttpServletResponse response;
    6. SessionMap session;
    7. //获取request,response,session方式一,非IoC方式,不用实现SessionAware, ServletRequestAware, ServletResponseAware
    8. //ActionContext context = ActionContext.getContext();
    9. //HttpServletRequest request = (HttpServletRequest) context.get(ServletActionContext.HTTP_REQUEST);
    10. //HttpServletResponse response = (HttpServletResponse) context.get(ServletActionContext.HTTP_RESPONSE);
    11. //Map session = context.getSession();
    12. //SessionMap session = (SessionMap) context.get(ActionContext.SESSION);
    13. //获取request,response,session方式一,IoC方式,必须实现SessionAware, ServletRequestAware, ServletResponseAware
    14. public void setSession(Map map) {
    15. this.session = (SessionMap) map;
    16. }
    17. public void setServletRequest(HttpServletRequest request) {
    18. this.request = request;
    19. }
    20. public void setServletResponse(HttpServletResponse response) {
    21. this.response = response;
    22. }
    23. }

Struts2初学 Struts2在Action获取内置对象request,session,application(即ServletContext)的更多相关文章

  1. ASP内置对象—Request、Response 、Server、Application 、ObjectContent (二)

    Response (应答)对象 Request 对象.用于在HTTP请求期间,訪问不论什么client浏览器传递给server的信息,包含通过URL传递的參数信息.使用GET方法或POST方法传递的H ...

  2. JavaWeb——JSP内置对象request,response,重定向与转发 学习总结

    什么是JSP内置对象 九大内置对象 requestJSP内置对象 request对象常用方法 request练习 responseJSP内置对象 response练习 response与request ...

  3. JSP内置对象---request对象(用户登录页面(返回值和数组:gerParameter,getParameterValues))

    创建两个jsp页面:reg.jsp 和 request.jsp reg.jsp: <%@ page language="java" import="java.uti ...

  4. JSP学习笔记 - 内置对象 Request

    1.主要掌握以下5个内置对象及其所属类,必须学会在java docs里根据类名查找相应的方法 request     javax.servlet.http.HttpServletRequest res ...

  5. Webform(七)——内置对象(Session、Application)和Repeater的Command操作

    内置对象:用于页面之间的数据交互 为什么要使用这么内置对象?因为HTTP的无状态性. 一.内置对象 (一)Session 跟Cookies一样用来存储用户数据 1.Session.Cookies对比 ...

  6. JSP内置对象---request 对象

    request.jsp: <%@ page language="java" import="java.util.*" contentType=" ...

  7. 内置对象(Session、Application、ViewState)

    内置对象:为了跨页面传值和状态保持.→HTTP的无状态性 [4.]Session:每一台电脑访问服务器,都会是独立的一套session,key值都一样,但是内容都是不一样的 以上所有内容,都跟cook ...

  8. JSP的内置对象 request和response

    文章目录 1.request对象 2.response响应对象 3.out输出对象 4.session会话对象 5.application应用对象 概述 在使用JSP内置对象的时候.不需要先定义这些对 ...

  9. JSP内置对象-request

    JSP内置对象即无需声明就可以直接使用的对象实例,在实际的开发过程中,比较常用的JSP对象有request,response,session,out和application等,笔者在本文章中将简单介绍 ...

随机推荐

  1. mysql下float类型使用一些误差详解

    单精度浮点数用4字节(32bit)表示浮点数采用IEEE754标准的计算机浮点数,在内部是用二进制表示的如:7.22用32位二进制是表示不下的.所以就不精确了. mysql中float数据类型的问题总 ...

  2. RTF文件合并 备忘

    多个独立的rtf文件合并时,如果文件纸张方向存在横向 纵向不一致时,文件之间需要插入分节符 \pard \ltrpar\qj \li0\ri0\nowidctlpar\wrapdefault\aspa ...

  3. MYSQL错误1130:ERROR 1130: Host 10.10.36.115 is not allowed to connect to this MySQL server

    解决远程连接mysql错误1130代码的方法  在用远程连接Mysql服务器的数据库,不管怎么弄都是连接不到,错误代码是1130,ERROR 1130: Host 10.10.36.115 is no ...

  4. Vue.js前后端同构方案之准备篇——代码优化

    收录待用,修改转载已取得腾讯云授权 导语 目前Vue.js的火爆不亚于当初的React,本人对写代码有洁癖,代码也是艺术.此篇是准备篇,工欲善其事,必先利其器.我们先在代码层面进行优化,对我们完成整个 ...

  5. PLSQL初次登录oracle报错处理

    server1上面装了oracle client ,也装了plsql,但是登录了以后,不显示database 和connect as 手工输入正确的用户名和database后报错如下 于是就取消登录 ...

  6. 轻量级UIImageView分类缓存 库 AsyncImageView 使用

    轻量级UIImageView分类缓存 库 AsyncImageView 使用 一: AsyncImageView 主页:https://github.com/nicklockwood/AsyncIma ...

  7. TP框架中如何使用SESSION限制登录?

    TP框架中如何使用SESSION限制登录? 之前总是被问题今天才明白,最高效的来做页面访问限制问题. OOP思想中的继承特性,实现验证,是否已经登录,不必每个页面都进行判断. 实现如下: 继承Cont ...

  8. Python 默认参数

    定义默认参数 定义函数的时候,还可以有默认参数. 例如Python自带的 int() 函数,其实就有两个参数,我们既可以传一个参数,又可以传两个参数: >>> int('123') ...

  9. 【转】MVC4验证用户登录特性实现方法

    在开发过程中,需要用户登陆才能访问指定的页面这种功能,微软已经提供了这个特性. // 摘要: // 表示一个特性,该特性用于限制调用方对操作方法的访问. [AttributeUsage(Attribu ...

  10. chrome插件下载

      chrome插件下载2018 CreateTime--2018年3月5日11:21:21 Author:Marydon 插件推荐 如何获取? 文章顶部左上角是我的qq号,这些chrome插件加我免 ...