暑期项目经验(九) -- request session application

            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();

 

三、ActionContextServletActionContext的区别

  我们知道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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/399005.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle 还原dmp时_报错的值太大,基于oracle数据库的CLOUD备份恢复测试

CLOUD oracle数据库备份恢复测试强烈建议使用expdp/impdp&#xff0c;因为&#xff1a;在expdp的时候Oracle不会再依赖和参考NLS_LANG的设置&#xff0c;而是完全按照数据库本身的字符集导出数据&#xff0c;impdp的时候&#xff0c;Oracle会自动判断如果dmp文件中的字符集和目…

Servlet读取文件的最好的方式

在java web 开发的时候不可避免的会读取文本信息&#xff0c;但是方式不同&#xff0c;所付出的代价也是不一样的&#xff0c;今天学到了一个比较好的实用性的技巧&#xff0c;拿来与大家分享一下。 读取属性配置文件 之所以说成是读取属性&#xff08;properties)文件&#xf…

Form.php 日期表单,Bootstrap日期和时间表单组件使用方法

提取其中的主要文件js/bootstrap-datetimepicker.js和css/bootstrap-datetimepicker.min.css1.引入bootstrap.min.css&#xff0c;因為其樣式包含在此文件中2.引入jquery.js&#xff0c;因為bootstrap是依賴於jquery的3.引入bootstrap.min.js以上是必備內容4.引入日期組件的css…

amp; 的意思

&amp是什么意思? <bean> <property name"jdbcUrl" value"jdbc:mysql://127.0.0.1:3306/spring?useUnicodetrue&amp;characterEncodingutf8"> </property> </bean> 这里面的&amp;是什么意思? 解答&#xff1a; &…

Bootstrap 排版

2019独角兽企业重金招聘Python工程师标准>>> Bootstrap 使用 Helvetica Neue、 Helvetica、 Arial 和 sans-serif 作为其默认的字体栈。 使用 Bootstrap 的排版特性&#xff0c;您可以创建标题、段落、列表及其他内联元素。 标题 Bootstrap 中定义了所有的 HTML 标题…

基于小波包的图像压缩及matlab实现,基于小波包的图像压缩及matlab实现精选.doc...

基于小波包的图像压缩及matlab实现精选基于小波包的图像压缩及matlab实现摘要&#xff1a;小波包分析理论作为新的时频分析工具&#xff0c;在信号分析和处理中得到了很好的应用&#xff0c;它在信号处理、模式识别、图像分析、数据压缩、语音识别与合成等等许多方面都取得了很…

为div添加滚动效果:

为div添加滚动效果: .xxxx{  width: 100%;height: 100%;overflow: hidden;overflow-y: auto;} 代码片段 <div class"xxxx"><div>aaa</div><div>aaa</div><div>aaa</div><div>aaa</div><div>aaa</d…

php读取子目录下文件内容,php小代码----目录下读取子文件或子目录_PHP教程

php小代码----目录下读取子文件或子目录rootPath $rootPath;if (is_dir($this->rootPath)) {$this->rootPath pathinfo($this->rootPath, PATHINFO_DIRNAME) . DIRECTORY_SEPARATOR . pathinfo($this->rootPath, PATHINFO_BASENAME);$this->opDirectory dir(…

Apache Lens —— 统计数据分析查询接口

Lens 提供了一个统一数据分析接口。通过提供一个跨多个数据存储的单一视图来实现数据分析任务切分&#xff0c;同时优化了执行的环境。无缝的集成 Hadoop 实现类似传统数据仓库的功能。 该项目主要特性&#xff1a; 简单元数据层为数据存储提供抽象视图层 单一的共享模式服务器…

js文件中调用另一个js文件:

document.write("<script languagejavascript src/UEditor/uparse.js></script");转载于:https://www.cnblogs.com/flywing/p/3998261.html

JDK8新特性-java.util.function-Predicate接口

上篇主要对Function函数进行了简单了解&#xff0c;本篇则主要了解Predicate。该函数的主要作用其实就是判定输入的对象是否否和某个条件&#xff0c;然后将其布尔值返回。 主要使用方法如下&#xff1a; //唯一的抽象方法 boolean test(T t); //且操作&#xff0c;既满足A也满…

linux查服务器总内存大小,在linux 下怎么查看服务器的cpu和内存的硬件信息

1&#xff0c;Linux下可以在/proc/cpuinfo中看到每个cpu的详细信息。但是对于双核的cpu&#xff0c;在cpuinfo中会看到两个cpu。常常会让人误以为是两个单核的cpu。其实应该通过Physical Processor ID来区分单核和双核。而Physical Processor ID可以从cpuinfo或者dmesg中找到. …

ZIP打包解包

linux zip命令的基本用法是&#xff1a; zip [参数] [打包后的文件名] [打包的目录路径] linux zip命令参数列表&#xff1a; -a 将文件转成ASCII模式-F 尝试修复损坏的压缩文件-h 显示帮助界面-m 将文件压缩之后&#xff0c;删除源文件-n 特定字符串 不压缩具有特定字尾字符串…

HTML5 上传图片预览

html5出现之前如果需要上传图片预览 一般都是先上传到服务器然后远程预览 html5出现之后 有个filereader 解决了这问题 //选中图片之后$("#fileAddPic").on(change, function (e) {var files e.target.files || e.dataTransfer.files;onSelect(files);})//选中图片…

博客园自动显示随笔标签

title: 博客园自动显示随笔标签 date: 2018-01-03 20:52:22 tags: 浏览器脚本 categories: 前端 在添加随笔页自动显示已有标签&#xff0c;不用点击插入已有标签 效果如图 安装链接https://greasyfork.org/zh-CN/scripts/36809-%E5%8D%9A%E5%AE%A2%E5%9B%AD%E6%98%BE%E7%A4%BA…

linux 进程代码,怎样从Linux终端管理进程:10个你必须知道的命令

Linux终端有一系列有用的命令。它们可以显示正在运行的进程、杀死进程和改变进程的优先级。本文列举了一些经典传统的命令和一些有用新颖的命令。本文提到的命令会实现某个单一功能。它们可以结合起来——这也是Unix设计程序的理念。其它命令&#xff0c;例如htop,会在命令的上…

c# datagridviewcomboboxcell值无效的解决办法

一直认为是数据库存储的数据和datagridviewcomboboxcell对不上导致&#xff0c;今天碰到两者对应上了&#xff0c;预览的时候还是提示错误&#xff0c; 查看了下网上其他大神的解决方法&#xff0c;是数据库字段类型有误&#xff0c;查看了下&#xff0c;当下拉菜单中包含中文字…

python object类

这个应为写得&#xff0c;写得蛮啰嗦的&#xff0c;建议耐心的人看看&#xff1a;http://www.cafepy.com/article/python_types_and_objects/python_types_and_objects.html 知乎&#xff1a;http://www.zhihu.com/question/19754936 新式类&#xff0c;不学也没关系。看了一堆…

linux符号命令,Linux_几个符号命令(示例代码)

一、管道符号 | (将前面命令的输出结果传给后面的命令)[[email protected] ~]$ cat /etc/passwd | grep "^root"root:x:0:0:root:/root:/bin/bash二、重定向符号 [>] [[[email protected] ~]# df > /usr/tmp/df.txt # >:输入重定向 即将命令结果重定向给df.…