JavaWeb项目之博客系统(二)上

摘要:
它实际上是指实现驱动程序接口的实现类。JDBC连接池技术:对DriverManager进行了相应的封装和修改。连接池实际上是java中的集合,例如List、Map、Vector等。在封装之前,您只需要询问DriverManager,在封装之后,您需要询问DataSource。

1.JDBC技术

来源:http://zengyiqiang2006.blog.163.com/blog/static/102868226201052673216733/

JDBC技术(访问数据库的一种技术)

核心主要是使用DriverManager类操作和管理实现Driver接口的实现类, 程序员只需要向这个驱动管理器类要连接对象就可以了

( Connection    con=DriverManager.getConnection(RUL) )

JDBC驱动程序(实现Driver接口的实现类名字)

通常我们所说的“使用哪一个JDBC驱动程序/驱动类?”实际上是指使用哪一个实现Driver接口的实现类。如是使用Mysql数据库厂商提供的实现类(com.mysql.jdbc.Driver)还是使用 SQL Server 2000 数据库厂商提供的实现类(om.microsoft.jdbc.sqlserver.SQLServerDriver);是使用第三方的实现类还是使用java自身提供的实现类(sun.jdbc.odbc.JdbcOdbcDriver )但是无论使用哪一家驱动程序都要知道相应的url。

JDBC连接池 技术 :对DriverManager进行了封装和相应的修改,

连接池其实就是java中的集合如List、Map、Vector等。

连接池技术的核心是反复使用连接池(集合)中的多个Connection对象,其底层实现还是基于JDBC技术,即DriverManager类操作和管理实现Driver接口的实现类

总结:

一: 如何创建多个连接对象?

参考源代码可知 只需向DriverManager多要几次即可 ,具体可以使用循环语句

二:如何获取连接池中的Connection对象呢?

未封装前只需向DriverManager要就可以了,封装后,要向DataSource来要。

三:Java中的DriverManager对象 作用主要是获取实现Driver接口的实现类的连接对象

如: Connection    con=DriverManager.getConnection(RUL) )

四:Java中的DataSource对象 有点像未封装前的DriverManager。它的作用主要是获取第三方组件(连接池)中的连接对象

如: Context context=new InitialContext() ; //JNDI部分的知识

DataSource ds=(DataSource)context.lookup( “ java:/comp/env/jdbc/mysqlds ” );

Connection con=ds.getConnection();

五:连接池 :实际上就是一个集合,该集合内保存了一定数量的连接对象,所以他管理着整个数据库的连接

六:数据源: 实际上就是Java中的DataSource对象,主要作用是管理连接池和获取第三方组件(连接池)中的连接对象,有点像   DriverManager,换句话说,各个连接池的管理工作都是由一个叫数据源的对象来操控着,java中DataSource来表示,xml文件中用 <data-source> 这个标签来表示。

七:获取Connection对象的两种方式 ,

一种是传统的向DriverManager要, con=DriverManager.getConnection()

另一种是向DataSource要, con =( (DataSource)new  InitialContext().lookup( “ java:/comp/env/jdbc/ TestDB ” ) ).getConnection() ;

八:JNDI

Context context=new InitialContext() ; // JNDI部分的知识

DataSource ds=(DataSource)context.lookup( “ java:/comp/env/jdbc/mysqlds ” ) ;//利用

JNDI的lookup方法来查找(tomcat中)已经存在的DataSource对象 。 java:/comp/env

这是固定的写法

Connection con=ds.getConnection() ;//只要有了DataSource对象,则就可以获得Connction对象了

2.Tomcat 6.0 配置数据库连接池

来源:http://zengyiqiang2006.blog.163.com/blog/static/10286822620105267244342/

这里是以Mysql数据库为例,其他的数据库都是一样的配置 
首先将mysql驱动拷贝到tomcat下的lib目录下。C:\Program Files\Apache Software Foundation\Tomcat 6.0\lib 
然后修改C:\Program Files\Apache Software Foundation\Tomcat 6.0\conf下的context.xml文件,在里面添加如下代码: 
在Context标签里添加一个属性 reloadable="true" 

<WatchedResource>WEB-INF/web.xml</WatchedResource><!--这个有就不需要添加--> 
<Resource name="jdbc/mysqlds" auth="Container" type="javax.sql.DataSource" 
    maxActive="100" maxIdle="30" maxWait="10000" username="root" password="admin" driverClassName="com.mysql.jdbc.Driver"        url="jdbc:mysql://localhost:3306/databasename"/> 

下面解释一下各属性的含义: 
name             表示指定的jndi名称 (这个名字这里可以随便写) 
auth             表示认证方式,一般为Container 
type             表示数据源床型,使用标准的javax.sql.DataSource 
maxActive        表示连接池当中最大的数据库连接 
maxIdle          表示最大的空闲连接数 
maxWait          当池的数据库连接已经被占用的时候,最大等待时间 
logAbandoned     表示被丢弃的数据库连接是否做记录,以便跟踪 
username         表示数据库用户名 
password         表示数据库用户的密码 
driverClassName  表示JDBC DRIVER 
url              表示数据库URL地址

例子:

<Context>

<WatchedResource>WEB-INF/web.xml</WatchedResource>

<!—mysql数据源配置-->

<Resource

name="jdbc/mysqlds"

auth="Container"

type="javax.sql.DataSource"

maxActive="100"

maxIdel="30"

maxWait="10000"

username="root"

password="5982285"

driverClassName="com.mysql.jdbc.Driver"

url="jdbc:mysql://localhost/myblog"

/>

<!—oracle数据源配置-->

<Resource

name="jdbc/oracleds"

auth="Container"

type="javax.sql.DataSource"

maxActive="100"

maxIdel="30"

maxWait="10000"

username="scott"

password="tiger"

driverClassName="oracle.jdbc.driver.OracleDriver"

url="jdbc:oracle:thin:@localhost:1521:sky"

/>

</Context>

属性说明:name数据源名称,通常取jdbc/XXX的格式

auth: Container容器

type: javax.sql.DataSource 注意是javax不是java

username数据库用户名

password数据库用户密码

maxIdle最大空闲数,数据库连接的最大空闲时间。超过空闲时间,数据库连

接将被标记为不可用,然后被释放。设为0表示无限制。

                    maxActive连接池的最大数据库连接数。设为0表示无限制。

maxWait 最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示

无限制。

driveClassName:  数据库完整的驱动类全称

url数据库的链接

网上很多人都说需要在web.xml文件中再配置 其实补配置也是可以的

配置了<WatchedResource>WEB-INF/web.xml</WatchedResource> 之后 就无需在web.xml文件中配置了

或者是在context.xml中配置的而不是server.xml配置 因此不需要在web.xml中配置 没有测试

3.HTML <label> 标签的 for 属性

for 属性规定 label 与哪个表单元素绑定。

标记通常以下面两种方式中的一种来和表单控件相联系:将表单控件作为标记标签的内容,这样的就是隐式形式,或者为 <label> 标签下的 for 属性命名一个目标表单 id,这样就是显式形式。

例如,在 XHTML 中:

显式的联系:
<label for="SSN">Social Security Number:</label>
<input type="text" name="SocSecNum" id="SSn" />

隐式的联系:
<label>Date of Birth: <input type="text" name="DofB" /></label>

第一个标记是以显式形式将文本 "Social Security Number:" 和表单的社会安全号码的文本输入控件 ("SocSecNum") 联系起来,它的 for 属性的值和控件的 id 一样,都是 SSN。第二个标记 ("Date of Birth:") 不需要 for 属性,它的相关控件也不需要 id 属性,它们是通过在 <label> 标签中放入 <input> 标签来隐式地连接起来的。

实例

带有两个输入字段和相关标记的简单 HTML 表单:

<form>
  <label for="male">Male</label>
  <input type="radio" name="sex" id="male" />
  <br />
  <label for="female">Female</label>
  <input type="radio" name="sex" id="female" />
</form>

4.一个问题:The reference to entity "password" must end with the ';' delimiter.的原因跟解决方法 

This error is caused by a rogue '&' in database_properties.xml. This xml tag...
<param name="url" value="jdbc:mysql://129.12.16.16/jwnl?user=myusername&password=mypassword"/>

should actually read...
<param name="url" value="jdbc:mysql://129.12.16.16/jwnl?user=myusername&amp;password=mypassword"/>

This is because the sax xml parsing libraries used by jwnl are generic xml libraries and therefore expect an escaped

charcter sequence.

测试成功

测试页面

图片

5.又一个问题:Name jdbc is not bound in this Context

这个问题我查找了好久,一直没有效果,我的context.xml 和 Mysql驱动程序都是没有问题的,但是就是不停地报这个错!最后我很无语的发现,错误是自己写作了一个单词!

ds=(DataSource)context.lookup("java:comp/env/jdbc/mysqlds");//注意:第一个单词是java,而不是jdbc!

网上有人解释说还要在web.xml中添加以下内容:

<resource-ref>

<description>blog</description>

<res-ref-name>jdbc/mysqlds</res-ref-name>

<res-type>javax.sql.DataSource</res-type>

<res-auth>Container</res-auth>

</resource-ref>

我测试之后还是报错,没用的!

免责声明:文章转载自《JavaWeb项目之博客系统(二)上》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇懒惰的人有福了——VS代码段编辑器SnippetEditor 可对vs所有代码段进行编辑和创建包括C#\J#\VB.NET等 (转)前端常见跨域解决方案下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Spring Boot 学习心得

Spring Boot 开发项目基本步骤,提醒大家,一定要有耐心去看Spring 官网的技术文档,每次阅读技术文档都会有不同的感受和收获。 Spring Boot 学习地址:https://spring.io/projects/spring-boot 在Spring 官网上可以下载一些小的Demo,在开发工具中做简单的配置就可以跑起来了,但是到底是如何实现...

mysql导出导入sql文件方法(linux)

一、导入导出.sql文件for Linux: 1、从mysql中导出数据库test: 在终端运行:mysqldump -h localhost -u root -p test > /home/chuzj/daochu.sql 其中localhost是服务器名字 test是数据库名字,其后可以直接跟表名 2、将daochu.sql 导入到mysql数...

SpringBoot使用MyBatis-Generator详解-copy

SpringBoot使用MyBatis-Generator详解MyBatis-Generator简介MyBatis-Generator使用添加maven依赖创建MBG配置文件运行MBG,生成底层类数据库查询 前几天工作中接触到MyBatis-Generator,发现其方便之处,MyBatis-Generator可以帮助我们实现数据库繁复的增删改查操作,当数...

C#实现对数据库的备份还原(完全)

C#实现对数据库的备份还原        ( 用SQL语句实现对数据库备份还原操作        备份SqlServer数据库:  backup database 数据库名 to disk (备份文件存放路径+文件名).bak   还原SqlServer数据库:  string path = this.FileUpload1.PostedFile.Fil...

数据库基础 MySQL

数据库 数据库(database,DB)是指长期存储在计算机内的,有组织,可共享的数据的集合。数据库中的数据按一定的数学模型组织、描述和存储,具有较小的冗余,较高的数据独立性和易扩展性,并可为各种用户共享。 数据库管理系统软件 数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库...

一个简单的MySQL数据库同步脚本

Talk is cheap,show you code. 1 mysqldump -h[remoteHost] -u[username] -p[password] -P[port] --databases [databasename1] [databasename2] > [D:mysqlsync emp.sql] 2 echo "备份完成"; 3...