https://www.cnblogs.com/huifeidezhuzai/p/10883953.html

作用域------顾名思义,起作用的大小范围也!如果是你自己去学习一个知识点,你要达到哪些目标才算是对一个知识点称得上是懂得,理解,掌握呢?从扁神医的望闻问切,到数据库的增删改查,所有的事物开始也不外乎:是什么?有什么用?怎么用?为什么可以这么用?故而,我觉得咱们应该把握以下问题,带着这些问题去学习,发现自己的不足,才是学习的上策。

1)作用域的实际大小。(是什么?)

作用域的作用。(有什么用?)

3)怎么使用这些作用域。(怎么用?)

4)它这样使用实现的原理。(为什么可以这么用?)

下面开始逐一分析:

(一)servletcontext域(application域)

1)作用域的实际大小。(是什么?)

servletcontext域起作用的范围是:整个web应用程序。

数据产生之后,不仅等会还要用 ,还要给别人用,则请使用servletcontext。

它是四个域中范围最大的域。

作用域的作用。(有什么用?)

由于一个web应用中的所有servlet共享同一个servletcontext对象,所以多个servlet通过servletcontext对象实现了数据在不同servlet之间的共享。

3)怎么使用这些作用域。(怎么用?)

a)可以通过编程的方式绑定,也可以作为web应用的全局变量被所有Servlet和JSPs访问

设置Context属性:

ServletContext application=this.getServletContext();

application.setAttribute(“person1”,new Person(“Jim”));

application.setAttribute(“person2”,new Person(“Green”));

获取Context属性:

ServletContext application=this.getServletContext();

Enumberation persons=application.getAttributeNames();

while(persons.hasMoreElements()){

String name=(String)persons.nextElement();

Person p=(Person)persons.getAttribute(name);

application.removeAttribute(name);

}

b)为整个web应用配置context域:

修改web.xml配置文件,加入以下内容

data

Hello world !

从Servlet中访问这些初始化参数:

ServletContext application=this.getServletContext();

out.println(application.getInitParameter("data"));

c)读取资源文件

使用ServletContext接口可以直接访问web应用中的静态内容文档结构.包括HTML,GIF和JPEG文件。如以下方法:

.getResource()

.getResourceAsStream()

这两个方法的参数都是以"/“开头的字符串,表示资源相对于context根的相对路径.文档结构可以存在于服务器文件系统,或是war包中,或是在远程服务器上,抑或其他位置。不可以用来获得动态资源,比如,getResource(”/index.jsp"),这个方法将返回该jsp文件的源码,而不是动态页面.可以用 “Dispatching Requests” 获得动态内容.列出web应用中可被访问的资源,可以使用getResourcePaths(String path)方法。

4)它这样使用实现的原理或优缺点。(为什么可以这么用?)

servlet并不适合做数据输出,故需要将数据转发给JSP文件进行美化再输出给客户端。

JSP中可嵌入java代码,这使得它接收java数据变得可能。同时,由于servletcontext域可使整个web应用共享该数据,因此而带来“线程安全”问题同样影响对转发的数据,故而需要使用request域。

(二)Httpsession域(session域)

1)作用域的实际大小。(是什么?)

Httpsession的作用域是:一次会话。

数据产生之后显示给用户了,等会还要使用的情况下使用Httpsession域。

它是四个域中范围第二大的域。

作用域的作用。(有什么用?)

(会话范围)在第一次调用request.getSession()方法时,服务器会检查是否已经有对应的session。如果没有,就在内存中创建一个session并返回。当一短时间内(默认30分钟)session没有被使用,则服务器会销毁该session。若服务器非正常关闭,未到期的session也会跟着销毁。若调用session提供的invalidate()方法,可以立即销毁session。

3)怎么使用这些作用域。(怎么用?)

a) jsp中操作session

(String)request.getSession().getAttribute(“username”); // 获取

request.getSession().setAttribute(“username”, “xxx”); // 设置

b) java中操作session

//servlet中

request.getSession();

session.getAttribute(“username”);

session.setAttribute(“username”, “xxx”);

session.setMaxInactiveInterval(30*60);

session.invalidate();

//struts中方法1

ServletActionContext.getRequest().getSession().setAttribute(“username”, “xxx”);

ServletActionContext.getRequest().getSession().getAttribute(“username”);

ServletActionContext.getRequest().getSession().setMaxInactiveInterval(30*60);

ServletActionContext.getRequest().getSession().invalidate();

//struts中方法2

ActionContext.getContext().getSession().put(“username”, “xxx”);

ActionContext.getContext().getSession().get(“username”);

ActionContext.getContext().getSession().clear();

c) web.xml中操作session

30

d) tomcat–>conf–>conf/web.xml

30

4)它这样使用实现的原理。(为什么可以这么用?)

HttpSession在服务器中,为浏览器创建独一无二的内存空间,在其中保存了会话相关的信息。服务器创建session出来后,会把session的id号,以cookie的形式回写给客户机,这样,只要客户机的浏览器不关,再去访问服务器时,都 会带着session的id号去,服务器发现客户机浏览器带session id过来了,就会使用内存中与之对应的session为之服务。如果要问我为什么,我也不知道啊!

(三)ServletRequest域(request域)

1)作用域的实际大小。(是什么?)

ServletRequset域是:整个请求链(请求转发也存在)。

数据产生之后,只需要使用一次,这种情况下请使用ServletRequset域。

它是四个域中范围排第三的域。

作用域的作用。(有什么用?)

在整个请求链中共享数据。

最常用到:在servlet中处理好的数据交给JSP显示,此时参数就可以放置在ServletRequset域中带过去。

3)怎么使用这些作用域。(怎么用?)

a) 获得客户机信息的方法

getRequestURL方法返回客户端发出请求时的完整URL。

getRequestURI方法返回请求行中的资源名部分。

getQueryString 方法返回请求行中的参数部分。

getRemoteAddr方法返回发出请求的客户机的IP地址

getRemoteHost方法返回发出请求的客户机的完整主机名

getRemotePort方法返回客户机所使用的网络端口号

getLocalAddr方法返回WEB服务器的IP地址。

getLocalName方法返回WEB服务器的主机名

getMethod得到客户机请求方式

b) 获得客户机请求头

getHeader(string name)方法

getHeaders(String name)方法

getHeaderNames方法

c) 获得客户机请求参数(客户端提交的数据)

getParameter(name)方法

getParameterValues(String name)方法

getParameterNames方法

getParameterMap方法

4)它这样使用实现的原理。(为什么可以这么用?)

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

(四)PageContext域(page域)

1)作用域的实际大小。(是什么?)

PageContext域的作用范围是:整个JSP页面。

它是四个域中范围最小的一个域。

作用域的作用。(有什么用?)

a) 它可以获取其它八大隐式对象,可以认为它是一个入口对象。

b) 获取其它所有域中的数据。

c) 跳转到其它资源。其身上提供了forword和sendRedirect方法,简化了转发和重定向的操作。

3)怎么使用这些作用域。(怎么用?)

以下以一个简单的JSP页面程序为例:

pageEncoding=“UTF-8”%>

pageContext对象_例1

//使用pageContext设置属性,该属性默认在page范围内

pageContext.setAttribute("name","地球");

request.setAttribute("name","太阳系");

session.setAttribute("name","银河系");

//session.putValue("name","麦哲伦系");

application.setAttribute("name","宇宙");

%>

page设定的值:

request设定的值:

session设定的值:

application设定的值:

范围1内的值:

范围2内的值:

范围3内的值:

范围4内的值:

pageContext修改后的session设定的值:

pageContext修改后的application设定的值:

值的查找:

属性name的范围:

显示结果:

page设定的值:地球

request设定的值:太阳系

session设定的值:银河系

application设定的值:宇宙

范围1内的值:地球

范围2内的值:太阳系

范围3内的值:银河系

范围4内的值:宇宙

pageContext修改后的session设定的值:null

pageContext修改后的application设定的值:宇宙

值的查找:地球

属性name的范围:1

4)它这样使用实现的原理。(为什么可以这么用?)

pageContext对象,这个对象代表页面上下文,该对象主要用于访问JSP之间的共享数据。当对JSP的请求时开始,当响应结束时销毁。

标签:getSession,作用域,客户机,javaEE,application,session,共享,方法

来源: https://blog.csdn.net/xiao_xiao3601/article/details/100735744

java ee 值范围_javaEE四大作用域(共享域)相关推荐

  1. java ee 值范围_JAVAEE之内置对象和属性范围

    内置对象和属性范围 四种属性范围 九个内置对象 1.内置对象 如果说想要使用一个对象,必须new 出来,但是在我们的jsp操作中,发现我们使用过的out,request对象没有进行实例化,类似于这样的 ...

  2. javaEE四大作用域(共享域)

    作用域------顾名思义,起作用的大小范围也!如果是你自己去学习一个知识点,你要达到哪些目标才算是对一个知识点称得上是懂得,理解,掌握呢?从扁神医的望闻问切,到数据库的增删改查,所有的事物开始也不外 ...

  3. java ee学生管理系统_javaEE 学生基本信息管理系统

    javaEE 学生基本信息管理系统 软 件 学 院课程设计报告书课程名称 Java EE 课程设计 设计题目 学生基本信息管理系统 专业班级 学 号 姓 名 指导教师 2011 年 12 月1 设计时 ...

  4. java ee 值范围_一篇文章带你读懂: Java EE

    原标题:一篇文章带你读懂: Java EE 点击上图,查看教学大纲 何为 Java EE Java EE是一个标准中间件体系结构 不要被名称"Java PlatformEnterprise ...

  5. java ee是什么_javaee是什么?

    Java EE是 J2EE的一个新的名称,之所以改名,目的还是让大家清楚J2EE只是Java企业应用.随着WEB和EJB容器概念诞生,使得软件应用业开始担心SUN的伙伴们是否还在Java平台上不断推出 ...

  6. java ee 值范围_【转载】JAVAEE之内置对象和属性范围

    内置对象和属性范围 ​ 四种属性范围 ​ 九个内置对象 1.内置对象 如果说想要使用一个对象,必须new 出来,但是在我们的jsp操作中,发现我们使用过的out,request对象没有进行实例化,类似 ...

  7. java ee jsp程序_JavaEE——jsp介绍

    声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权:凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记. jsp介绍: jsp全称Java Server Page,它 ...

  8. java ee实验新闻_JAVAEE第四次作业-JSP显示新闻

    JAVAEE第四次作业-JSP显示新闻 一.任务 使用mysql创建新闻表 用户登录时,用servlet获取用户名密码,查询数据库是否存在 如果是正确的用户名密码,查询新闻表,将新闻数据传给JSP首页 ...

  9. java ee 三层架构_JavaEE——三层架构模式介绍

    声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权:凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记. 三层架构模式介绍 三层架构模式: 三层架构(3-tier a ...

最新文章

  1. python2中文导致的错误
  2. handler原子锁_深入Linux内核架构——锁与进程间通信
  3. 在ASP.NET中把数据POST到其他页面
  4. 使用Preplot批量将ascii文件转为二进制文件
  5. delphi开发日志——基窗体,使用面向对象编程的编程思想创建基类
  6. 执行 link.exe 时出错_在20多岁时应该做什么,以避免在30多岁和40多岁时后悔?...
  7. 高并发推荐系统架构设计实践
  8. 你的主机中的软件中止了一个已建立的连接。_winscp中文版,winscp中文版软件的使用技巧...
  9. oracle的时间取的到底是谁的时间
  10. pod BaiduMapKit 报错解决方案
  11. VS2010格式化快捷键
  12. QGIS导入postgresql数据库shp数据
  13. html下播放.wav,wav格式文件用什么播放
  14. 高并发设计的技术方案
  15. 面向金融的R语言_L3
  16. 每日一犬 · 布鲁克浣熊猎犬
  17. 英语四级考试计算机游戏,四级你过了吗电脑版
  18. -Dmaven.multiModuleProjectDirectory system propert
  19. android系统自带字体设置,安卓手机系统字体设置-系统字体设置(Big Font) 安卓版v2.37-PC6安卓网...
  20. STM32的USART发送中断标志位USART_IT_TXE和USART_IT_TC

热门文章

  1. python matlabplot写字_Matlab中plot基本用法的具体使用
  2. nodejs进入mysql数据库_nodejs简单访问及操作mysql数据库的方法示例
  3. jpa 数据库方言_使用Hibernate和Oracle 10g方言,如何用JPA生成我的id?
  4. 清掉数据_值得收藏!面试中有哪些经典的数据库问题?
  5. c语言24点游戏代码回法,C语言解24点游戏程序
  6. linux mp4v2编译,Android 编译mp4 v2 2.0.0生成动态库
  7. linux编译minix,MINIX对Linux
  8. pythonos模块介绍_python的os模块fnmatch模块介绍
  9. mysql是bsd协议吗_freebsd下实现mysql的自动备份
  10. linux 权限管理 lvm,Linux LVM 设置和管理