IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> @RequestController—数据源与连接池 -> 正文阅读

[Java知识库]@RequestController—数据源与连接池



一、@RequestController————类

  • 继承自@Controller
  • 向页面发送JSON格式信息
  • 相当于@Controller+@ResponseBody————在页面显示数据
    在这里插入图片描述

@Controller————类

  • 跳转到页面
    在这里插入图片描述

@ResponseBody————类/方法

  • 返回json数据
  • 用于异步获取数据——在页面显示数据
    在这里插入图片描述

@RequestMapping————方法(必需!!)

    • 访问路径:/h1

二、数据源与连接池

JNDI

  • 概念:Java Naming and Directory Interface————JAVA命名和目录接口
  • 作用:为JAVA应用程序提供命名和目录访问服务的API接口。
  • 详解:将Java对象以某个名称的形式binding绑定到一个容器环境Context中,以后调用容器环境的lookup查找方法可以查找出某个名称所绑定的Java对象。
  • 在真实的项目应用中,通常是由系统程序或框架程序先将资源对象绑定到JNDI环境中,以后在该系统或框架中运行的模块程序就可以从JNDI环境中查找这些资源对象了。
  • 优点:这种方式极大的增强了系统的可维护性
  • 容器环境Context也是一个Java对象,它也可以通过一个名称绑定到另一个容器环境Context中。这就形成了一种父子级联关系,多个Context对象最终可以级联成一种树状结构,树中的每个Context对象中都可以绑定若干个Java对象。

Tomcat服务器在启动时可以创建一个连接到某种数据库系统的数据源DataSource对象,并将该数据源对象绑定到JNDI环境中,以后在这个Tomcat服务器中运行的Servlet和JSP程序就可以从JNDI环境中查询出这个数据源对象进行使用。

数据源DataSource

  • 概念:连接数据库,创建Connection连接对象。
  • 是数据库对编程提供的一个接口,每个数据源对应一个数据库。
  • 内容:存储了所有建立数据库连接需要的信息。eg:username,pwd等

类似于通过指定文件名称可以在文件系统中找到文件一样,通过提供正确的数据源名称,能找到相应的数据库连接。算是对数据库的一个抽象映射。

连接池

  • 概念:存放数据库连接对象的一个缓冲池,需要数据连接时从缓冲池中取。
  • 作用:管理数据源
  • 操作过程:当一个线程需要用JDBC对一个数据库操作时,将从池中请求一个连接。当这个连接使用完毕后,将返回到连接池中,等待为其他的线程服务。

连接池分类

  • DataSource用来取代DriverManager来获取Connection,获取速度快,同时可以大幅度提高数据库访问速度。
1. DBCP
  • Tomcat内置的连接池(Tomcat Dbcp)
  • apache上的一个 java连接池项目,也是 tomcat使用的连接池组件。单独使用dbcp需要3个包:common-dbcp.jar,common-pool.jar,common-collections.jar
  • 特点:DBCP没有自动的去回收空闲连接的功能。

DBCP配置文件——dbcp.properties

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test?rewriteBatchedStatements=true&useServerPrepStmts=false
username=root
password=abc123
2. C3P0
  • C3P0是一个开源的jdbc连接池,它实现了数据源和JNDI绑定。
  • C3P0是异步操作的,缓慢的jdbc操作通过帮助进程完成。扩展这些操作可以有效的提升性能。目前使用它的开源项目有Hibernate,Spring等。
  • 特点:C3P0有自动回收空闲连接功能。

获取方式

//使用C3P0数据库连接池的配置文件方式,获取数据库的连接:推荐
private static DataSource cpds = new ComboPooledDataSource("helloc3p0");
public static Connection getConnection2() throws SQLException{
	Connection conn = cpds.getConnection();
	return conn;
}

c3p0配置文件——c3p0.properties

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
	<named-config name="helloc3p0">
		<!-- 获取连接的4个基本信息 -->
		<property name="user">root</property>
		<property name="password">abc123</property>
		<property name="jdbcUrl">jdbc:mysql:///test</property>
		<property name="driverClass">com.mysql.jdbc.Driver</property>
		
		<!-- 涉及到数据库连接池的管理的相关属性的设置 -->
		<!-- 若数据库中连接数不足时, 一次向数据库服务器申请多少个连接 -->
		<property name="acquireIncrement">5</property>
		<!-- 初始化数据库连接池时连接的数量 -->
		<property name="initialPoolSize">5</property>
		<!-- 数据库连接池中的最小的数据库连接数 -->
		<property name="minPoolSize">5</property>
		<!-- 数据库连接池中的最大的数据库连接数 -->
		<property name="maxPoolSize">10</property>
		<!-- C3P0 数据库连接池可以维护的 Statement 的个数 -->
		<property name="maxStatements">20</property>
		<!-- 每个连接同时可以使用的 Statement 对象的个数 -->
		<property name="maxStatementsPerConnection">5</property>

	</named-config>
</c3p0-config>
3.Druid
  • Druid是一个开源项目,源码托管在github上。
  • 阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0、DBCP、PROXOOL等DB池的优点,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况,可以说是针对监控而生的DB连接池,只要在web.xml中或spring的配置文件中加以配置即可。
  • 据说是目前最好的连接池

Druid配置文件——druid.properties

url=jdbc:mysql://localhost:3306/test?rewriteBatchedStatements=true
username=root
password=123456
driverClassName=com.mysql.jdbc.Driver

initialSize=10
maxActive=20
maxWait=1000
filters=wall

总结

数据源连接数据库,创建连接对象。

连接池是用来管理池中的连接对象

java.sql.DataSource接口负责建立与数据库的连接

连接池就像数据源的代理人,我们需要连接(connection)直接找连接池要,不用的连接也是直接还给连接池。

数据源:水管
连接池:水站
数据库:水站源头
JNDI:水站门牌

  • 获取数据时,通过找到JNDI,找到连接池,再找到连接对象和对应的数据库。
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-07-28 07:36:16  更:2021-07-28 07:36:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/1 20:48:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码