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