对象作用域

  在Servlet里可以用一个名字绑定一个对象,并且在应用中传递和使用这个对象

作用域对象

属性操作方法

作用域范围说明

ServletContext(上下文)

void setAttribute(String,Object)

Object getAttribute(Sting)

void removeAttribute(String)

Enumeration getAttributeNames()

整个Web应用程序

HttpSession(会话)

一个会话交互过程

ServletRequest(请求)

一次请求过程

ServletContext应用上下文

  对于整个Web应用来说只有一个ServletContext对象,而且在Web应用中所有的部分都能访问它。

ServletContext对象

  设置在ServletContext对象中的属性可以被Web应用中的任何一部分来访问

提示:对ServletContext对象的初始化参数通过web.xml文件中<context-param>标签设置,在其他Servlet中可以通过getInitParameter(String)方法来获取。

  获取ServletContext的方法

- this.getServletContext();

- this.getServletConfig().getServletContext();

- request.getSession().getServletContext();

Web应用中每个线程都能访问上下文属性

提示:上下文作用域中设置的属性在整个Web中应用中被共享,紫瑶服务器不被关闭,Web应用中任何一部分都能访问到该属性。所以线程并不安全!

会话作用域

  Session用于维护与一个客户的会话状态。对于同一个客户的多个请求,Session会跨这些请求持久存储

session跨请求存储属性

  在会话作用域中设置的属性不能被Web应用中所有的部分访问,只能由同一个客户或服务器的一个持续会话交互过程中被存储维护,会话被销毁设置在其中的属性也会被销毁,会话作用域范围比上下文作用域方法小。

请求作用域

- 系统的资源消耗(长久保存的会大量消耗系统的资源)

- 属性可以保存在请求作用域范围中

- 请求作用范围仅仅作用在与一个请求相关的两个资源之间

请求作用域范围

存储时间比上下文作用域和会话作用域短,在请求结束后,对象就会被垃圾回收

监听器概述

- 监听session,request,application这三个对象里存取数据的变化

- 监听器对象可以在事情发生前、发生后可以做一些必要的处理

- Servlet监听器主要目的是给Web应用增加事件处理机制,以便更好地监视和控制Web应用的状态变化

监听器分类

  应用程序事件监听器是实现一到多个Servlet事件监听器借口的类。它们在Web应用程序部署时,被Web容器初始化和注册。开发者通常以WAR格式提供应用程序事件监听器。

事件类型

描述

Listener接口

ServletContext事件

生命周期

Servlet上下文刚被创建并可以开始为第一次请求服务,或者Servlet上下文将要被关闭发生的事件

ServletContextListener

属性改变

Servlet上下文内的属性被增加、删除或者替换时发生的事件

ServletContextAttributeListener

HttpSession事件

生命周期

HttpSession被创建、无效或超时时发生

HttpSessionListenerHttpSessionActivationListener

会话迁移

HttpSession被激活或钝化时发生

属性改变

在HttpSession中的属性被增加、删除、替换时发生

HttpSessionAttributeListenerHttpSessionBindingListener

对象绑定

对象被绑定到或者移出HttpSession时发生

ServletRequest事件

生命周期

在Servletr请求开始被Web组件处理时发生

ServletRequestListener

属性改变

在ServletRequest对象中的属性被增加、删除、替换时发生

ServletRequestAttributeListener

Web应用程序范围内的事件

- Web应用启动和销毁事件

- Web应用程序的属性发生改变的事件(包括增加、删除、修改)。

- 定义了ServletContextListener和ServletContextAttributeListener两个接口 - ServletContextListenner

  用于监听Web应用程序启动和销毁的事件,监听器类需要实现javax.servlet.ServletContextListenner接口

  ServletContextListenner接口方法

- void contextInitalized(ServletContextEvent sce):通知正在接受的对象,应用程序已经被加载及初始化

- void contextDestroyed(ServletContextEvent sce):通知正在接受的对象,应用程序已经被销毁

  1. public class MyServletContextListener implements ServletContextListener {
  2. public void contextInitialized(ServletContextEvent sce) {
  3. //Initialized code
  4. }
  5. public void contextDestroyed(ServletContextEvent sce) {
  6. //Destroyed code
  7. }
  8. }

ServletContextEvent 中的方法

  ServletContext getServletContext():取得servletContext对象

生命周期事件的一个实际应用由context监听器管理共享数据库连接。在web.xml中定义监听器

  1. <listener>
  2. <listener-class>
  3. com.lovobook.MyServletContextListener
  4. </listener-class>
  5. </listener>

  ServletContextAttributeListener接口

  监听WEB应用属性改变的事件,包括:增加属性、删除属性、修改属性

- attributeAdded(ServletContextAttributeEvent scab):若有属性对象加入Application的范围,通知正在收听的对象

- attributeRemoved(ServletContextAttributeEvent scab):若有属性对象从Application的范围移除,通知正在收听的对象

- attributeReplaced(ServletContextAttributeEvent scab):若在Application的范围中,有对象取代另一个对象时,通知正在收听的对象

  1. public class MyServletContextAttributeListener implements ServletContextAttributeListener {
  2. public void attributeAdded(ServletContextAttributeEvent scae){}
  3. public void attributeRemoved(ServletContextAttributeEvent scae) {}
  4. public void attributeReplaced(ServletContextAttributeEvent scae) {}
  5. }

监听会话范围内事件

  管理从同一个客户端或用户向一个Web应用程序发出的一系列请求相关的状态或资源

  - HttpSessionBindingListener接口

注意:唯一不需要在web.xml中设定的Listener

- 监听对象加入Session范围时

- 监听从Session范围中移出对象时

  接口有两个方法

- void valueBound(HttpSessionBindingEvent event):当对象正在绑定到Session中,Servlet容器调用该方法来通知该对象

- void valueUnbound(HttpSessionBindingEvent event):当从Session中删除对象时,Servlet容器调用该方法来通知该对象

  HttpSessionBindingEvent类提供如下方法:

- public String getName():返回绑定到Session中或从Session中删除的属性名字。

- public Object getValue():返回被添加、删除、替换的属性值

- public HttpSession getSession():返回HttpSession对象

  - HttpSessionAttributeListener接口

    监听HttpSession中的属性的操作

- 当在Session中增加一个属性时,激发attributeAdded(HttpSessionBindingEvent se) 方法;

- 当在Session删除一个属性时,激发attributeRemoved(HttpSessionBindingEvent se)方法;

- 当在Session属性被重新设置时,激发attributeReplaced(HttpSessionBindingEvent se) 方法。

  - HttpSessionListener接口

    监听HttpSession对象的创建和销毁操作

- 当创建一个Session时,激发session Created(HttpSessionEvent se)方法

- 当销毁一个Session时,激发sessionDestroyed (HttpSessionEvent se)方法

  - HttpSessionActivationListener接口

监听HttpSession对象的激活和迁移

- public void sessionDidActivate():会话被激活

- public void sessionWillPassivate():会话被迁移

监听请求生命周期内事件

  - ServletRequestListener接口

    - public void requestDestroyed(ServletRequestEvent sre):当请求被销毁时被处理。

    - public void requestInitialized(ServletRequestEvent sre):当请求被创建时被处理

  - ServletRequestAttributeListener接口

- public void attributeAdded(ServletRequestAttributeEvent arg0) :当在请求作用域中添加一个属性的时候调用该方法。

- public void attributeRemoved(ServletRequestAttributeEvent arg0) :当在请求作用域中删除一个属性时调用

- public void attributeReplaced(ServletRequestAttributeEvent arg0) :当在请求作用域中替换一个属性值的时候调用

JavaWeb总结(八)的更多相关文章

  1. JavaWeb学习 (八)————HttpServletResponse对象(二)

    一.HttpServletResponse常见应用——生成验证码 1.1.生成随机图片用作验证码 生成图片主要用到了一个BufferedImage类,

  2. JavaWeb总结(八)—EL表达式

    一.EL表达式简介 EL全名Expression Language.主要有以下作用. 1.获取数据 EL表达式主要用于替换JSP页面的脚本表达式,以及各种类型的Web域中检索Java对象.获取数据.( ...

  3. JavaWeb 后端 <八> 之 JDBC基礎(全)

    一.JDBC简介 1.JDBC是SUN公司为了简化操作数据推出一套规范.数据库厂商的驱动就是对JDBC的实现. 2.Java Data Base Connectivity(java数据库连接),它主要 ...

  4. JavaWeb(八)JQuery

    jQuery 市场用得比较多两个框架: jQuery 比较适合做一些互联网 的应用(12306.com,蘑菇街,美丽说,聚美) extjs 比较适合做后台管理系统(电商(订单管理),银行,电信) 核心 ...

  5. JavaWeb【八、JSP指令与动作元素】

    include指令(页面嵌套) <%@ include file="URL"%> include动作 <jsp:include page="URL&qu ...

  6. JavaWeb【一、简介】

    原计划上周完成的内容,硬是过了一个清明拖到了这周,工作上还有很多东西没做...明天抓紧看把,争取这周末搞定 内容简介:(学习完后会重新梳理调整) 1.JavaWeb[一.简介] 2.JavaWeb[二 ...

  7. javaweb回顾第八篇如何创建自定义标签

    前言:在javaweb开发中自定义标签的用处还是挺多的.今天和大家一起看自定义标签是如何实现的. 1:什么是标签 标签是一种XML元素,通过标签可以使JSP页面变得简介易用,而且标签具有很好的复用性. ...

  8. javaweb学习总结(八)——HttpServletResponse对象(二)

    一.HttpServletResponse常见应用——生成验证码 1.1.生成随机图片用作验证码 生成图片主要用到了一个BufferedImage类,

  9. JavaWeb学习总结(四十八)——模拟Servlet3.0使用注解的方式配置Servlet

    一.Servlet的传统配置方式 在JavaWeb开发中, 每次编写一个Servlet都需要在web.xml文件中进行配置,如下所示: 1 <servlet> 2 <servlet- ...

  10. JavaWeb学习 (二十八)————文件上传和下载

    在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用 ...

随机推荐

  1. font-family:中文字体的英文名称 (宋体 微软雅黑)

    宋体 SimSun 黑体 SimHei 微软雅黑 Microsoft YaHei 微软正黑体 Microsoft JhengHei 新宋体 NSimSun 新细明体 PMingLiU 细明体 Ming ...

  2. node环境和浏览器的区别

    一.全局环境下this的指向 在node中this指向global而在浏览器中this指向window,这就是为什么underscore中一上来就定义了一 root: 1 var root = typ ...

  3. C# 调用WebService服务

    方 法 一 :  选择项目,右键添加服务引用,输入服务地址,如图: 点击确定跳转到如下界面: 调用 接口: ServiceReference1.ImportDataServiceClient sr = ...

  4. ArrayBlockingQueue 阻塞队列和 Semaphore 信号灯的应用

    import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; public cl ...

  5. Oracle特殊恢复原理与实战(DSI系列)

    1.深入浅出Oracle(DSI系列Ⅰ) 2.Oracle特殊恢复原理与实战(DSI系列Ⅱ) 3.Oracle SQL Tuning(DSI系列Ⅲ)即将开设 4.Oracle DB Performan ...

  6. REST framework 视图层

    我们之前写的  get  post  请求 要写很多 我们现在可以使用rest——framework给我们封装好的类 GenericAPIView 给我们提供了自动匹配验证的信息内部封装 from r ...

  7. 基于dispatch_after封装YXTimer

    基于dispatch_after封装YXTimer 本人根据dispatch_after封装了一个定时器,支持block以及代理的方式来激活定时器,适用于对精度要求低,耗时短的地方,高端大气上档次,低 ...

  8. 对MBProgressHUD进行二次封装并精简使用

    对MBProgressHUD进行二次封装并精简使用 https://github.com/jdg/MBProgressHUD 几个效果图: 以下源码是MBProgressHUD支持最新的iOS8的版本 ...

  9. 给UIScrollView添加category实现UIScrollView的轮播效果

    给UIScrollView添加category实现UIScrollView的轮播效果 大家都知道,要给category添加属性是必须通过runtime来实现的,本教程中给UIScrollView添加c ...

  10. Log4net 使用之 日期字段格式化

    Log4net 是.Net下一个非常优秀的开源日志记录组件.log4net记录日志的功能非常强大.它可以将日志分不同的等级,以不同的格式,输出到不同的媒介. 之前Log4net的日期字段Data一直采 ...