对象作用域

  在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):通知正在接受的对象,应用程序已经被销毁

public class MyServletContextListener implements ServletContextListener {
public void contextInitialized(ServletContextEvent sce) {
//Initialized code
}
public void contextDestroyed(ServletContextEvent sce) {
//Destroyed code
}
}

ServletContextEvent 中的方法

  ServletContext getServletContext():取得servletContext对象

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

<listener>
<listener-class>
com.lovobook.MyServletContextListener
</listener-class>
</listener>

  ServletContextAttributeListener接口

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

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

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

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

public class MyServletContextAttributeListener implements ServletContextAttributeListener {
public void attributeAdded(ServletContextAttributeEvent scae){}
public void attributeRemoved(ServletContextAttributeEvent scae) {}
public void attributeReplaced(ServletContextAttributeEvent scae) {}
}

监听会话范围内事件

  管理从同一个客户端或用户向一个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. 借助System.Linq.Dynamic, IQueryable根据排序字符串排序

    在使用Entity Framework时,若有多个排序,需要OrderBy (OrderByDescending)再ThenBy (ThenByDescending) 假设需要根据Name升序排序,再 ...

  2. Entity Framework工具POCO Code First Generator的使用

    在使用Entity Framework过程中,有时需要借助工具生成Code First的代码,而Entity Framework Reverse POCO Code First Generator是一 ...

  3. iOS7中修改StatusBar的显示颜色

    iOS7中修改StatusBar的显示颜色 效果图如下: 在iOS7中想手动修改statusBar的颜色,第一步需要做的就是在plist文件中设置View controller-based statu ...

  4. 使用CoreData [3]

    使用CoreData [3] 此篇幅介绍CoreData如何升级版本防止崩溃 把你之前创建的实体文件全部删除掉,把沙盒中的数据库文件删除掉,实体只保持一个,然后重新创建出实体文件. - (BOOL)a ...

  5. SQL语言DDL DML DCL TCL四种语言

    1.DDL(Data Definition Language)数据库定义语言:DDL使我们有能力创建或删 除表格.可以定义索引(键),规定表之间的链接,以及施加表间的 约束. • 常见DDL 语句: ...

  6. Linux学习---Linux用户审计简单版

    [root@localhost root]# vim /etc/profile # SHENJI history USER=`whoami` USER_IP=`who -u am i 2>/de ...

  7. Linux cal命令详解

    cal 显示指定月份的日历 常见命令参数 NAME cal - displays a calendar SYNOPSIS cal [-smjy13] [[[day] month] year] DESC ...

  8. 【ORACLE】 安装需要注意的问题(一)

    安装ORACLE虽然不是很难,但是有时候很容易因为一些小细节导致安装失败,浪费大量的时间. 这里总结一下安装ORACLE的时候需要注意的问题,以及解决的办法 问题1:系统先决条件检查 正在检查操作系统 ...

  9. Elementary Sorts

    初级排序 rules of the game 排序是很常见的需求,把数字从小到大排,把字符串按字典序排等等,目标是能对任何类型的数据进行排序,这可以通过回调(callback)实现: Java 用接口 ...

  10. Java并发编程--6.Exchanger线程间交换数据

    在两个线程之间定义同步点,当两个线程都到达同步点时,他们交换数据结构,因此第一个线程的数据结构进入到第二个线程中,第二个线程的数据结构进入到第一个线程中 在生产者-消费者情境模式中它包含了一个数缓冲区 ...