JavaWeb 之 17.JDBC分页和监听器

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013987258/article/details/83686992

## 分页(重点)和 监听器 ##


**分页的简介**
    
    1.为什么使用分页。
    2.好处:用户体检的非常好。查询的速度非常快。缺点数据库的交互比较多。
    3.分页的技术
        
    4.MySQL的关键字    limit MySQL数据库方言    (使用它就行分页)
        * mySQL    直接使用limit操作
        * 使用关键字top,嵌套的查询
        * Oracle    嵌套查询
    
    5.limit关键字
        * select * from t_customer limit a,b;    
        * a参数:从哪条记录开始
        * b参数:查询多少条记录
        例: select * from t_customer limit 0,10;
        -- 一共显示10条记录 1-10  11-20  21-30
        -- 查询第三页的数据 0-10  10-10  20-10   (当前页-1)*每页显示的数据10

**分页的分析的过程**
    
    1.pageCode    当前页            -- 从页面获取
    2.totalPage    总页数            -- 计算出来
    3.totalCount    总记录数            -- 查询数据库
    4.pageSize    每页显示的记录数    -- 用户规定的(10)
    5.beanList    显示的数据            -- 查询数据库的
    
    6.把上述这些变量封装到JavaBean中,PageBean。在各层之间传递PageBean
    
    
**分页遇到问题**

    
**页面列表**

    1.页码列表显示10个                -- 一共10个。
    2.当前页在第6个位置,发生变化。    -- 当前页是pageCode
    
    [5][6][7][8][9][10][11][12][13][14]
    
    
    * 能知道开始是位置是1  ,结束的位置10.
    * 定义变量开始位置begin     结束位置end
    
        * 通过pageCode来计算begin和end
            * 如果totalPage <= 10       begin =1     end = totalPage     [1][2][3][4][5][6][7][8][9][10]
            * 如果totalPage > 10    begin = pageCode - 5  end = pageCode + 4
                * 头溢出    当begin < 1       begin = 1  end = 10
                * 尾溢出    当end > totalPage  end = totalPage  begin = end - 9
            

**带条件的分页查询**


## WEB监听器 ##

**监听器的概述**
    
    1.概述:监听器是一个Java的类,作用是用来监听另一个Java类的状态的改变。
    2.概念:(场景:电动车上安装了一个报警器)
        * 事件源:被监听的对象    (电动车)
        * 监听器:监听的对象    (报警器)
        * 绑定事件源:在事件源上绑定监听器。(在电动车上安装报警器)
        * 事件:一旦事件源的状态发生了变化,创建一个事件对象,把事件对象传递给监听器,监听器中一个方法就会执行了。(我的电动车被人踢了一脚,报警器就说话了:主人,我被人给踢了!!)
        
        * 事件对象:产生的,在监听器中可以使用事件对象获取事件源对象。
        
    3.模拟的一个例子


**开发步骤**

    1.编写一个Java的类,实现监听器的接口,重写方法。
    2.在web.xml中进行配置。
        <listener>
            <listener-class>cn.itcast.listener1.MyServletContextListener</listener-class>
        </listener>
        
    
**第一类:域对象的创建和销毁的监听器**

    1.ServletContextListener  -- 监听ServletContext对象的创建和销毁。
        * 方法:
            * contextInitialized(ServletContextEvent sce)             -- ServletContext一被创建就执行
            * contextDestroyed(ServletContextEvent sce)             -- ServletContext一被销毁就执行

        * ServletContext什么创建和什么时候销毁?与天地同寿
            * 服务器一启动的时候,ServletContext创建了,一次。
            * ServletContext服务器关闭的时候,或者项目移除了。销毁了。
    
    
    2.HttpSessionListener  -- 监听HttpSeesion对象的创建和销毁
        * 方法
            * sessionCreated(HttpSessionEvent se)         -- session一创建该方法就执行
            * sessionDestroyed(HttpSessionEvent se)     -- session一销毁该方法就执行
            
        * session什么时候创建呢?啥时候销毁呀?
            * 第一次调用该request.getSession()方法,
            * session什么时候销毁
                * 默认的销毁时间 30分钟
                * 非正常原因关闭服务器
                * 调用invalidate()方法销毁
        
        * 访问JSP会创建session吗 (会)? 访问Servlet会创建呢(不一定)?访问HTML会不会(不会)?


    3.ServletRequestListener -- 监听ServlertRequest对象的创建和销毁
        * 方法:
            * requestInitialized(ServletRequestEvent sre) 
            * requestDestroyed(ServletRequestEvent sre) 
        
        * request什么是创建和销毁?    
            * 有一次请求就创建request对象,做出响应,就销毁了。
        
        * 访问JSP会创建session吗 (会)? 访问Servlet会创建呢(会)?访问HTML会不会(会)?
        

扫描二维码关注公众号,回复: 4052362 查看本文章

**统计现在在线的人数**
    
    1.第一步:编写一个ServeltContext的监听器,在ServletContext对象中初始化一个变量(count 0)    
    2.第二步:编写一个HttpSession的监听器(countListener),你只要一访问demo1.jsp,为你创建一个session,countListener中sessionCreated方法就会执行一次。 从ServletContext中获取count值。count++,再保存到ServletContext.
    
    3.如果session销毁了,sessionDestroyed默认执行,ServletContext获取count,这回count--。
    

**第二类:域对象属性的状态改变的监听器**

    1.ServletContextAttributeListener    --  监听ServletContext域对象中的属性的状态改变(增强、替换、删除)
        * attributeAdded(ServletContextAttributeEvent scab)     -- 添加属性
        * attributeRemoved(ServletContextAttributeEvent scab)     -- 删除属性
        * attributeReplaced(ServletContextAttributeEvent scab)     -- 替换
    
    2.HttpSessionAttributeListener    -- 监听HttpSession域对象的属性的状态改变
        * attributeAdded(HttpSessionBindingEvent se) 
        * attributeRemoved(HttpSessionBindingEvent se) 
        * attributeReplaced(HttpSessionBindingEvent se) 
        
    3.ServletRequestAttributeListener    -- 监听ServletRequest域对象的属性的状态改变
        * attributeAdded(ServletRequestAttributeEvent srae) 
        * attributeRemoved(ServletRequestAttributeEvent srae) 
        * attributeReplaced(ServletRequestAttributeEvent srae) 
    
    
**第三类:session域对象中的JavaBean的监听器**

    1.HttpSessionBindingListener        -- 监听Session中的JavaBean对象的绑定(存入session中)和解除绑定(从session中移除)
        * 方法:
            * valueBound(HttpSessionBindingEvent event)         -- 绑定
            * valueUnbound(HttpSessionBindingEvent event)         -- 解除绑定
            
    2.HttpSessionActivationListener    -- 监听session的中JavaBean钝化(和session一起序列化磁盘上)和活化(从磁盘上反序列化)
        * 方法:
            * sessionDidActivate(HttpSessionEvent se)             -- 活化
            * sessionWillPassivate(HttpSessionEvent se)         -- 钝化
    
    
    * 总结:对session机制的优化。通过钝化的操作,如果一段时间没有操作,可以把session钝化(序列化磁盘上)。你要操作的时候,活化过来,session中东西还有。

猜你喜欢

转载自blog.csdn.net/u013987258/article/details/83686992