JavaWeb系列之十五(监听器)

来源:互联网 发布:ddc控制器编程 编辑:程序博客网 时间:2024/06/15 07:50

1.监听器:
    事件源
    监听器
    在事件源上邦定监听器
    事件:当事件源发生了变化,触发监听器
2.servlet监听器
    servlet会分成三类:监听的是里面域对象的状态servletContext HttpSession,ServletRequest
    第一类:监听三个域对象的创建和销毁 
    servletContext:整个web项目,在服务器启动时创建,服务器关闭时候销毁
        第一步:实现一个接口ServletContextListener实现它的方法
            contextInitialized(ServletContextEvent sce) :如果域对象创建了,会自动执行这个方法
            contextDestroyed(ServletContextEvent sce) :如果域对象销毁了,会自动执行这个方法
        第二步操作:在web.xml中进行配置,让服务器知道不是一个普通的java程序,而是一个监听器
            <listener>
                <listener-class>cn.itcast.listener.TestServletContext</listener-class>
            </listener>
        servletContext域的应用:因为在服务器启动时候创建,经常用在创建数据库连接池,或者在服务器启动时候加载配置文件
   
    HttpSession一次会话,request.getSeesion创建。三种销毁(1)非正常关闭服务器 (2)默认的过期时间 (3)调用方法
        第一步实现:HttpSessionListener接口
        访问jsp的时候会创建一个session因为会编译成servlet,jsp里面有内置对象,getSession
        访问一个servlet不会创建session只有它访问getSession的时候会创建
        访问html的时候不会创建session对象。
        第二步配置web.xml        
    ServletRequest一次请求,请求时创建,请求结束
        监听ServletRequestListener有两个方法表示这个域对象创建的时候来执行
        访问jsp,servlet,html会创建一个request对象,只要浏览器是一起请求都会创建request对象
     
    第二类:监听三个域对象里面属性的变化(增加,替换,移除)
        监听servletcontext域里面的属性的变化
            第一步操作:实现ServletContextAttributeListener接口
            在接口里面有三个方法
            - attributeAdded(ServletContextAttributeEvent event) :向域对象里面增加属性,执行这个方法
            - attributeRemoved(ServletContextAttributeEvent event) :从域对象里面移除属性,执行这个方法
            - attributeReplaced(ServletContextAttributeEvent event) :替换了域对象里面的属性的值,会执行这个方法
            第二步操作
            在web.xml进行配置,让服务器知道是一个监听器
       监听HttpSession域里面的属性的变化
            第一步操作:实现HttpSessionAttributeListener 接口
            在接口里面有三个方法
             - attributeAdded(HttpSessionBindingEvent event) :向域对象里面增加属性,执行这个方法
             - attributeRemoved(HttpSessionBindingEvent event) :从域对象里面移除属性,执行这个方法
             - attributeReplaced(HttpSessionBindingEvent event) :替换了域对象里面的属性的值,会执行这个方法
            第二步操作
            在web.xml进行配置,让服务器知道是一个监听器

    监听servletRequest域里面的属性的变化
            第一步操作:实现ServletRequestAttributeListener接口
            接口里面有三个方法
            - attributeAdded(ServletRequestAttributeEvent srae) :向域对象里面增加属性,执行这个方法
            - attributeRemoved(ServletRequestAttributeEvent srae) :从域对象里面移除属性,执行这个方法
            - attributeReplaced(ServletRequestAttributeEvent srae) :替换了域对象里面的属性的值,会执行这个方法
        在servletContext监听器里面如何得到servletContext对象
        通过ServletContextEvent里面getServletContext()方法得到

    第三类:监听httpSession里面的javabean的状态
        第一个接口 HttpSessionBindingListener接口 
        接口里面有两个方法
        - valueBound(HttpSessionBindingEvent event)     绑定:把javabean对象放到session域对象里面
        - valueUnbound(HttpSessionBindingEvent event)    解除绑定:把javabean对象从session域里面移除
        第二个接口 HttpSessionActivationListener接口
        有两个方法
        - sessionDidActivate(HttpSessionEvent se)
        活化
        - sessionWillPassivate(HttpSessionEvent se)
        活化:把磁盘上面序列化的session反序列化到项目里面
        钝化:把session序列化到磁盘
        正常关闭服务器,在work目录里面有序列化的文件
        实现接口Serializable 的类才可以序列化,User没有这个接口才出现异常
        而map里面有继承序列化

不是servlet不能用getServletContext来获取servletContext
4.分页显示数据
    第一种方式:逻辑分页(假分页)
    一次性把数据都取出来,每次显示一部分,缺点:数据量大,时间长,
    优点:只需要和数据库交互一次、、
    第二种方式:物理分页
    每次根据显示的页面和数据,到数据库里面去查询
    需要多次和数据交互
    可以使用masql里面的关键字,limit实现分页,
    开始位置如何计算:(当前页数-1)*每页的记录数
        开始位置 当前显示的记录数
 第一页   0        5
    总的页数如何记录:总记录数/每页的记录数
    如果总的记录数能够整除,页数就是除的结果
    如果总的记录数不能够整除,页数就是除的结果+1
    
    首先创建javabean在把里面的属性
    

     













0 0
原创粉丝点击