对象作用域

  在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. 9.Java注解(Annotation)

    一.系统内置标准注解 1.@Override 是一个标记注解类型,它被用作标注方法. 它说明了被标注的方法重载了父类的方法,起到了断言的作用.如果我们使用了这种Annotation在一个没有覆盖父类方 ...

  2. 执行相应操作后,将表单及table中数据清空

    使用 ccms.util.clearForm('要清空的表单的id'); $("#table中显示数据部分的id").empty();

  3. UIView使用UIMotionEffect效果

    UIView使用UIMotionEffect效果 这个效果在模拟器上看不了,所以无法截图. UIView+MotionEffect.h  +  UIView+MotionEffect.m // // ...

  4. JS DateTime 格式化

    首先看我们在浏览器接收到的DateTime格式的数据: 如果没有在传输的时候把DateTime转成字符串的话,我们只需要在JS中加一段代码即可转换,代码如下: function ChangeDateF ...

  5. 一、动态网络编程的概念 二、Tomcat服务器搭建 三、Servlet组件介绍

    一.动态网络编程的概念 动态网页:结合了HTML以外的高级程序编程语言和数据库技术生成的页面. 动态网页编程技术: ASP,PHP,JSP HTTP协议:规范浏览器和服务器之间通信的数据格式. 浏览器 ...

  6. November 28th 2016 Week 49th Monday

    You only live once, but if you do it right, once is enough. 年华不虚度,一生也足矣. One today can win two tomor ...

  7. 词组查询以及多值映射等SolrNet使用中的细节问题

    转自:http://www.duxuan.cn/doc/6896594.html

  8. 函数的应用 "注册" and "登录"

    登录 自己写 # 注册 registdef regist(): f = open("account", mode="r+", encoding="ut ...

  9. PHP设计模式系列 - 中介者模式

    中介者模式 中介者模式用于开发一个对象,这个对象能够在类似对象相互之间不直接相互的情况下传送或者调解对这些对象的集合的修改.一般处理具有类似属性,需要保持同步的非耦合对象时,最佳的做法就是中介者模式. ...

  10. 转 oracle的热备份和冷备份

    一.冷备份介绍:    冷备份数据库是将数据库关闭之后备份所有的关键性文件包括数据文件.控制文件.联机REDO LOG文件,将其拷贝到另外的位置.此外冷备份也可以包含对参数文件和口令文件的备份,但是这 ...