笔记: JDBC分页&监听器

JDBC分页:
 * 概述:
   * 定义:将一页显示的内容,分成两页或两页以上来显示.
   * 分类:
     * 物理分页:
       * 就是在查询数据库记录时,已经实现分页.
       * 这种分页技术一定是数据库提供.(不同数据库实现方式不同)
     * 逻辑分页:
       * 就是查询数据库所有记录,然后在通过Java代码实现分页效果.
       * 逻辑分页与数据库产品本身是无关的.
 * 物理分页:
   * MySQL的Limit:
     * 语法:SELECT * FROM 表名 LIMIT 位置偏移量,行数;
     * 问题:Limit是否可以实现分页效果?
       * 假设有1000条记录,要求每页显示20条记录,一共50页.
       * 第一页显示的记录应该第一条到第20条.
       * 第二页显示的记录应该第21条到第40条.
       * 第三页显示的记录应该第41条到第60条.
       * 第n页显示的记录应该第20*(n-1)+1条到第20*n条.
   * 特点:
     * 优点:
       * 每次查询数据库,只查询指定条数.
       * 查询的效率高,速度快.
     * 缺点:
       * 与数据库有关.
       * 每次都需要重新查询数据库表.
 * 逻辑分页:
   * 特点:
     * 优点:
       * 与数据库无关.
       * 只需要查询一次数据库.
     * 缺点:
       * 第一次查询数据库的效率低.
       * 自定义实现分页逻辑.
   * 
监听器:
 * 概述:
   * JavaEE包含三个组件:Servlet、Listener和Filter.
   * 定义:用于监听事件,并完成其逻辑.
   * 特点:
     * 监听器不应该是主动触发,被动触发.
     * Web的监听器也是由Tomcat触发.(监听器的运行不由我们关心的)
     * 我们只关注如何实现监听器的逻辑.
 * 八大监听器:
   * 监听生与死:
     * ServletRequestListner:监听Request对象的创建与销毁
     * HttpSessionListener:监听Session对象的创建与销毁
     * ServletContextListener:监听Context对象的创建与销毁
   * 监听属性变化:
     * ServletRequestAttributeListener:监听Request对象的属性变化
     * HttpSessionAttributeListener:监听Session对象的属性变化
     * ServletContextAttributeListener:监听Context对象的属性变化
   * HttpSessionBindingListener:Session绑定监听器
   * HttpSessionActivationListener:钝化与活化
 * 如何使用监听器:
   * 创建一个Java类,实现上述八大监听器之一,并重写其方法.
   * 在Web工程的web.xml文件中,进行相关配置:
     <listener>
        <listener-class>对应监听器的全类名</listener-class>
     </listener>
 * 监听生与死:ServletRequestListnerHttpSessionListenerServletContextListener
   * 监听创建对应对象的方法:requestInitialized()sessionCreated()contextInitialized()
     * 作用:进行必要的初始化功能.
     * 先创建对应对象,再调用对应监听方法.
     * 接收一个事件类型的参数:用于获取监听其对象.
   * 监听销毁对应对象的方法:requestDestroyed()sessionDestroyed()contextDestroyed()
     * 作用:进行必要的资源释放.
 * 监听属性变化:ServletRequestAttributeListenerHttpSessionAttributeListenerServletContextAttributeListener
   * xxxAdded()方法:用于监听向requestsessioncontext添加属性.
   * xxxReplaced()方法:用于监听修改requestsessioncontext的属性值.
   * xxxRemoved()方法:用于监听从requestsessioncontext删除属性.
 * HttpSessionBindingListener
 * HttpSessionActivationListener
   * Session的序列化:自动机制
     * 当Tomcat服务器关闭时Session会被保存到本地硬盘中,
       当Tomcat服务器启动时Session会从本地硬盘读取到内存中的过程.
   * Session的钝化与活化:手动实现
     * 钝化:当Tomcat服务器关闭时Session会被保存到本地硬盘中.
     * 活化:当Tomcat服务器启动时Session会从本地硬盘读取到内存中.
 
     * 实现步骤:
       * 在Servlet中实例化一个JavaBean对象,并将其绑定到Session中.
       * 将JavaBean实现HttpSessionActivationListener和Serializable接口.
       * 在Tomcat安装目录/conf目录/Catalina目录/localhost目录中,创建一个名为Web工程名的xml文件.
        <?xml version="1.0" encoding="UTF-8"?>
<Context>
<Manager className="org.apache.catalina.session.PersistentManager" maxIdleSwap="1" >
<Store className="org.apache.catalina.session.FileStore" directory="mysession" />
</Manager>
</Context>
  * 注意:
    * 需要在web.xml文件中进行配置的监听器:
      * ServletRequestListner
      * HttpSessionListener
      * ServletContextListener
      * ServletRequestAttributeListener
      * HttpSessionAttributeListener
      * ServletContextAttributeListener
    * 不需要在web.xml文件中进行配置的监听器:
      * HttpSessionActivationListener
      * HttpSessionBindingListener
  * 监听器案例:统计在线人数
    * 分析:
      * 利用Session对象来判断是否有新的用户访问.
      * 定义一个计数器,进行累加.(Tomcat服务启动进行计数器的初始化)





原文地址:https://www.cnblogs.com/istarry/p/397c3acaa364f2522acd3d93517d61e1.html