数据源详解

Tomcat与Java_Web开发技术详解3.pdf 本书详细介绍了Tomcat 5 版本上开发 Java Web 应用的各种技术。主要包括:Tomcat和Java Web开发的基础知识,Java Web开发的高级技术,Tomcat与当前其他通用软件的集成,以及Tomcat的各种高级功能。 书中内容主要注重理论与实践相结合,列举了大量具有典型性和使用价值的Web应用实例,并提供了详细的开发和部署步骤。 立即下载

数据源详解


  一、数据源简介:
************************************************************************************
在java语言中,datasource对象就是一个代表数据源实体的对象。一个数据源就是一个用来存储数据的工具,它可以是复杂的大型企业级数据库,也可以是简单得只有行和列的文件。数据源可以位于在服务器端,也可以位于客服端。

应用程序通过一个连接来访问数据源,那么一个datasource对象就是用于提供连接数据源的工具。datasource接口提供了两个方法用于建立和数据源的连接
使用datasource对象建立和数据库的连接比起使用drivermanager接口更加高效,虽然两者的使用范围都很相似,并且都提供了方法用于建立和数据库的连接,设置连接的最大超时时间,获取流、登录。
  
但两者之间的区别更加明显。和drivermanager不同,一个datasource对象能够识别和描述它所代表的数据源的属性,而且datasource对象的工作和jndi(javatm naming and directory interfaceti)具有密切的关系,datasource的建立、发布、独立于应用程序的管理都依靠jndi技术。
   
在jdbc2.0或jdbc3.0中,所有的数据库驱动程序提供商必须提供一个实现了datasource接口的类,要使用数据源必须首先在jndi中注册该数据源对象。
如果在jndi中注册了数据源对象,将会比起使用drivermanager来具有两个方面的优势:
首先程序不需要像使用drivermanager一样对加载的数据库驱动程序信息进行硬编码,程序员可以选择先在jndi中注册这个数据源对象,然后在程序中使用一个逻辑名称来引用它,jndi会自动根据你给出的名称找到与这个名称绑定的datasource对象。然后就可以使用这个datasource对象来建立和具体数据库的连接了。

其次,使用实现了datasource接口的类所具有的第二个优势体现在连接池和分布式事务上。连接池通过对连接的复用而不是新建一个物理连接来显著地提高程序的效率。从而适用于任务繁忙、负担繁重的企业级分布式事务。
*************************************************************************************

二、jndi简介:
*************************************************************************************
jndi是用于向java程序提供目录和命名功能的api。它被设计成独立于特定的目录服务,所以各种各样的目录都可以通过相同的方式进行访问。

可以简单地把jndi理解为一种将对象和名字绑定的技术,对象工厂负责生产出对象,这些对象都和惟一的名字绑定。外部程序可以通过名字来获取对某个对象的引用。

在intranets(企业内部网)和internates(互联网)中目录服务(directory service)扮演了一个非常重要的角色,它能够在众多的用户、机器、网络、服务、应用程序中访问各种各样的信息。目录服务提供了一系列的命名措施,用人类可以理解的命名方式来刻画各种各样的实体之间的关系

一个企业式计算环境(computing environment)通常是由若干代表不同部分的命名复合而成。比如在一个企业级环境中dns(domain name system)通常被当成顶层的命名方案(top-level namein facility)区分不同的部门或组织。而这些部门或组织自己又可以使用诸如ladp或nds的目录服务

从用户的角度来看,这些都是由不同的命名方案构成的复合名称。url就是一个很典型的例子,它由多个命名方案构成。使用目录服务的应用程序必须支持这种复合构成方式

使用目录服务api的java开发人员获得的好处不仅在于api独立于特定的目录或命名服务,而且可以通过多层的命名方案无缝访问(seamless acess)目录对象。实际上,任何的应用程序都可以将自身的对象和特定的命名绑定起来,这种功能可以使到任何的java程序查找和获取任何类型的对象

终端用户可以方便地使用逻辑名称从而轻易地在网络上查找和识别各种不同的对象,目录服务的开发人员可以使用api方便地在不同的客服端之间切换而不需要作任何更改
*************************************************************************************


三、数据源和连接池的关系:
*************************************************************************************
jdbc2.0提供了javax.sql.datasource接口,它负责建立与数据库的连接,在应用程序访问数据库时不需要编写连接数据库的代码,可以直接从数据源获得数据库连接。
 
在datasource中事先建立了多个数据库连接,这些数据库连接保存在连接池(connect pool)中。java程序访问数据库时,只需要从连接池中取出空闲状态的数据库连接;当程序访问数据库结束,再将数据库连接放回连接池。
*************************************************************************************


四、数据源和jndi的关系:
*************************************************************************************
datasource对象是由tomcat提供的,因此不能在程序中采用创建一个实例的方式来生产datasource对象,而需要采用java的另一个技术jndi,来获得datasource对象的引用。

tomcat把datasource作为一种可以配置的jndi资源来处理。生成datasource对象的工厂为org.apache.commons.dbcp.basicdatasourcefactory。

在javax.naming包中提供了context接口,该接口提供了将对象和名字绑定,以及通过名字检索对象的方法。context中的主要方法有:
bind(string name,object object):将对象与一个名字绑定
lookup(string name):返回与指定的名字绑定的对象
*************************************************************************************


五、tomcat中数据源的配置:
*************************************************************************************
数据源的配置涉及修改server.xml和web.xml,在server.xml中加入定义数据源的元素<resource>,在web.xml加入<resource-ref>元素,声明该web应用所引用的数据


a.在server.xml中加入<resource>元素:<resource>元素用来定义jndi resource。
  
属性     描述
name     指定resource的jndi名字
auth     指定管理resource的manager,它有两个可选值:container、application
type     指定resource所属的java类名

<resource name = "jdbc/bookdb" 
auth = "container" 
         type = "javax.sql.datasource" />

b.在<resource>元素中加入<resourceparams>元素:<resourceparams>元素用来指定各种参数值
  
属性     描述
factory     指定生成的dataresource的factory类名
maxactive     指定数据库连接池中处于活动状态的最大连接数目,0表示不受限制
maxidle     指定数据库连接池中处于空闲状态的最大连接数目,0表示不受限制
maxwait     指定连接池中连接处于空闲状态的最长时间,超过会抛出异常,-1表示无限
username     指定连接数据库的用户名
password     指定连接数据库的口令
driverclassname     指定连接数据库的jdbc驱动程序
url              指定连接数据库的url

    <resourceparams name = "jdbc/bookdb">

     <parameter>
        <name>factory</name>
        <value>org.apache.commons.dbcp.basicdatasourcefactory</value>
     </parameter>

     <parameter>
        <name>maxactive</name>
        <value>100</value>
     </parameter>

     <parameter>
        <name>maxidle</name>
        <value>30</value>
     </parameter>

     <parameter>
        <name>maxwait</name>
        <value>10000</value>
     </parameter>

     <parameter>
        <name>username</name>
        <value>user</value>
     </parameter>

     <parameter>
        <name>password</name>
        <value>1234</value>
     </parameter> 

     <parameter>
        <name>driverclassname</name>
        <value>com.mysql.jdbc.driver</value>
     </parameter>

     <parameter>
        <name>url</name>
        <value>jdbc:mysql//localhost:3306/bookdb?autoreconnect=true</value>
     </parameter> 

</resourceparams>

c.在web.xml中加入<resource-ref>元素:<resource-ref>元素表示在web应用中引用jndi资源
  
属性                   描述
description     对所引用的资源的说明
res-ref-name     指定所引用资源的jndi名字,与<resource>元素中的name属性对应
res-type              指定所引用资源的类名字,与<resource>元素中的type属性对应
res-auth              指定所引用资源的manager,与<resource>元素中的auth属性对应

*************************************************************************************


六、在web应用中使用数据源:
*************************************************************************************
javax.naming.context提供了查找jndi resource的接口,可以通过三个步骤来使用数据源对象:

a.获得对数据源的引用:
    context ctx = new initalcontext();
datasource ds = (datasource)ctx.lookup("java:comp/env/jdbc/bookdb");

     b.获得数据库连接对象:
         connection con = ds.getconnection();
  
     c.返回数据库连接到连接池:
         con.close();



在连接池中使用close()方法和在非连接池中使用close()方法的区别是:前者仅仅是把数据库连接对象返回到数据库连接池中,是连接对象又恢复到空闲状态,而非关闭数据库连接,而后者将直接关闭和数据库的连接
*************************************************************************************


七、发布使用数据源的web应用:
*************************************************************************************
  如果直接同jdbc访问数据库,可以把jdbc驱动程序拷贝到web应用的web-inf/lib目录或者tomcat安装目录下的common/lib目录下。
  
  如果通过数据源访问数据库,由于数据源由servlet容器创建并维护,所以必须把jdbc驱动程序拷贝到tomcat安装目录下的common/lib目录下,确保servlet容器能够访问驱动程序。
*************************************************************************************
Tomcat与Java Web开发技术详解(第2版)及其源码 《Tomcat与Java Web开发技术详解》语言深入浅出、通俗易懂,无论对于Java Web开发的新手还是行家来说,《Tomcat与Java Web开发技术详解》都是精通Tomcat和开发Java Web应用的必备的实用手册。《Tomcat与Java Web开发技术详解》还可作为高校相关专业学生学习Java Web开发的参考书,以及企业Java Web培训教材,也可作为SUN公司的SCWCD(SUN Certified Web Component Developer)认证的辅导教材。 立即下载

相关推荐

Tomcat与Java.Web开发技术详解(PDF)

本书详细介绍了在最新Tomcat 5版本上开发Java Web应用的各种技术。主要内容包括:Tomcat和Java Web开发的基础知识,Java Web开发的高级技术,Tomcat与当前其他通用软件的集成,以及Tomcat的各种高级功能。

java web 孙卫琴_Tomcat与Java Web开发技术详解(第2版) (孙卫琴) pdf

资源名称:Tomcat与Java Web开发技术详解(第2版) (孙卫琴) pdf第1篇 java web开发技术详解第1章 web运作原理探析第2章 tomcat简介第3章 第一个javaweb应用第4章 servlet技术(上)第5章 servlet技术(下)第6章 jsp技术第7章 bookstore应用简介第8章 访问数据库第9章 http会话的使用与管理第10章 jsp访问javabea...

weixin_33309067的博客 1505

tomcat与java.web开发技术详解(3)

本书详细介绍了在最新Tomcat 5版本上开发Java Web应用的各种技术。主要内容包括:Tomcat和Java Web开发的基础知识,Java Web开发的高级技术,Tomcat与当前其他通用软件的集成,以及Tomcat的各种高级功能。

tomcat中通过JNDI数据源配置使用--时间沙漏

tomcat中通过JNDI数据源配置使用 [ 2007-1-3 10:11:00 | By: Cxiang ] 一、数据源简介: *********************************************************************************** 在Java语言中,DataSource对象就是一个代表数据源实体的对象。一个数据源就是一个用来

赵晓雷的专栏 1021

版电力系统故障录波_故障录波识图与典型故障波形分析

1、设置故障录波的目的故障录波装置是对电力系统运行状况进行监控的一种自动化设备。系统正常运行时,录波装置不启动录波,当系统发生故障时,通过启动录波装置迅速启动录波器录波,直接记录反应故障装置安装处系统故障的电气量。2、故障录波的作用(1)正确评价继电保护和自动装置的工作。(2)正确分析事故的原因并研究防止对侧。(3)发现继电保护和自动装置缺陷。(4)发现一次设备缺陷,及时消除隐患。(5)帮助寻找故...

weixin_42495661的博客 1万+

深度学习之常用算子介绍

打开 onnx 模型图,可以看到它是一个有向无环图。除了 Input、Output ,其他都是算子(是操作,而不是节点)在ONNX(Open Neural Network Exchange)模型中,除了输入和输出,其他都是算子(Operations)。算子是表示神经网络模型中的不同操作或层的元素。一个ONNX模型由一系列算子组成,通过连接这些算子来定义模型的计算流程。

ueke1的博客 8461

MySQL---数据库从入门走向大神系列(十三)-BasicDataSource创建DataSource(DBCP连接池配置)...

DBCP(DataBase connection pool),数据库连接池。是 apache 上的一个 java 连接池项目,也是 tomcat 使用的连接池组件。单独使用dbcp需要2个包:commons-dbcp.jar,commons-pool.jar由于建立数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先同数据库建立一些...

weixin_33737774的博客 929

Unity分包下载实战:AssetBundle+CDN+热更新全链路指南

分包下载是移动应用资源管理的核心技术,本质是将大体积安装包拆解为按需加载的独立资源单元,以解决用户安装意愿低、首屏启动慢、热更新不可控等关键问题。其底层依赖资源打包机制(如Unity AssetBundle)、全球分发网络(CDN)与安全热更新策略三者协同。AssetBundle提供资源隔离与依赖管理能力,CDN保障低延迟高可用下载,而热更新策略则决定版本控制、灰度发布与异常恢复的工程鲁棒性。该方案广泛应用于中重度游戏、大型工具类App及需要频繁内容迭代的商业项目,直接提升次日留存、过审成功率与用户在线时长

weixin_29762151的博客 357

Tomcat 配置数据源

在JDBC2.0中,我们可以采用接口javax.sql.DataSource,利用直接从数据源中获得数据库的连接的方式编写连接数据库代码。 Dataource接口中事先建立了多个数据库连接,这些数据库连接保持在数据库连接池中。当程序访问数据库时,只需要从数据库连接池从取出空闲的连接,访问数据库结束,在将这些连接归还给连接池即可。 DataSource对象由容器(Tomcat)提供,不能使用创建实例的方式来生成DataSource对象,要采用JAVA的JNDI(Java Nameing and Directo

哈 2442

用树莓派Pico低成本更新USB-C PD控制器固件实战指南

固件更新是嵌入式系统开发与维护中的核心环节,它直接决定了硬件设备的功能、性能与兼容性。其原理通常是通过特定的通信接口(如SWD、JTAG、UART或USB)与设备内部的Bootloader建立连接,将新的程序代码安全写入非易失性存储器。在USB Power Delivery(PD)和Type-C生态中,固件更新技术尤为重要,它能修复协议握手Bug、适配新设备并提升供电策略的灵活性。本文聚焦于一个典型的工程实践场景:如何利用广泛普及且成本极低的树莓派Pico开发板,作为USB-C协议到I²C协议的转换桥,实现

weixin_27869497的博客 462

深入解析LVDS电平标准在LCD屏接口设计中的关键作用

本文深入解析了LVDS电平标准在LCD屏接口设计中的核心作用。文章不仅阐释了LVDS低电压差分信号的工作原理、关键电气参数及抗噪优势,还详细对比了VESA与JEIDA两种主流数据格式,并提供了从PCB布局布线到信号调试的实战避坑指南,是确保高速、稳定显示的关键技术参考。

weixin_28419039的博客 338

Tomcat实现数据源相关配置加密

tomcat 配置文件数据库密码加密

初级萌新小白 2653

鼎捷T100二次开发实战:如何给开窗功能加上权限锁(附完整代码)

本文详细解析了鼎捷T100二次开发中开窗功能权限锁的实现方法,提供了两种技术方案:开窗程序重构法和动态WHERE条件注入法,并附上完整代码示例。通过真实案例,帮助开发者解决数据权限细粒度控制的难题,提升ERP系统的安全性和实用性。

weixin_28454475的博客 444

spring数据源配置详解

本文转载:http://www.yybean.com/spring-data-source-configuration-xiangjie spring数据源配置一般分 spring容器自带连接池、项目中创建连接池、服务器创建连接池三种 一、spring容器自带连接池   Spring本身也提供了一个简单的数据源实现类DriverManagerDataSource ,它位于org.spring

lolashe 1195

YOLOv8-Pose 姿态识别 RK3588 实战:从模型训练到 RKNN 部署,精度与推理速度双提升

本教程从YOLOv8-pose模型的姿态识别训练,到RK3588的边缘量化部署,为你打造了一套“高精度+高实时性+低成本”的人体姿态分析解决方案。无论是健身动作纠正、智能安防行为检测,还是工业人员姿态监控,这套技术都能直接复用——你只需替换数据集与业务逻辑,即可快速落地专属的边缘AI姿态识别系统。如果你在实践中遇到任何卡点,欢迎随时交流。记住,人体姿态识别的价值在于“关键点准、推理快、部署易”,而这三者的平衡,正是你通过本教程能掌握的核心能力。

FJN110的博客 366

YOLOv11改进 | 注意力篇 | YOLOv11引入CBAM注意力机制

我们的实验表明各种模型的分类和检测性能得到了一致的改进,证明了 CBAM 的广泛适用性。简单介绍:CBAM的主要思想是通过关注重要的特征并抑制不必要的特征来增强网络的表示能力。模块首先应用通道注意力,关注"重要的"特征,然后应用空间注意力,关注这些特征的"重要位置"。到此本文的正式分享内容就结束了,在这里给大家推荐我的YOLOv11改进有效涨点专栏,本专栏目前为新开的,后期我会根据各种前沿顶会进行论文复现,也会对一些老的改进机制进行补充,如果大家觉得本文帮助到你了,订阅本专栏,关注后续更多的更新~

tsg6698的博客 2万+

SpringBoot配置数据源详解

SpringBoot配置数据源 Spring Framework 为 SQL 数据库提供了广泛的支持。从直接使用 JdbcTemplate 进行 JDBC 访问到完全的对象关系映射(object relational mapping)技术,比如 Hibernate、Mybatis。Spring Data 提供了更多级别的功能,直接从接口创建的 Repository 实现,并使用了约定从方法名生成查询。 一、JDBC操作 1、创建项目 导入相关依赖: <dependency>

qq_42583242的博客 5334

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

html数据源设置,ODBC数据源的设置详解

ODBC数据源的设置详解首先选择"开始"|"控制面板"|"系统和安全"|"管理工具"命令,打开"管理工具"窗口。在该窗口中双击"数据源(ODBC)"图标,打开"ODBC数据源管理器"对话框,如下图所示。在下图里选择"系统DSN"选项卡,然后单击"添加"按钮,弹出"创建新数据源"对话框。在"创建新数据源"对话框中的"选择您想为其安装数据源的驱动程序"列表中选择"SQL Server Native C...

weixin_34307029的博客 690

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

【Flink】Flink数据源Source详解

Source 是整个数据管道的起点,它决定了你能处理什么数据。Flink 内置了丰富的 Source,也支持自定义。这篇文章会带你全面了解 Flink 的数据源体系。

weixin_63434398的博客 1255

Java Web数据源详解

点击这里使用RSS订阅本Blog: <!-- main_sub="c1s67";more_subs="";--> Java Web数据源详解Java Web连接数据库一般有直接JDBC和数据源两种方式, 1、JDBC:在MySQL中创建数据库: drop  database if exists login; cr

小李专栏 4067

weblogic jdbc 数据源配置参数详解

现将日常运维积累的一些jdbc数据源配置参数理解总结一下,供大家参考。 这些参数对我们理解WEBLOGIC连接jdbc数据源的调优、诊断很有帮助。   JDBC 数据源配置:常规 Name Description Name 可在 WebLogic 域中标识该数据源的唯一名称。 JNDI Name ...

danielmoore的博客 4681

MyBatis数据源模块详解

本文深入分析了MyBatis连接池的设计与实现,首先介绍了MyBatis整体架构中数据源模块的基础地位,阐述了连接池的必要性及其相比传统JDBC连接方式的优势。文章详细解析了MyBatis提供的三种数据源类型(UNPOOLED、POOLED、JNDI)及其适用场景,重点剖析了数据源接口架构设计,包括DataSource接口、DataSourceFactory接口及其实现类。通过对UnpooledDataSource和PooledDataSource核心代码的分析,展示了MyBatis如何通过工厂模式创建不同

qq_41262225的博客 973

Springboot配置Druid数据源详解

配置数据源 1、添加Druid依赖 <!-- druid数据源--> <!-- https://mvnrepository.com/artifact/com.alibaba/druid --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.2.3</versi

qq_47768542的博客 1746

SpringBoot整合JDBC、整合Druid数据源详解教程

目录一、整合JDBC1. 环境准备1. 创建数据库2. 创建SpringBoot项目3. IDEA连接数据库2. 编写数据库配置信息3. 编写测试类测试4. CRUD操作数据库1. JDBCTemplate简介2. CRUD测试二、整合Druid数据源1. Druid简介2. 部分基本配置参数3. 使用Durid数据源1. 导入依赖2. 切换数据源3. 设置数据源属性4. 使添加属性生效5. 配置Druid后台监控Servlet6. 配置Druid监控过滤器filter 一、整合JDBC 1. 环境准备.

欢迎来到 Baret-H 的博客 5610
上一篇: spring mvc中的页面跳转
下一篇: [技巧]你会做Web上的用户登录功能吗?
逆乾坤
博客等级 码龄16年 30粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值