当前位置: 首页 > article >正文

四大作用域

四大作用域:
一、application(ServletContext)
1、生命周期:当Web应用被加载进容器时创建代表整个web应用的application对象,当服务器关闭或Web应用被移除时,application对象跟着销毁。  
2、作用范围:整个Web应用。
3、作用:   
  a)application.setAttribute(“key”,Object value):存储整个web应用公用的数据
b)在不同Servlet 之间转发(不常用)    
this.getServletContext().getRequestDispatcher("/servlet/Demo10Servlet").forward(request,response);   
 方法执行结束,service就会返回到服务器,再有服务器去调用目标servlet,其中request会重新创建,并将之前的request的数据拷贝进去。      
注意:由于request对象也有getRequestDispatcher("**")方法,所有我们开发是通常使用request调用该方法实现重定向。
二、session 域 (HttpSession)
  HttpSession 在服务器中,为浏览器创建独一无二的内存空间,在其中保存会话相关的信息。
  1、生命周期:在第一次调用 request.getSession() 方法时,服务器会检查是否已经有对应的session,如果没有就在内存中创建一个session并返回。   
当一段时间内session没有被使用(默认为30分钟),则服务器会销毁该session。 如果服务器非正常关闭(强行关闭),没有到期的session也会跟着销毁。 如果调用session提
供的invalidate() ,可以立即销毁session。
  注意:服务器正常关闭,再启动,Session对象会进行钝化和活化操作。同时如果服务器钝化的时间在session 默认销毁时间之内,则活化后session还是存在的。否则Session
不存在。如果JavaBean 数据在session钝化时,没有实现Serializable 则当Session活化时,会消失。
 2、作用范围:一次会话。  
   3、作用:保存登录的用户信息、购物车信息等
三、request域  --(HttpServletRequest) 
 1、生命周期:在service 方法调用前由服务器创建,传入service方法。整个请求结束,request生命结束。  
 2、作用范围:整个请求链(请求转发也存在)。  
 3、作用:  在整个请求链中共享数据。最常用到:在Servlet 中处理好的数据交给Jsp显示,此时参数就可以放置在Request域中带过去。
四、pageContext域—(PageContext)
 1、生命周期:当对JSP的请求时开始,当响应结束时销毁。  
 2、作用范围:整个JSP页面,是四大作用域中最小的一个。  
  作用:   
  (1)获取其它八大隐式对象,可以认为是一个入口对象。   
  (2)获取其所有域中的数据  


pageContext 当前页的pageContext对象 :
${pageContext.request.contextPath}返回的是request.getContextPath()的值,我们经常使用这个来拼接jsp中的绝对路径。
这里的${pageContext.request.contextPath}是一种特殊用法,不能使用${request.contextPath}的形式替代。
requestScope 把request作用域中的数据映射为一个map对象
pageScope, requestScope, sessionScope, appliationScope都可以看作是Map型变量,调用其中的数据可以使用${pageScope.name}或${pageScope["name"]}的形式,这两种写法
是等价的。
在有特殊符号时情况下只能使用${pageScope["content-type"]},jsp无法解析连字符(-)会出现错误。
paramValues request.getParameterValues()
需要注意的是${paramValues.name}得到的是一个字符串数组,如果需要获得其中某个值,还需要使用${paramValues.name[0]}指定数组中的索引。
这与${headerValues.name}是相似的。
header 对应request.getHeader()
${header.name}会取得http请求中的header参数,现实工作中很少用到这里的数据。
cookie 对应request.getCookies()
所谓的cookie是一个小小的文本文件,它是以key、value的方式将Session Tracking的内容记录在这个文本文件内,这个文本文件通常存在于浏览器的暂存区内。
JSTL并没有提供设定cookie的动作,因为这个动作通常都是后端开发者必须去做的事情,而不是交给前端的开发者。
例:
Cookie cookie = new Cookie("username", "Username in cookie"); response.addCookie(cookie);
创建一个名称为username,值为"Username in cookie"的Cookie对象,然后发送给客户端然后我们就可以使用${cookie.username}获得这个cookie了,${cookie.username.name}获
得cookie名称,${cookie.username.value}获得cookie值。
initParam 对应ServletContext.getInitParamter()
ServletContext.getInitParamter()指的应用的初始变量,这些变量都是定义在web.xml中的。
<context-param> <param-name>username</param-name> <param-value>username with context param</param-value> </context-param>
${initParam.username}就会得到这里的变量值。

http://www.lryc.cn/news/2419375.html

相关文章:

  • 关于FL Studio ASIO驱动不工作的一个解决方案
  • 智能魔法棒(手势控制器)———嵌入式篇
  • Mac OSX 卸载PKG包
  • uushare第二版功能详细介绍
  • ARM架构处理器MT6572的LK printf 与UART串口打印分析
  • 系统维护 电脑蓝屏代码大全
  • 鸿蒙HarmonyOS学习笔记之基于CommonDialog实现自定义PromptDialog
  • 蓝桥杯专题之日期篇
  • 基金01、03文件,92、94文件、52、53、59等文件是指什么?
  • 【正点原子MP157连载】第二十八章 A7和M4联合调试-摘自【正点原子】STM32MP1 M4裸机CubeIDE开发指南
  • [病毒分析]熊猫烧香(上)初始分析
  • 【python】sqlalchemy
  • VC++6.0 MSDN下载地址
  • DotNetTextBox V3.0 所见即所得编辑器控件Ver3.3.3 Free(免费版)
  • 高质量C++/C编程指南(林锐)
  • 四、六级考试的标准分计算方法-“710分转换表”
  • 移花接木!轻松搞定暴风影音2关联暴风影音1图标
  • 简单了解一下博弈论
  • Label换行
  • 内网信息收集与上传下载
  • 几个免费的国外php空间
  • 苹果最新系统ios7_手机资讯:你绝对不知道的iOS7隐藏功能
  • Scratch软件编程等级考试一级——20220320
  • Kali-登录暴力破解器工具-medusa使用
  • 基于flex的三层架构特效之效果介绍
  • 免费发布一个网站(保姆级图文教程)
  • Sqlserver 之 SequenceNumber(序列)
  • 转PDP-11时代 美国的大跃进运动
  • 老毛桃winpe优盘启动系统个性修改全攻略.(全)
  • WEP/WPA/WPA2/WPA3初识