`

Struts2获得rquest,application,session

阅读更多

Struts 2提供了多种方式来访问上述的三种对象,归结起来,可以划分为两大类:与Servlet API解耦的访问方式和与Servlet API耦合的访问方式。

与Servlet API解耦的访问方式

为了避免与Servlet API耦合在一起,方便Action类做单元测试,Struts 2对HttpServletRequest、HttpSession和ServletContext进行了封装,构造了三个Map对象来替代这三种对象,在Action中,直接使用HttpServletRequest、HttpSession和ServletContext对应的Map对象来保存和读取数据。

要获取这三个Map对象,可以使用com.opensymphony.xwork2.ActionContext类,ActionContext是action执行的上下文,在ActionContext中保存了action 执行所需的一组对象,包括parameters、request、session、application和locale等。ActionContext 类定义了如下方法,用于获取HttpServletRequest、HttpSession和ServletContext对应的Map对象。

public Object get(Object key)

ActionContext类没有提供类似getRequest()这样的方法来获取封装了HttpServletRequest的Map对象。要得到请求Map对象,你需要为get()方法传递参数“request”。


public Map getSession()

获取封装了HttpSession的Map对象。


public Map getApplication()

获取封装了ServletContext的Map对象。

 

ActionContext context = ActionContext.getContext();

Map request = (Map)context.get("request");

Map session = context.getSession();

Map application = context.getApplication();
    

与Servlet API耦合的访问方式
要获得上述对象,关键Struts 2.0中com.opensymphony.xwork2.ActionContext类。通过它的静态方法getContext()获取当前Action的上下文对象。另外,org.apache.struts2.ServletActionContext作为辅助类,可以帮助您快捷地获得这几个对象。

 

HttpServletRequest request = ServletActionContext.getRequest();

ActionContext ct= ActionContext.getContext();

HttpServletRequest request=HttpServletRequest)ct.get(ServletActionContext.HTTP_REQUEST);

HttpServletResponse response = ServletActionContext.getResponse();

HttpSession session = request.getSession();
分享到:
评论

相关推荐

    监听器:监听三个对象的创建和销毁方法

    三个对象:rquest,session,ServletContext 实现的接口:ServletRequestListener,HttpSessionListener,ServletContextListener 工程的大致步骤: 1.自定义实现三个监听器的类 2.使用注解的方法注册监听器 3....

    rquest:公开完整的http请求生成为轻量级且简单的API

    Rquest使构建请求变得容易,并且使您可以完全控制请求的各个方面。 我是根据chrome扩展邮递员建模的。 使用邮递员可以完成的所有工作,都可以使用Rquest进行,并且遵循相同的直观工作流程。 另外,Rquest是一个...

    postman使用

    随着前后端分离开发模式的日益普及,API测试工具Postman因其强大的功能和易用性,在软件开发领域获得了广泛的应用。本文将详细介绍如何利用Postman结合Java中的`@RequestBody`注解进行参数传递,并通过示例帮助读者...

    Python爬虫实例-urllib-request-parse等包的学习实例

    Python爬虫实例-urllib,request,parse,json等包的应用

    IDEA Fast xxx Request

    资源名称暂时避嫌,名称以及操作需要注意。 本资源为IDEA中的插件,插件版本是1.7,如果有使用或者需要使用的,请把插件名称写在评论区供他人了解,谢谢! 插件地址: C:\Users\XXX\AppData\Roaming\JetBrains\...

    baidu_dsp:与百度adx对接

    一、rquest 安装步骤: 1. 安装protobuf 及python 环境 在 下载源码 tar -zxvf protobuf-2.4.1.tar.gz (需要高于2.4.1) cd protobuf-2.4.1; ./autogen.sh (如果无法下载gmock,安装本地tar包,并修改autogen.sh脚本...

    http调用webservice操作httprequest、httpresponse示例

    WebService中通过HttpContext.Current.Rquest/Response,我们一样也可以改造WebMethod。 客户端: 代码如下:// 创建一个DataTable  DataTable data = new DataTable(“Project”);  data.Columns.Add(“Name”);...

    meeka-quest:微服务为以下任务服务

    /rquest 返回一个随机任务/list5 返回5个随机任务的列表/findbyid/:id 通过其ID获取任务去做/list/:count应该返回给定长度的列表,其中包含随机任务/list/:count/:type应该返回给定长度的列表,并填充给定type随机...

    Hart通信标准指令集

    - **#3** NUMBER RQUEST PREAM - **#4** UNIV CMD REV - **#5** TRANS SPEC REV - **#6** SOFT REV - **#7** HARD REV - **#8** FLAGS - **#9** DEVICE ID NUMBER MSB - **#10** DEVICE ID NUMBER LSB 其中: - ...

    z_nlp:一些使用(AI)NLP 和 node.js 的实验

    如果您愿意做出贡献,请选择其中一个,创建一个分支并在准备好后进行 Pull Rquest。一定有(西班牙语) 用于生成数据模型(NLP、ML) 沙盒图形用户界面分析 GUI 输入的文本押韵分析节奏分析指标分析主题分析情绪...

    medium-editor-polymer:用于中型编辑器项目的聚合物集成

    如果有需要改进的地方,请提交pull-rquest或给我发送电子邮件。待办事项清单仍然需要做一些事情来改善项目: 添加测试(尚未弄清楚该怎么做。) 集成构建系统(例如,)如何使用第一步是将编辑器包含在HTML文件中:...

    javax.servlet-api

    在Java世界中,Servlet是用于开发Web应用程序的核心技术之一,它允许程序员通过HTTP协议与Web服务器进行交互。`javax.servlet-api`是一个关键的Java库,它定义了Servlet、过滤器(Filter)和监听器(Listener)等...

    mod_request_dumper:在每个钩子阶段输出 request_rec、server_rec、conn_rec

    将 rquest_rec 转储到 /tmp/apache_dump.log 或管道。安装 makemake install设置为 httpd.conf 加载 LoadModule request_dumper_module /usr/lib/httpd/modules/mod_request_dumper.so设置登录文件模式 ...

Global site tag (gtag.js) - Google Analytics