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>
* 监听生与死:ServletRequestListner\HttpSessionListener\ServletContextListener
* 监听创建对应对象的方法:requestInitialized()\sessionCreated()\contextInitialized()
* 作用:进行必要的初始化功能.
* 先创建对应对象,再调用对应监听方法.
* 接收一个事件类型的参数:用于获取监听其对象.
* 监听销毁对应对象的方法:requestDestroyed()\sessionDestroyed()\contextDestroyed()
* 作用:进行必要的资源释放.
* 监听属性变化:ServletRequestAttributeListener\HttpSessionAttributeListener\ServletContextAttributeListener
* xxxAdded()方法:用于监听向request\session\context添加属性.
* xxxReplaced()方法:用于监听修改request\session\context的属性值.
* xxxRemoved()方法:用于监听从request\session\context删除属性.
* 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服务启动进行计数器的初始化)