当前位置: 代码迷 >> 综合 >> 12-数据库连接池 servlet3.0
  详细解决方案

12-数据库连接池 servlet3.0

热度:63   发布时间:2024-02-25 16:27:41.0

数据库连接池 & servlet3.0

1.数据库连接池

1.1 数据库连接池

  • 连接池

连接池是在内存中预设好一定数量的连接对象,以备用户在进行数据库操作时直接使用

  • 性能

数据库连接的建立、断开均由管理池统一管理

  • 连接池技术与传统数据库连接的比较

数据库操作性能得到提升

通过连接池管理数据库的连接与释放、提高了系统资源的使用效率。

在这里插入图片描述

1.2 Druid

  • Druid是阿里巴巴开源平台上一个数据库连接池实现

  • Druid是Java语言中最好的数据库连接池

  • Druid能够提供强大的监控和扩展功能

  • Druid可以由不同类型的节点,组成一个集群

1.2.1 Druid下载
  • druid-x.x.x.jar 项目中导入Jar包

Jar包下载地址:

http://repo1.maven.org/maven2/com/alibaba/druid/1.1.10/druid-1.1.10.jar

源码下载地址:

http://repo1.maven.org/maven2/com/alibaba/druid/1.1.10/druid-1.1.10-sources.jar

1.2.2 Druid对象和设置
?	创建对象配置
DruidDataSource druidDataSource = new DruidDataSource();
druidDataSource.setDriverClassName("com.mysql.jdbc.Driver");//驱动名
druidDataSource.setUrl("jdbc:mysql://192.168.2.2:3306/sqltest");//数据库地址
druidDataSource.setUsername("root");//用户名
druidDataSource.setPassword("root");//密码
//以下为非必填项,不设置也有默认值
druidDataSource.setMinIdle(1);//最小连接池数量 可设置最大值8
druidDataSource.setInitialSize(1);//初始化时建立物理连接的个数
druidDataSource.setMaxActive(10);//最大连接池数量
druidDataSource.setMaxWait(10000);//获得连接最大等待时间 单位毫秒
druidDataSource.setMinEvictableIdleTimeMillis(300000);// 配置一个连接在池中最小生存的时间,单位是毫秒
?	获得连接
Connection conn = druidDataSource.getConnection();
获得连接之后的步骤,与JDBC一致
?	归还连接
Conn.close();
关闭连接并非真的关掉连接,而是把连接返回给数据库连接池,等待下一次调用?	连接池关闭
druidDataSource.close();
该方法是关闭数据库连接池,执行完之后,不可以再从连接池中获得连接

2.Servlet3.0介绍

  • 使用nio(非阻塞型io)处理 效率相对提高

    –8.5及以上版本默认使用nio处理

  • 使用注解进行配置

2.1 Servlet3.0注解

  • Servlet3.0中可以使用注解(annotation)替代web.xml进行配置;

  • 常用的注解有三种类型:

@WebServlet:对Servlet进行配置

@WebServlet:对Servlet进行配置示例,包括的属性如下,这些属性除了vlaue或urlPatterns是必选的,其他的都是可选的:
1)name:等价于web.xml配置文件中的 <servlet-name>。如果没有指定, Servlet 的<servlet-name>取值为类的全限定名,比如XXX.XXX.XXX。
2)urlPatterns:等价于web.xml配置文件中的 <url-pattern> 标签
3)value:等价于 urlPatterns 属性。
4)loadOnStartup:等价于web.xml配置文件中的<load-on-startup> 标签
5)initParams :等价于web.xml配置文件中的<init-param> 标签,他的参数是@WebInitParam注解的集合(此注解之后介绍)
6)asyncSupported:等价于web.xml配置文件中的<async-supported> 标签
7)description:等价于web.xml配置文件中的<description> 标签
8)displayName:等价于web.xml配置文件中的 <display-name> 标签
注解配置:
@WebServlet(urlPatterns = {
    "/demo"}, 
asyncSupported = true, 
loadOnStartup = -1, 
name = "DemoServlet", 
displayName = "DemoServlet ", 
initParams = {
    
@WebInitParam(name = "username",value = "etc") 
} ) 
配置文件配置:
<servlet><display-name> DemoServlet </display-name><servlet-name>DemoServlet</servlet-name>
<servlet-class>com.sm.SimpleServlet</servlet-class><load-on-startup>-1</load-on-startup><async-supported>true</async-supported><init-param><param-name>username</param-name><param-value>etc</param-value></init-param>
</servlet>
<servlet-mapping><servlet-name> DemoServlet </servlet-name><url-pattern>/demo</url-pattern>
</servlet-mapping>

@WebFilter:配置过滤器

@WebFilter:配置过滤器此注解为声明一个过滤器,主要属性有以下几个。
在这些属性当中value、urlPatterns、servletNames 三个属性至少要包含其中的一个,并且 value 和 urlPatterns 属性只能有一个,如果两个同时配置,一般情况下value取值将会被忽略。其他的都是可选属性。
filterName:等价于web.xml配置文件中的 <filter-name>标签
value:该属性等价于 urlPatterns 属性
urlPatterns:等价于web.xml配置文件中的 <url-pattern> 标签
servletNames:指定该过滤器将应用的 范围。如果是注解的话取值是 @WebServlet 中的 name 属性的取值,如果servlet这 web.xml 中配置的话,取值是 <servlet-name> 的取值
dispatcherTypes:过滤器的转发模式。取值包括:
ASYNC(异步)、ERROR(错误)、FORWARD(请求转发)、INCLUDE(包含)、REQUEST(请求)。
initParams:等价于web.xml配置文件中的<init-param> 标签
asyncSupported:等价于web.xml配置文件中的<async-supported> 标签
description:等价于web.xml配置文件中的<description> 标签
displayName:等价于web.xml配置文件中的<display-name> 标签

@WebListener :配置监听器

@WebListener:配置监听器,此注解是用来声明监听器,它主要的属性只有一个:
value:这个属性表示的是监听器的描述信息,整个配置可以简写成@WebListener("XXX")