栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 数据挖掘与分析

javaweb数据库连接池,过滤器和监听器

javaweb数据库连接池,过滤器和监听器

数据库连接池(JDBC) 1、什么是数据库连接池

是一个数据库的工具 能够分配,管理和释放数据库连接
它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个

常见数据库连接池

  • C3P0:是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate [2] 一起发布,包括了实现jdbc3和jdbc2扩展规范说明的Connection 和Statement 池的DataSources 对象。

  • Proxool:是一个Java SQL Driver驱动程序,提供了对选择的其它类型的驱动程序的连接池封装。可以非常简单的移植到现存的代码中,完全可配置,快速、成熟、健壮。可以透明地为现存的JDBC驱动程序增加连接池功能。

  • Jakarta DBCP:DBCP是一个依赖Jakartacommons-pool对象池机制的数据库连接池。DBCP可以直接的在应用程序中使用。

  • DBPool:是一个高效、易配置的数据库连接池。它除了支持连接池应有的功能之外,还包括了一个对象池,使用户能够开发一个满足自己需求的数据库连接池。

  • Druid(德鲁伊特):

    DRUID是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0、DBCP、PROXOOL等DB池的优点,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况,可以说是针对监控而生的DB连接池(据说是目前最好的连接池)。

    Druid不仅是一个数据库连接池,还包含一个ProxyDriver、一系列内置的JDBC组件库、一个SQL Parser。

    支持所有JDBC兼容的数据库,包括Oracle、MySql、Derby、Postgresql、SQL Server、H2等。

    Druid针对Oracle和MySql做了特别优化,比如:

    • Oracle的PS Cache内存占用优化
    • MySql的ping检测优化

    Druid提供了MySql、Oracle、Postgresql、SQL-92的SQL的完整支持,这是一个手写的高性能SQL Parser,支持Visitor模式,使得分析SQL的抽象语法树很方便。

    简单SQL语句用时10微秒以内,复杂SQL用时30微秒。

    通过Druid提供的SQL Parser可以在JDBC层拦截SQL做相应处理,比如说分库分表、审计等。Druid防御SQL注入攻击的WallFilter,就是通过Druid的SQL Parser分析语义实现的

2、数据库连接池有什么用

因为使用JDBC的时候每一次使用都会加载驱动和创建连接对象 关闭连接
创建连接对象和关闭连接其实是非常耗内存的

而数据库连接池中的连接可以频繁使用 连接是提前创建好放在连接池的

我们可以根据需要连接的数量提前设置好一个时间段的连接对象 以适应客户端的需求

3、数据库连接池怎么用
  1. 先上jar包
  2. 设置druid.properties

    注意连接的名字是提前设置好的
  3. 设置JDBCutil文件


    注意要测试是否成功
过滤器 1、什么是过滤器

对目标资源的请求和响应进行过滤和拦截

例如::登录验证,字符编码处理,敏感字符过滤等
共性特点:过滤的是每一次的请求和响应,意味着每一次的请求和响应一定要先走过滤器!

2、过滤器的作用

过滤信息处理敏感信息 ,编码处理,登录过滤等

3、过滤器的使用

javaWeb三大组件:servlet (应用程序) , filter (过滤器), listener(监听器)

  1. 实现Filter接口
  2. 重写方法
  3. 在doFilter里面配置访问拦截路劲

注解配置

web.xml配置

4、问题
  1. 小心web.xml的配置错误
  2. 过滤器的执行流程
    请求和响应后都会执行过滤器
  3. 生命周期
    和servlet生命周期一样
    init():初始化
    doFilter():放行方法
    destroy():销毁方法 当服务器正常关闭时,执行。
  4. 过滤器配置
    路劲配置
    具体资源路劲 : /index.jsp只有访问index.jsp资源时,过滤器才会被执行
@WebFilter( value = "/index.jsp")
	拦截目录: /aaa
public class MyListener implements ServletContextListener,ServletContextAttributeListener {
    //监听ServletContext对象的销毁
    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        System.out.println("ServletContexet被销毁了");
    }
    // 监听Servletcontext对象的创建
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("创建了ServletContext");
    }
    
    @Override
    public void attributeAdded(ServletContextAttributeEvent scae) {
        System.out.println("ServletContext新增");
        
    }
    
    @Override
    public void attributeRemoved(ServletContextAttributeEvent scae) {
        System.out.println("ServletContext删除");
    }

    @Override
    public void attributeReplaced(ServletContextAttributeEvent scae) {
        System.out.println("ServletContext修改");
    }
}

Session监听

public class MySessionListener implements HttpSessionAttributeListener,HttpSessionListener {
    
    @Override
    public void attributeAdded(HttpSessionBindingEvent se) {
        System.out.println("session对象增加");
    }

    @Override
    public void attributeRemoved(HttpSessionBindingEvent se) {
        System.out.println("session对象删除");
    }

    @Override
    public void attributeReplaced(HttpSessionBindingEvent se) {
        System.out.println("session对象修改");
    }


    @Override//对象的创建
    public void sessionCreated(HttpSessionEvent se) {
        System.out.println("session对象创建");
    }

    @Override//对象的销毁
    public void sessionDestroyed(HttpSessionEvent se) {
        System.out.println("session对象的销毁");
    }
}
总结

连接池 为了方便数据使用
过滤器 为了过滤交互的信息
监听器 监听信息内容

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/279031.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号