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) :当在请求作用域中替换一个属性值的时候调用
JavaWeb总结(八)的更多相关文章
- JavaWeb学习 (八)————HttpServletResponse对象(二)
一.HttpServletResponse常见应用——生成验证码 1.1.生成随机图片用作验证码 生成图片主要用到了一个BufferedImage类,
- JavaWeb总结(八)—EL表达式
一.EL表达式简介 EL全名Expression Language.主要有以下作用. 1.获取数据 EL表达式主要用于替换JSP页面的脚本表达式,以及各种类型的Web域中检索Java对象.获取数据.( ...
- JavaWeb 后端 <八> 之 JDBC基礎(全)
一.JDBC简介 1.JDBC是SUN公司为了简化操作数据推出一套规范.数据库厂商的驱动就是对JDBC的实现. 2.Java Data Base Connectivity(java数据库连接),它主要 ...
- JavaWeb(八)JQuery
jQuery 市场用得比较多两个框架: jQuery 比较适合做一些互联网 的应用(12306.com,蘑菇街,美丽说,聚美) extjs 比较适合做后台管理系统(电商(订单管理),银行,电信) 核心 ...
- JavaWeb【八、JSP指令与动作元素】
include指令(页面嵌套) <%@ include file="URL"%> include动作 <jsp:include page="URL&qu ...
- JavaWeb【一、简介】
原计划上周完成的内容,硬是过了一个清明拖到了这周,工作上还有很多东西没做...明天抓紧看把,争取这周末搞定 内容简介:(学习完后会重新梳理调整) 1.JavaWeb[一.简介] 2.JavaWeb[二 ...
- javaweb回顾第八篇如何创建自定义标签
前言:在javaweb开发中自定义标签的用处还是挺多的.今天和大家一起看自定义标签是如何实现的. 1:什么是标签 标签是一种XML元素,通过标签可以使JSP页面变得简介易用,而且标签具有很好的复用性. ...
- javaweb学习总结(八)——HttpServletResponse对象(二)
一.HttpServletResponse常见应用——生成验证码 1.1.生成随机图片用作验证码 生成图片主要用到了一个BufferedImage类,
- JavaWeb学习总结(四十八)——模拟Servlet3.0使用注解的方式配置Servlet
一.Servlet的传统配置方式 在JavaWeb开发中, 每次编写一个Servlet都需要在web.xml文件中进行配置,如下所示: 1 <servlet> 2 <servlet- ...
- JavaWeb学习 (二十八)————文件上传和下载
在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用 ...
随机推荐
- Windows 7系统启动MongoDB失败解决办法?
问题现象: 1.在配置Python环境安装MongoDB时发现在“服务”里面手动启动失败,报错如下: 2.在cmd里面也无法启动,注意这里要以管理员身份启动cmd哦 问题解决: 1.需要先在bin下执 ...
- 使用Reflector反编译并提取源代码
Reflector是一个强大的.net 反编译工具,有时我们不止需要反编译源代码,更需要提取源代码. Reflector本身不自带提取源代码功能,不过可以借助插件Reflector.FileDisas ...
- 转:iBatis简单入门教程
iBatis 简介: iBatis 是apache 的一个开源项目,一个O/R Mapping 解决方案,iBatis 最大的特点就是小巧,上手很快.如果不需要太多复杂的功能,iBatis 是能够满足 ...
- 15. DML, DDL, LOGON 触发器
触发器可以理解为由特定事件触发的存储过程, 和存储过程.函数一样,触发器也支持CLR,目前SQL Server共支持以下几种触发器: 1. DML触发器, 表/视图级有效,可由DML语句 (INSER ...
- [转]CentOS7增加或修改SSH端口号
前言:开启某服务或软件的端口,要从该服务或软件监听的端口(多以修改配置文件为主),SeLinux和防火墙(FireWall)的安全策略下手.如果使用阿里云,腾讯等第三方服务器还需要对管理控制台的安全组 ...
- Springboot+RestTemplate 简单使用
spring框架提供的RestTemplate类可用于在应用中调用rest服务,它简化了与http服务的通信方式,统一了RESTful的标准,封装了http链接, 我们只需要传入url及返回值 ...
- wrap装饰器包
import wrapt # without argument in decorator @wrapt.decorator def logging(wrapped, instance, args, k ...
- Memcahce和Redis比较
一.Memcache 1. memecache 把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小redis有部份存在硬盘上,这样能保证数据的持久性. 2. Memcache ...
- bootstrap datetimepicker 在 angular 项目中的运用
datetimepocker 是一个日期时间选择器,bootstrap datetimepicker 是 bootstrap 日期时间表单组件.访问 bootstrap-datetimepicker ...
- 安装VMware,Linux
不是每一个程序员都必须玩过linux,只是博主觉得现在的很多服务器都是linux系统的,而自己属于那种前端也搞,后台也搞,对框架搭建也感兴趣,但是很多生产上的框架和工具都是安装在服务器上的,而且有不少 ...