JavaWeb有ServletContext、ServletRequest、HttpSession、PageContext四大域对象,下面主要从域对象的生命周期、作用、作用范围进行介绍。

Servlet中只有前三个域对象,JSP中多了一个pageContext对象。

一、ServletContext

1.生命周期

当web应用被加进容器时,创建代表整个web应用的ServletContext对象,当服务器关闭,或web应用被移除时,ServletContext对象跟着被销毁。

2.作用范围

整个web应用。

3.作用

由于一个web应用中的所有Servlet共享同一个ServletContext对象:因此Servlet对象之间可以通过ServletContext来是实现通讯。ServletContext对象通常也被称为context域对象。

应用

多个Servlet通过ServletContext对象实现数据共享。

获取web应用的初始化参数(getInitParameter)。

用ServletContext实现请求转发(this.getServletContext().getRequestDispatcher().forward())。

利用ServletContext对象读取资源文件。

servletContext.getRealPath("/xx.properties"),servletContext.getResourceAsStream()。

另外,顺便说一下,如果要在非servlet中获取资源文件,无法取得servletContext对象,这时候就得通过类加载器ClassLoader来getResourceAsStream(),此方法通过类加载器将资源文件直接加载到内存中,有更新延迟的问题,适合小文件的读取,对于大资源文件,将会占用较大的内存。还有,通过classLoader也可以获取资源文件路径,具体通过ClassLoader.getResource("/xx.properties").getPath(),没有更新延迟问题。

二、ServletRequest

1.生命周期

在service方法调用前由服务器创建,传入service()方法,整个请求结束,ServletRequest生命周期结束。

2.作用范围

整个请求链。(请求转发也存在,请求转发属于一次请求。)

3.作用

在整个请求链中共享数据,主要可通过getAttribute、setAttribute将数据带到jsp页面中进行显示。

获得客户端信息,可通过getRequestURL()、getRequestURI()、getQueryString()、getPathInfo()、getRemoteAddr()、getRemoteHost()、getRemotePort()、getLocalAddr()、getLocalName()。

获得客户机请求头,getHeader(String s)、getHeaders(String s)、getHeaderNames()。

获得客户机请求参数(客户端提交的数据):getParameter()等。

三、Session

1.生命周期

服务器在运行时可以为每一个用户的浏览器创建一个其独享的session对象,由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自的数据放在各自的session中,当用户再去访问服务器中的其它web资源时,其它web资源再从用户各自的session中取出数据为用户服务。

在第一次调用request.getSession()方法时,服务器会检查是否已经有对应的session,如果没有就在内存中创建一个并返回。

当一段时间内,session没有被使用(默认是30分钟),服务器会销毁该session。如果服务器非正常关闭(强行关闭),还未到期的session也会被销毁。

另外,调用session的invalidate()方法可以立即销毁session。

2.作用范围

一次回话。

四、PageContext

PageContext对象是JSP页面中才有的对象。

1.生命周期

当对JSP的请求开始时创建,当响应结束时销毁。

2.作用范围

整个JSP页面,是四大域中最小的一个。

3.作用

pageContext对象封装了8大隐式对象,通过它可以获得其它的8个对象。

getException()返回Exception。

getPage()返回Page。

getRequest()返回request。

getResponse()返回response。

getServletConfig()返回config。

getServletContext()返回application。

getSession()返回session。

getOut()返回out。

另外,通过pageContext还能获取其所有域中的数据。

4.getAttribute()和findAttribute()的区别

getAttribute()只能获取自己域中保存的属性,而findAttribute()则会按照pageContext->request->session->servletContext的顺序查找有无对应的属性。

四大域中,HttpRequest和HttpResponse,session和cookie有很多联系,后面会补上response和cookie的总结。

java域对象_javaWeb域对象相关推荐

  1. java response 返回_JavaWeb response对象常用操作

    JavaWeb response对象常用操作 CreationTime--2018年7月18日10点42分 Author:Marydon 1.设置响应内容类型 方式一 response.setCont ...

  2. java创建response对象_javaweb入门-----request与response的作用

    request对象和request对象的原理 1.request和response对象request对象和request对象的原理时由服务器创建的,我们来使用它们 2.request对象是来获取请求消 ...

  3. java request 原理_JavaWeb response和request对象原理及实例解析

    HttpServletResponse: HttpServletResponse对象服务器的响应.这个对象中封装了向客户端发送数据.发送响应头,发送响应状态码的方法. 字符编码格式: 方法一: // ...

  4. java cookie 跨域共享_JavaWeb 系统共享跨域cookie的实现

    [实例简介] 单点登录系统整合了各个应用系统的身份认证.用户在单点登录系统中完成认证后,就可以访问具有访问权限的应用系统.为了减轻单点登录系统的负担,用户的浏览器地址需要从单点登录系统的网址重定向到应 ...

  5. java中class_Java中Class对象详解

    https://blog.csdn.net/mcryeasy/article/details/52344729 待优化整理 总结 Class类简介 在java世界里,一切皆对象.从某种意义上来说,ja ...

  6. 《Java 核心技术卷1 第10版》学习笔记------对象克隆【对象拷贝】

    由于克隆并不太常见,而且有关的细节技术性很强,你可能只是想稍做了解,等真正需要时再深人学习. 先来回忆为一个包含对象引用的变量建立副本时会发生什么 .原变量和副本都是同一个对象的引用: Employe ...

  7. Java Servlet(三):Servlet中ServletConfig对象和ServletContext对象

    本文将记录ServletConfig/ServletContext中提供了哪些方法,及方法的用法. ServletConfig是一个抽象接口,它是由Servlet容器使用,在一个servlet对象初始 ...

  8. Java探索之旅(6)——对象和类

    1.知识要点 假设: public ClassName{int data;String name;ClassName(){data=1;}public static int getdata(){ret ...

  9. java 域_java四大域总结

    最近学完了web部分,发现有些地方总是单个容易理解,可是把所有的放在一起来大杂烩,总是有那么几个知识点容易混淆.其实网上的资料已经够多了,虽然也不乏辛劳的搬运工.可是最终的目的不就是要我们自身理解吗? ...

最新文章

  1. python里面的类和对象_Python中类和对象在内存中是如何保存?
  2. Android真机运行错误INSTALL_FAILED_MEDIA_UNAVAILABLE
  3. 消防信号二总线有没电压_消防的电源总线和二总线的区别,二总线是不是信号..._消防考试_帮考网...
  4. 【Linux】一步一步学Linux——VMware虚拟机三种网络模式详解(07)
  5. Matrix Decompressing UVA - 11082 最大流 + 输出方案
  6. 前端学习(2627):node安装
  7. 《重构-改善既有代码的设计》-第1例:租赁影片(1)
  8. 欧易OKEx交易大数据:BTC合约多空持仓人数比0.98,合约持仓总量为24.90亿美元
  9. java读流方式,下载网络上的图片
  10. UVA11219 How old are you?【日期】
  11. 5.Scalal语法03 - 函数
  12. Android局域网工具,NetX(局域网管理工具)
  13. 华为鸿蒙系统操作教程_华为鸿蒙操作系统入门到精通教程
  14. 超五类和六类网线区别 什么样的网线好
  15. CC2541蓝牙学习——串口_0和1(寄存器版本)
  16. 2010年总结机器人领域sci期刊杂志
  17. excel两行数据匹配【vlookup、countif】
  18. 四旋翼自主飞行器设计方案
  19. Unity背包系统-2:数据库存储方法ScriptableObject和显示背包物品InventoryManager
  20. 阿里云ACP云计算错题集71-100

热门文章

  1. 各种AJAX方法的使用比较
  2. 开发板 pc机 虚拟机 三者之间如何互ping通
  3. 理解Android系统的进程间通信原理------RPC机制
  4. Mac OS X下Maven的安装与配置
  5. highcharts的导出功能
  6. c++ string类 用法简介
  7. linux 安装 nslookup
  8. redis 未授权访问利用 两种方式
  9. centos7 安装 redis
  10. linux c va_list 32位和64位的差异