监听器Listener和过滤器Filter

1.1监听器Listener

1.1.1监听器概述

所谓的监听器是指对整个WEB环境的监听,当被监视的对象发生改变时,立即调用相应的方法进行处理。

1.1.2监听器最常见的应用场景

JavaSE GUI编程

Android手机开发编程

1.1.3 JavaWeb事件驱动

(1)事件源:三大域对象ServletContext,HttpSession,HttpServletRequest

(2)事件:A、创建和销毁B、向域对象中添加、修改、删除属性C、HttpSession对象中特定JavaBean的钝化活化状态、绑定及解除绑定状态

(3)监听器:八个监听器, 分成三种

(4)注册/绑定监听器:将”监听器对象”注册给”事件源”。当”事件源”发生某些行为时,监听对象将被执行

JavaWeb监听器:

①项目启动时,执行某些程序

②用户登录,通知用户的好友上线    sessionàuser    

③项目关闭时,把内存中未完成的工作,重要的数据 保存数据库中,硬盘上

1.1.4监听器的编写流程

编写监听器实现类,需要实现指定的接口

在web.xml文件配置监听器(部分监听不需要配置)

<listener>

    <listener-class></listener-class>

</listener>

1.1.5JavaEE规范规定了8个监听器接口,用于监听不同的WEB对象

1.1.5.1监听域对象的创建和销毁

监听器的生命周期:

服务器启动时,监听器创建

服务器正常关闭时,监听器就销毁

监听ServletContext对象的创建和销毁

javax.servlet.ServletContextListener 

监听Session对象的创建和销毁

javax.servlet.http.HttpSessionListener 

监听Request对象的创建和销毁

javax.servlet.ServletRequestListener 

如果想在监听器中获取事件源对象,使用事件对象.get事件源()

1.1.5.2监听域对象的属性变更(添加、更改、删除)

监听ServletContext对象中属性的变更

javax.servlet.ServletContextAttributeListener

监听Session对象中属性的变更

javax.servlet.http.HttpSessionListener 

监听Request对象中属性的变更

javax.servlet.ServletRequestListener 

如果想在监听器中获取事件源对象对应的属性名和属性值,使用事件对象.getName()/事件对象.getValue()

1.1.5.3监听session作用域特殊JavaBean

让JavaBean自己监听自己,所以不用写web.xml的绑定监听器。事件源=监听器

生命周期:

创建:和普通JavaBean的创建一样,由程序员手动调用

销毁:和普通的JavaBean一样的

监听HttpSession中特殊JavaBean钝化和活化状态

javax.servlet.http.HttpSessionActivationListener

监听HttpSession中特殊JavaBean绑定和解除绑定

javax.servlet.http.HttpSessionBindingListener

钝化: 序列化--->把内存数据写入磁盘文件

活化: 反序列化--->从磁盘文件读取数据写入内存中

如果某个JavaBean需要监听钝化和活化状态

必须实现java.io.Serializable 接口否则活化失败

何时钝化:服务器正常关闭。

把session中的数据保存在  tomcat/work/catalina/localhost/day23_1/     

SESSIONS.ser文件。

何时活化:服务器正常启动。

把序列化文件进行反序列化操作,文件也会被删除。

 

1.2电子邮件

1.2.1概述

邮件服务器:

要在Internet上提供电子邮件功能,必须有专门的电子邮件服务器。例如sina、sohu、163都有自己的邮件服务器。

邮件服务器,按照提供的服务类型,可以分为发送邮件的服务器或接收邮件的服务器。

电子邮箱:

电子邮箱(E-mail地址)的获得需要在邮件服务器上进行申请,电子邮箱其实就是用户在邮件服务器上申请的一个账户。用户在邮件服务器上申请了一个账号后,邮件服务器就会为这个账号分配一定的空间,用户从而可以使用这个账号以及空间,发送电子邮件和保存别人发送过来的电子邮件。

1.2.2邮件协议

SMTP协议---发邮件协议

全称为Simple Mail Transfer Protocol(简单邮件传输协议),它定义了邮件客户端软件与SMTP服务器之间、以及两台SMTP服务器之间的通讯规则。

端口号:25

POP3协议---收邮件协议

全称为Post Office Protocol(邮局协议),它定义了邮件客户端软件与POP3服务器的通讯规则。

端口号:110

1.2.3发送邮件流程

 

1.2.4使用JavaMail发送邮件

准备工作:

邮箱服务器---必须在本机进行搭建(安装前,必须将防火墙关闭)

导入jar包:

Mail.jar

易邮邮箱服务器(免费测试版):

限制:最多创建5个账号

管理员:service@store.com      123456

测试账户:xiaoming@store.com      123456

客户端

浏览器端作为客户端:不用安装客户端软件。

登录成功的标志:Session中有用户信息,Session都有过期时间。

使用第三方软件作为客户端:

Outlook    收费。

Foxmail    免费,功能比较强大。

 

 

 

1过滤器

1.1什么是过滤器

过滤器是一个运行在服务器端的程序,在与之相关的servlet或jsp页面之前运行,实现对请求资源的过滤的功能。

过滤器可附加到一个或多个servlet或jsp页面上,可以检查请求信息,也可以处理响应信息。

Filter的基本功能是对servlet容器调用servlet的过程进行拦截,从而在servlet执行前后实现一些特殊的功能。

1.2过滤器常用实例

自动登陆、解决全站乱码、屏蔽非法文字、进行响应式数据压缩,等等。

1.3过滤器的编写流程

实现类,需要实现接口javax.servlet.Filter

配置,在web.xml使用<filter>和<filter-mapping>进行配置

1.4 Filter生命周期:过滤器从创建到销毁的过程

服务器启动的时候,服务器就会创建过滤器的对象,每次访问被拦截目标资源,过滤器中的doFilter的方法就会执行。当服务器关闭的时候,服务器就会销毁Filter对象。

服务器在启动时执行初始化方法,init

访问资源被拦截时执行拦截方法,doFilter。

放行:chain.doFilter(request,response);

服务器关闭时执行销毁方法,destroy。

 

FilterChain:过滤器链

过滤器链中的过滤器的执行的顺序跟<filter-mapping>的配置顺序有关

1.5过滤器的配置

url-pattern的配置与servlet中的配置一样

三种配置:

完全路径匹配:以 / 开始 /aaa  /aaa/bbb

目录匹配:以 / 开始 /*  /aaa/*

扩展名匹配:不能以 / 开始  *.do  *.jsp  *.action

servlet-name的配置,通过url-pattern拦截一个servlet的资源,也可以通过servlet-name标签进行拦截。

dispatcher的配置

REQUEST:默认值

FORWARD:拦截转发

ERROR:拦截跳转到错误页面,全局错误页面

INCLUDE:拦截在一个页面中包含另一个页面

1.6过滤器和请求转发

①如果在过滤器中写请求转发代码,并不会影响目标资源的执行。

过滤器执行完毕后,就会执行请求转发。

②如果目标资源中写了请求转发,过滤器目前不会影响目标资源的请求转发

③如果过滤器中执行了请求转发代码,目标资源禁止写请求转发,因为会报错。

请求转发是强制性跳转。

1.7过滤器和重定向

①目前,过滤器上不建议书写重定向代码

②目标资源可以写重定向代码

重定向仅会向响应行写302状态码,向响应头写location

 

 

 

 

转载于:https://my.oschina.net/jinyeyaonitian/blog/831183

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值