request、session、application

一、基础知识

可以看看  浅谈:request,session,application (http://blog.csdn.net/hzc543806053/article/details/7416007)

要点:

作用域: request<session<application

共同方法:都可以使用 setAttribute(String name , Object o ) ,getAttribute(String name)

二、在java中获取这三个对象

可以看以下原文 :http://www.blogjava.net/xcp/archive/2009/10/23/struts2_actioncontext1.html?opt=admin

2.1 struts2封装后的三个Map  (使用ActionContext)

import java.util.Map;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;........ActionContext context = ActionContext.getContext();
Map request = (Map) context.get("request");
Map session = context.getSession();
Map application = context.getApplication();

2.2 与Servlet API耦合的访问方式(非IoC方式,使用ServletActionContext)

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

三、ActionContext和ServletActionContext的区别

  我们知道struts2接受客户端请求,在Action中进行处理后,将视图结果返回。struts2容器自身不依赖于web容器,不用和servlet对象中的请求(request)、响应(response)进行关联,对于请求的参数,通过paramerInterceptor将参数封装在Action中,然后通过调用get、set方法将参数值设置进Action之中。如果仅仅获取参数,可能有时候满足不了开发的需求,有时我们要获取request或者response中的信息,要对其进行设置、处理。

3.1 ActionContext

  是Action执行的上下文,Action的上下文可以看作是一个容器,里面封装了请求(Request)、会话(Session)、 Application等,这里面的Request、Session、Application是Map类型的,往里面封装的是键值对,所以这就体现了 struts2不与底层servlet Api打交道,那么对很多web的相关对象进行封装,这样可以达到Action与web层解耦。

3.2 ServletActionContext

  它继承ActionContext,所以ServletActionContext也可以得到HttpServetRequest、HttpServletResponse,,它也提供了直接与Servlet相关对象访问的功能.

总结:不难看出,两者之间还是存在很多共同功能,那么我们还是根据自己的需求进行选择,能用ActionContext对象满足就尽量使用ActionContext,避免让我们直接去访问Servlet对象。另外,不要在Action还没实例化的时候去通ActionContext调用方法,因为Action实例在ActionContext实例之前创建,ActionContext中一些值还没有设置,会返回null。

4. application实例  (统计在线人数 )

4.1 登录程序中 LoginAction.java

//统计在线人数Map application = ActionContext.getContext().getApplication();Integer count = (Integer) application.get("count");if(null == count){count=1;}else{count++;}application.put("count", count);

4.2 注销程序中 ExitAciton.java

Map application = ActionContext.getContext().getApplication();Integer count = (Integer) application.get("count");count--;application.put("count", count);

转载于:https://www.cnblogs.com/pxjgood/p/3991945.html

暑期项目经验(九) -- request session application相关推荐

  1. JSP之四大作用域(pageContext,request,session,application)

    JSP的四大作用域的存储和获取数据的方式一样,差别在于取值的范围不同. 四大域各自作用范围为: pageContext:当前JSP页面有效 request:请求有效 session:会话有效(关闭浏览 ...

  2. 通过ActionContext获取request session application 以及ActionContext的简单解析

    ActionContext:action的上下文对象. 获取application : // 获取ActionContext对象 是action的上下文对象 ActionContext actionC ...

  3. 观看慕课老师milanlover视频JavaBean+Jsp动作元素+page/request/session/application作用域范围+Model1

    Javabeans类写在src包里. 建一个实体类的po包,建一个用户类. 使用普通方式创建javabean实例: 新建Users.java: package com.po; /*用户类*/ publ ...

  4. 对request,session,application作用域形象理解

    看到一篇比较有意思的文章,分享一下.原网址:http://blog.csdn.net/rushkid02/article/details/8063792 几乎所有的Web开发语言都支持Session功 ...

  5. 暑期项目经验(十)--struts + poi

    struts + poi 一.poi知识讲解 可以下载 孔浩老师 的poi视频,其中封装的四个工具类,很好用,能方便应用到项目中. 二.poi实例 1.引入jar包 2. 引入四个工具类 1 pack ...

  6. 网页计数器 javabean session application 多种方法实现

    运用session,javabean,servlet实现网页计数器  目录 一.运行结果 二.原理 1.session 2.Javabean 但是有个小问题 3.application 三.代码分享 ...

  7. Java项目经验——程序员成长的关键

    2019独角兽企业重金招聘Python工程师标准>>> Java就是用来做项目的!Java的主要应用领域就是企业级的项目开发!要想从事企业级的项目开发,你必须掌握如下要点: 1.掌握 ...

  8. Java项目经验是程序员成长的重要经验

    没有人愿意自己一辈子就满足于掌握了一些代码实现的技巧,别人告诉你要实现什么,你就用代码堆砌来实现别人的要求!你必须学会从整个项目的角度去思考!你必须学会假如你是项目经理,你该如何思考! 我在疯狂软件j ...

  9. java开发项目经验_Java项目经验——程序员成长的钥匙

    今天给大家分享一篇Java项目经验,希望可以给正在成长中的新手Java程序员一个学习的方向! Java是用来做项目的!Java的主要应用领域就是企业级的项目开发!要想从事企业级的项目开发,你必须掌握如 ...

最新文章

  1. 【prometheus API】删除指定指标数据
  2. 用php脚本获取服务内容,如何使用PHP脚本仅获取数据库的内容
  3. 奈飞文化手册_《奈飞文化手册》速阅提炼分享3
  4. queue,stack中的库函数
  5. Android、netassist进行UDP通信
  6. ape flac 音频截取_为什么选择FLAC音频
  7. react-router-dom文档
  8. 使用tftpd32.exe升级IPC
  9. 【其他】Tensorflow分布式使用简介
  10. 微信小程序:图标的使用(icon)
  11. Elasticsearch6.4专题之16:Ingest Node
  12. TF-IDF的原理概述
  13. 国庆假期欣赏机械之美
  14. the type xxx cannot be resoved,It is indirectly referenced from required .class files错误.....
  15. vue-devtools安装文件
  16. 知乎live+私家课合集
  17. eclipse工作空间-文件夹org.eclipse.m2e.core-maven索引占空间问题
  18. 小红书发布2022年美妆用户洞察报告,近八成用户选它
  19. 【bzoj1143】[CTSC2008]祭祀river Floyd+网络流最小割
  20. JavaScript中的画星星效果

热门文章

  1. “精彩极了”和“糟糕透了”
  2. 【数据结构基础应用】【查找和排序算法】
  3. zemax微透镜阵列示例_阵列反向! Ruby中的示例方法
  4. c中将数组传递给子函数_在C ++中将对象传递给Non-Member函数
  5. c++语句switch语句_错误:案例标签不在C中的switch语句内
  6. kotlin 判断数字_Kotlin程序检查给定数字是正数,负数还是零
  7. VMware创建Ubuntu操作系统到网络配置详细流程
  8. ffplay分析 (seek操作处理)
  9. 分析FLV文件分析和解析器的开源代码
  10. python集合应用场景_python 集合的应用