Struts原理与实践(3)
来源:互联网 发布:sql select as 中文 编辑:程序博客网 时间:2024/05/18 06:23
Struts原理与实践(3) |
作者:罗会波 发文时间:2004.08.05 |
一、JDBC的工作原理 Struts在本质上是java程序,要在Struts应用程序中访问数据库,首先,必须搞清楚Java Database Connectivity API(JDBC)的工作原理。正如其名字揭示的,JDBC库提供了一个底层API,用来支持独立于任何特定SQL实现的基本SQL功能。提供数据库访问的基本功能。它是将各种数据库访问的公共概念抽取出来组成的类和接口。JDBC API包括两个包:java.sql(称之为JDBC内核API)和javax.sql(称之为JDBC标准扩展)。它们合在一起,包含了用Java开发数据库应用程序所需的类。这些类或接口主要有: Java.sql.DriverManager Java.sql.Driver Java.sql.Connection Java.sql.Statement Java.sql.PreparedStatement Java.sql.ResultSet等 这使得从Java程序发送SQL语句到数据库变得比较容易,并且适合所有SQL方言。也就是说为一种数据库如Oracle写好了java应用程序后,没有必要再为MS SQL Server再重新写一遍。而是可以针对各种数据库系统都使用同一个java应用程序。这样表述大家可能有些难以接受,我们这里可以打一个比方:联合国开会时,联合国的成员国的与会者(相当我们这里的具体的数据库管理系统)往往都有自己的语言(方言)。大会发言人(相当于我们这里的java应用程序)不可能用各种语言来发言。你只需要使用一种语言(相当于我们这里的JDBC)来发言就行了。那么怎么保证各成员国的与会者都听懂发言呢,这就要依靠同声翻译(相当于我们这里的JDBC驱动程序)。实际上是驱动程序将java程序中的SQL语句翻译成具体的数据库能执行的语句,再交由相应的数据库管理系统去执行。因此,使用JDBC API访问数据库时,我们要针对不同的数据库采用不同的驱动程序,驱动程序实际上是适合特定的数据库JDBC接口的具体实现,它们一般具有如下三种功能: 那么,JDBC具体是如何工作的呢? Java.sql.DriverManager装载驱动程序,当Java.sql.DriverManager的getConnection()方法被调用时,DriverManager试图在已经注册的驱动程序中为数据库(也可以是表格化的数据源)的URL寻找一个合适的驱动程序,并将数据库的URL传到驱动程序的acceptsURL()方法中,驱动程序确认自己有连接到该URL的能力。生成的连接Connection表示与特定的数据库的会话。Statement(包括PreparedStatement和CallableStatement)对象作为在给定Connection上执行SQL语句的容器。执行完语句后生成ResultSet结果集对象,通过结果集的一系列getter就可以访问表中各列的数据。 这里,是讲的JDBC的基本工作过程,实际应用中,往往会使用JDBC扩展对象如DataSource等,限于篇幅,就不在此详细讨论了。 二、访问数据库所要做的基本配置 我们以访问MS SQL Server2000数据库为例,介绍其基本的配置情况。首先,要到微软网站去下载JDBC的驱动程序,运行setup.exe将得到的三个文件:msbase.jar、mssqlserver.jar及msutil.jar放在 在struts-config.xml文件中配置数据源 这里,有一点要引起大家的注意的,就是,struts-config.xml中配置的各个项目是有一定的顺序要求的,几个主要项目的顺序大致是这样的:
在配置时要遵守上述顺序
我们来对这段配置代码做一个简单的说明:
这句中的sqlserver://127.0.0.1:1433;DatabaseName=mystruts;的数据库服务器名(本例是用代表本机的ip地址)和数据库名称要与您的具体情况相同。同时,还要注意访问数据库的用户名和口令也要合乎您的实际情况。 三、现在我们就来扩展前面我们讲的那个登录的例子,让它访问存储在数据库表中的用户名和口令信息,同时也让它给出的出错信息更明确一些。 为此,我们先要做一些准备工作,如果您还没有安装MS SQL Server2000请先安装,并下载最新的补丁包。再建一个名为mystruts的数据库,并在该数据库中建一个名为userInfo的表,该表有两个字段既:username和password,它们的字段类型都为varchar(10),其中username为主键。在该表中输入一条记录,username和password的字段值分别为lhb和awave。到此准备工作就基本做好了。 为了访问数据库,首先,要修改Action类,修改后的代码清单如下:
注意:dataSource = getDataSource(request,"A");这句中,如果配置中只有一个数据源,且没有key="A",则这句应写为dataSource = getDataSource(request); 从清单上可以看出,主要就是增加了访问数据库的代码。同时,我们的业务对象的形式也发生了一个变化,原来没有参数,现在有一个代表数据库连接的参数cnn,因此我们也要对业务对象进行适当地修改。 更改后的业务对象代码清单如下:
这个业务对象的代码还是比较简单的,重点要讲的就是它在validatePwd方法中调用了一个名叫UserInfoDao的对象,它就是真正进行数据库操作的数据访问对象。其代码清单如下:
下面,简单地分析一下数据访问对象的工作过程: 要访问数据库,一般要经历的如下几个步骤: 其中,得到数据库的连接本例中是在Action类中完成的,代码如下: dataSource = getDataSource(request,"A"); cnn = dataSource.getConnection(); Action在调用业务对象时将连接作为一个参数传给业务对象,再由业务对象传给数据库访问对象。 要说明一点的是,要将struts-legacy.jar文件放在 我们要在 细心一点的读者可能都注意到了,到目前为止,我们程序中的各种消息都不是用中文表示的,在下一篇文章中,我们将讨论Struts的国际化编程即所谓的i18n编程,对我们在编程中经常遇到的乱码问题也一同作些分析。 参考文献: 《JSP Web 编程指南》---电子工业出版社 Jayson Falkner等著 司光亚 牛红等译 《Java数据库编程宝典》John O'Donahue等著 甑广启 于耀等译 《Struts in Action》Ted Husted Cedric Dumoulin George Franciscus David Winterfeldt著 《Programming Jakarta Struts》Chuck Cavaness著 《Mastering Jakarta Struts》James Goodwill著 《Struts Kick Start》James Turner Kevin Bedell著 本文作者:罗会波 当阳市国税局信息中心 可通过lhbf@sina.com与他联系 |
- Struts原理与实践(3)
- Struts原理与实践(3)
- Struts原理与实践(3)
- Struts原理与实践(3)
- Struts原理与实践(3)
- Struts原理与实践(3)
- Struts原理与实践(3)
- Struts原理与实践(3)
- Struts原理与实践(3)
- Struts原理与实践(3) [转]
- [Struts]原理与实践
- Struts原理与实践 - -
- Struts原理与实践
- Struts原理与实践
- Struts原理与实践
- Struts原理与实践
- Struts原理与实践
- Struts原理与实践 - -
- 如何在C# 中使用WMI 实现远程查询和共享
- 關於引用指針的使用
- 关于winpcap的一些认识
- 物料编码的原则
- 在网页中添加一个音乐对象
- Struts原理与实践(3)
- shou ji 1
- 为TextBox增加隐藏属性,Value属性
- delete this,dll导出类及如何写plugins(PART II) [转]
- 创建一个ASP通用分页类[转贴 http://www.blueidea.com/tech/program/2004/1989.asp]
- delete this,dll导出类及如何写plugins(PART III) [转]
- 忙。。。
- D3DXColorAdjustContrast 函数
- 追求小资MM的十一种必胜法宝(转帖)