JavaWeb总结(八)

对象作用域

  在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) :当在请求作用域中替换一个属性值的时候调用

时间: 2024-10-17 21:37:44

JavaWeb总结(八)的相关文章

JavaWeb 后端 &lt;八&gt; 之 JDBC基礎(全)

一.JDBC简介 1.JDBC是SUN公司为了简化操作数据推出一套规范.数据库厂商的驱动就是对JDBC的实现. 2.Java Data Base Connectivity(java数据库连接),它主要由接口组成. java.sql.*    javax.sql.*   JDK中 数据库的驱动jar包 (mysql-connector-java-5.0.8-bin.jar ) 二.JDBC的编码步骤 0.前提:拷贝数据库的驱动到构建路径中(classpath) 1.注册驱动 2.获取与数据库的链接

java-web——第八课 JSTL的显示格式

前言: 做一件事情之前, 首先我们需要发现问题, 前一课我们讲了 JSTL 如何运用到 JSP 网页之中去 虽然只是提了一下,不过还是有问题的存在 在我们的实体类中,难免会有数字的和时间的存在, 那么,在页面显示的时候又会怎么样呢? 在这之前,让我们来添加一下数据 让我们来看一下,页面显示是怎么样的 大家也发现了,很丑对吧 给客户总得去美化一下吧 那问题来了, 如何去美化数据呢? 思路: 运用 JSTL 的 fmt 标签什么是 fmt 标签? fmt的标签为辅助性功能标签. 适用于格式化输出界面

JavaWeb总结(八)&mdash;EL表达式

一.EL表达式简介      EL全名Expression Language.主要有以下作用. 1.获取数据      EL表达式主要用于替换JSP页面的脚本表达式,以及各种类型的Web域中检索Java对象.获取数据.(某个Web域中的对象.访问javabean的属性.访list集合.访问map集合.访问数组)   2.执行运算      利用EL表达式可以在JSP页面中执行一些基本的关系运算.逻辑运算.和算术运算,以及在JSP页面完成一些简单的逻辑运算.${user == null}.   3

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

JavaWeb学习总结(四十八)——模拟Servlet3.0使用注解的方式配置Servlet 一.Servlet的传统配置方式 在JavaWeb开发中, 每次编写一个Servlet都需要在web.xml文件中进行配置,如下所示: 1 <servlet> 2 <servlet-name>ActionServlet</servlet-name> 3 <servlet-class>me.gacl.web.controller.ActionServlet</s

javaweb学习总结(二十八)——JSTL标签库之核心标签【转】

原文地址:javaweb学习总结(二十八)——JSTL标签库之核心标签 一.JSTL标签库介绍 JSTL标签库的使用是为弥补html标签的不足,规范自定义标签的使用而诞生的.使用JSLT标签的目的就是不希望在jsp页面中出现java逻辑代码 二.JSTL标签库的分类 核心标签(用得最多) 国际化标签(I18N格式化标签) 数据库标签(SQL标签,很少使用) XML标签(几乎不用) JSTL函数(EL函数) 三.核心标签库使用说明 JSTL的核心标签库标签共13个,使用这些标签能够完成JSP页面的

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

一.HttpServletResponse常见应用——生成验证码 1.1.生成随机图片用作验证码 生成图片主要用到了一个BufferedImage类, 生成随机图片范例: 1 package gacl.response.study; 2 3 import java.awt.Color; 4 import java.awt.Font; 5 import java.awt.Graphics2D; 6 import java.awt.image.BufferedImage; 7 import java

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

前言:在javaweb开发中自定义标签的用处还是挺多的.今天和大家一起看自定义标签是如何实现的. 1:什么是标签 标签是一种XML元素,通过标签可以使JSP页面变得简介易用,而且标签具有很好的复用性. 2:自定义标签的标签库主要的接口以及类的继承实现关系图 3:一步步实现自定义标签 3.1:Tag接口 我们先看一个标签<td></td>这个标签有开始标签和结束标签,而且还有<tr>这样的父标签,那么实现一个简单的标签需要什么呢 第一:开始标签  第二:结束标签第三:资源

javaweb学习总结八——HttpServletResponse对象二

一.HttpServletResponse常见应用--生成验证码 1.1.生成随机图片用作验证码 生成图片主要用到了一个BufferedImage类, 生成随机图片范例: 1 package gacl.response.study; 2 3 import java.awt.Color; 4 import java.awt.Font; 5 import java.awt.Graphics2D; 6 import java.awt.image.BufferedImage; 7 import java

javaweb学习总结(三十八)——事务

一.事务的概念 事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功. 例如:A——B转帐,对应于如下两条sql语句  update from account set money=money+100 where name='B';  update from account set money=money-100 where name='A'; 二.MySQL数据库中操作事务命令 1.编写测试SQL脚本,如下: 1 /*创建账户表*/ 2 create table acco

javaweb学习总结(十八)——JSP属性范围

所谓的属性范围就是一个属性设置之后,可以经过多少个其他页面后仍然可以访问的保存范围. 一.JSP属性范围 JSP中提供了四种属性范围,四种属性范围分别指以下四种: 当前页:一个属性只能在一个页面中取得,跳转到其他页面无法取得 一次服务器请求:一个页面中设置的属性,只要经过了服务器跳转,则跳转之后的页面可以继续取得. 一次会话:一个用户设置的内容,只要是与此用户相关的页面都可以访问(一个会话表示一个人,这个人设置的东西只要这个人不走,就依然有效) 上下文中:在整个服务器上设置的属性,所有人都可以访