今天在图书馆遇到了问题 不知道怎么选择session还是request

**Web应用中的JSP和servlet都是由web服务器来调用,Jsp和Servlet之间通常不会相互调用,那么Jsp和Servlet之间交换数据就要用到application、session、request和page **

 1、application:对于整个web应用有效,一旦JSP、Servlet将数据放入appllication中,该数据将可以被该应用下其他所有的JSP和Servlet访问。
2、session:仅对一次会话有效,一旦JSP、Servlet将数据放入session中,该数据将可以被本次会话的其他所有的JSP、Servlet访问。
3、request:仅对本次请求有效,一旦JSP、Servlet将数据放入request中,该数据将可以被该次请求的其他JSP、Servlet访问。
4、page:仅对当前页面有效,一旦JSP、Servlet将数据放入page中,该数据只可以被当前页面的JSP脚本、声明部分访问。

**JSP中的application、session、request和pageContext 这四个内置对象分别用于操作application、session、request和page范围中的数据。 **

 application对象代表web应用本身,因此使用application来操作web应用相关数据。
application对象通常有两个作用:
1、在整个Web应用的多个JSP、Servlet之间共享数据。
2、访问Web应用的配置参数。
session长驻在服务器内存里,session有id标识,一个session专供一个用户使用。
request只能存在于一次访问里,为了让每次访问区分开是哪个用户,所以request中会带上session的id标识,就是每个request都会属于一个session,一个session能为很多次request服务。类似于数据库的多对一关系
所以request.getSession的本质是使用request中的session id去找到这个用户对应的session

第二种

1.request
request对象内数据的存活范围就是在request对象的存活范围内,当客户端向服务器端发送一个请求,服务器向客户端返回一个响应后,该请求对象就被销毁了;之后再向服务器端发送新的请求时,服务器会创建新的request对象,该request对象与之前的request对象没有任何关系,因此也无法获得在之前的request对象中所存在的任何数据。 2.session
session对象内数据的存活范围也就是session对象的存活范围(现在可以这样简单理解:只要不关闭浏览器,session对象就会一直存在(严谨的说这样的说法是错误的!)),因此在同一个浏览器窗口中,无论向服务器端发送多少请求,session对象只有一个。 3.application
application(应用对象):存活的范围最大的对象,只要服务器没有关闭,application对象中的数据就会一直存在。在整个服务器运行过程当中,application对象只有一个。

java中request/session/application三大域对象的作用范围

//只要服务器不关闭,计数器一直有效,即使在不同的浏览器内访问!

//若把application换成session,只能在一个会话中有效,关闭浏览器计数器就不在有效

//若把application换成request,每次刷新浏览器进行请求时,计数器只显示1

2017.11.11 详谈application、session、request和page的作用范围的更多相关文章

  1. application、session、request、page的作用范围、Application,Session和Cookie的区别

    Web应用中的JSP和servlet都是由web服务器来调用,Jsp和Servlet之间通常不会相互调用,那么Jsp和Servlet之间交换数据就要用到application.session.requ ...

  2. JSP的内置对象application、session、request、page的作用域

    1.application内置对象的类型名称为ServletContext. 2.session内置对象的类型名称为HttpSession. 3.application作用域:对应整个应用上下文. a ...

  3. Action的搭建及application、request、Session的运用 多种方法

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  4. 2017年11月Dyn365/CRM用户社区活动报名

    UG是全球最大Dynamics的用户组织,由最终用户自发组织,由行业有经验的专家自愿贡献知识和经验的非营利机构,与会人员本着务实中立的态度,不进行推介产品,服务以及其他营销行为.在美国,微软Dynam ...

  5. .NET CORE 使用Session报错:Session has not been configured for this application or request

    报错信息:Session has not been configured for this application or request 解决方案:在Startup.cs文件中的Configure方法 ...

  6. WPS 表格筛选两列相同数据-完美-2017年11月1日更新

    应用: 1.选出A列中的数据是否在B列中出现过: 2.筛选出某一批序号在一个表格里面的位置(整批找出) 3.其实还有其他很多应用,难描述出来... ... A列中有几百的名字,本人想帅选出B列中的名字 ...

  7. 2017年11月GitHub上最热门的Java项目出炉

    2017年11月GitHub上最热门的Java项目出炉~ 一起来看看这些项目你使用过哪些呢? 1分布式 RPC 服务框架 dubbohttps://github.com/alibaba/dubbo S ...

  8. 2017.11.11 B201 练习题思路及解题方法

    2017.11.11 B201 练习题思路及解题方法 题目类型及涵盖知识点 本次总共有6道题目,都属于MISC分类的题目,涵盖的知识点有 信息隐藏 暴力破解 音轨,摩斯电码 gif修改,base64原 ...

  9. 【主席树维护mex】 【SG函数递推】 Problem H. Cups and Beans 2017.8.11

    Problem H. Cups and Beans 2017.8.11 原题: There are N cups numbered 0 through N − 1. For each i(1 ≤ i ...

随机推荐

  1. sf01_什么是数据结构

    数据结构解决什么问题 如何在计算机中存储数据和信息,采用什么样的方法和技巧加工处理这些数据,都是数据结构需要努力解决的问题. 解决问题的步骤 使用计算机解决问题的步骤:分析具体问题得到数学模型,设计解 ...

  2. java将pdf转成base64字符串及将base64字符串反转pdf

    package cn.wonders.utils; import java.io.BufferedInputStream;import java.io.BufferedOutputStream;imp ...

  3. maya2014安装失败如何卸载重装

    AUTODESK系列软件着实令人头疼,安装失败之后不能完全卸载!!!(比如maya,cad,3dsmax等).有时手动删除注册表重装之后还是会出现各种问题,每个版本的C++Runtime和.NET f ...

  4. Unity Screen Screen.SetResolution 设置分辨率

    Screen.SetResolution 设置分辨率 C# => public static void SetResolution(int width, int height, bool ful ...

  5. 牛客网Java刷题知识点之什么是进程、什么是线程、什么是多线程、多线程的好处和弊端、多线程的创建方式、JVM中的多线程解析、多线程运行图解

    不多说,直接上干货! 什么是进程? 正在进行中的程序(直译). 什么是线程? 就是进程中一个负责程序执行的控制单元(执行路径). 见 牛客网Java刷题知识点之进程和线程的区别 什么是多线程? 一个进 ...

  6. 数据结构之C语言模拟整数数组实现

    #include <stdio.h> #include <malloc.h> #include <stdlib.h> typedef struct Arr { in ...

  7. 连接虚机中的mysql服务

    1:修改mysql库中的user表的root用户的host值为% 2:授权:在mysql命令中执行 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFI ...

  8. IAR6.1的工程迁移到IAR6.5不能用的解决方法

    1.重命名过时的CMSIS头文件 "... \ CMSIS \ CM3 \ CoreSupport \ core_cm3.h  比如:core_cm3.h.old 2.启用CMSIS:项目- ...

  9. 【转】linux之pmap命令!

    原贴:http://tonykorn97.itpub.net/post/6414/249221 linux之pmap命令! ====================================== ...

  10. Scroller类的使用总结

    Scroll类之所以不好理解是因为没有搞清楚View的绘制流程. 1)简单来讲 viewgroup重绘时依次会调用  dispatchDraw -- drawChild --child.compute ...