zoukankan      html  css  js  c++  java
  • 监听器Listener

    ---恢复内容开始---

    一、监听器Listener

    javaEE包括13门规范 在课程中主要学习 servlet技术 和 jsp技术

    其中 servlet规范包括三个技术点:servlet  listener  filter

    1.什么是监听器?

    监听器就是监听某个对象的的状态变化的组件

    监听器的相关概念:

    事件源:被监听的对象  ----- 三个域对象 request  session  servletContext

    监听器:监听事件源对象  事件源对象的状态的变化都会触发监听器 ---- 6+2

    注册监听器:将监听器与事件源进行绑定

    响应行为:监听器监听到事件源的状态变化时 所涉及的功能代码 ---- 程序员编写代    码

    2.监听器有哪些?

    第一维度:按照被监听的对象划分:ServletRequest域   HttpSession域         ServletContext域

    第二维度:监听的内容分:监听域对象的创建与销毁的    监听域对象的属性变      化的


    3.监听三大域对象的创建与销毁的监听器

    (1)监听ServletContext域的创建与销毁的监听器ServletContextListener

    1)Servlet域的生命周期

    何时创建:服务器启动创建

    何时销毁:服务器关闭销毁

    2)监听器的编写步骤(重点):

    a、编写一个监听器类去实现监听器接口

    b、覆盖监听器的方法

    c、需要在web.xml中进行配置---注册


    3)监听的方法:

     

    4)配置文件:

     

    5)ServletContextListener监听器的主要作用

    a、初始化的工作:初始化对象 初始化数据 ---- 加载数据库驱动  连接池的初始   化

    b、加载一些初始化的配置文件 --- spring的配置文件

    c、任务调度----定时器----Timer/TimerTask

     

    任务调度:

    (2)监听Httpsession域的创建于销毁的监听器HttpSessionListener

    1)HttpSession对象的生命周期

    何时创建:第一次调用request.getSession时创建

    何时销毁:服务器关闭销毁  session过期  手动销毁

    2)

    HttpSessionListener的方法

    (3)监听ServletRequest域创建与销毁的监听器ServletRequestListener

    1)ServletRequest的生命周期

    创建:每一次请求都会创建request

    销毁:请求结束

    2)ServletRequestListener的方法


    4.监听三大域对象的属性变化的

    (1)域对象的通用的方法:

    setAttribute(name,value)

     --- 触发添加属性的监听器的方法  

     --- 触发修改属性的监听器的方法

    getAttribute(name)

    removeAttribute(name) 

    --- 触发删除属性的监听器的方法

    (2)ServletContextAttibuteListener监听器


    (3) HttpSessionAttributeListener监听器(同上)

    (4) ServletRequestAriibuteListenr监听器(同上)

    5.与session中的绑定的对象相关的监听器(对象感知监听器)

    (1)即将要被绑定到session中的对象有几种状态

    绑定状态:就一个对象被放到session域中

    解绑状态:就是这个对象从session域中移除了

    钝化状态:是将session内存中的对象持久化(序列化)到磁盘

    活化状态:就是将磁盘上的对象再次恢复到session内存中

    面试题:当用户很多时,怎样对服务器进行优化?

    暂时将未操作的用户持续化到硬盘,使用时恢复到内存中

    (2)绑定与解绑的监听器HttpSessionBindingListener


    (3)钝化与活化的监听器HttpSessionActivationListener

    可以通过配置文件 指定对象钝化时间 --- 对象多长时间不用被钝化

    注意该对象要实现序列化接口

    在META-INF下创建一个context.xml

    <Context>

     <!-- maxIdleSwap:session中的对象多长时间不使用就钝化 -->

     <!-- directory:钝化后的对象的文件写到磁盘的哪个目录下  配置钝化的对象文件在                                                                           work/catalina/localhost/钝化文件 -->

     <Manager className="org.apache.catalina.session.PersistentManager"                                                                                                                           maxIdleSwap="1">

      <Store className="org.apache.catalina.session.FileStore" directory="itcast205" />

     </Manager>

    </Context>

     

    被钝化到work/catalina/localhost/的文件

    二、邮箱服务器

    1.邮箱服务器的基本概念

    邮件的客户端:可以只安装在电脑上的也可以是网页形式的

    邮件服务器:起到邮件的接受与推送的作用

    邮件发送的协议:

    协议:就是数据传输的约束

    接受邮件的协议:POP3   IMAP

    发送邮件的协议:SMTP

     

    2.邮箱的发送过程


    3.邮箱服务器的安装

    1)双击邮箱服务器软件

    2)对邮箱服务器进行配置

     

     

    4.邮箱客户端的安装


    5.邮件发送代码

    package com.itheima.mail;
    
    import java.util.Properties;
    
    import javax.mail.Authenticator;
    import javax.mail.Message;
    import javax.mail.MessagingException;
    import javax.mail.PasswordAuthentication;
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.AddressException;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeMessage;
    import javax.mail.internet.MimeMessage.RecipientType;
    
    public class MailUtils {
    
    	//email:邮件发给谁  subject:主题  emailMsg:邮件的内容
    	public static void sendMail(String email, String subject, String emailMsg)
    			throws AddressException, MessagingException {
    		
    		// 1.创建一个程序与邮件服务器会话对象 Session
    		Properties props = new Properties();
    		props.setProperty("mail.transport.protocol", "SMTP");//发邮件的协议
    		props.setProperty("mail.host", "localhost");//发送邮件的服务器地址
    		props.setProperty("mail.smtp.auth", "true");// 指定验证为true
    
    		// 创建验证器
    		Authenticator auth = new Authenticator() {
    			public PasswordAuthentication getPasswordAuthentication() {
    				return new PasswordAuthentication("tom", "123");//发邮件的账号的验证
    			}
    		};
    
    		Session session = Session.getInstance(props, auth);
    
    		// 2.创建一个Message,它相当于是邮件内容
    		Message message = new MimeMessage(session);
    
    		message.setFrom(new InternetAddress("tom@sissy041.com")); // 设置发送者
    
    		message.setRecipient(RecipientType.TO, new InternetAddress(email)); // 设置发送方式与接收者
    
    		message.setSubject(subject);//邮件的主题
    
    		message.setContent(emailMsg, "text/html;charset=utf-8");
    
    		// 3.创建 Transport用于将邮件发送
    		Transport.send(message);
    	}
    }
    

      


    ---恢复内容结束---

    只待江流汲海,万木朝东
  • 相关阅读:
    Delphi XE5 android 蓝牙通讯传输
    Delphi XE5 android toast
    Delphi XE5 android openurl(转)
    Delphi XE5 如何设计并使用FireMonkeyStyle(转)
    Delphi XE5 android 捕获几个事件
    Delphi XE5 android listview
    Delphi XE5 android 黑屏的临时解决办法
    Delphi XE5 android popumenu
    Delphi XE5 android 获取网络状态
    Delphi XE5 android 获取电池电量
  • 原文地址:https://www.cnblogs.com/wanmudong/p/8971228.html
Copyright © 2011-2022 走看看