struts中的JDBC

原创 2006年05月28日 14:38:00
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接口的具体实现,它们一般具有如下三种功能:
建立一个与数据源的连接
发送SQL语句到数据源
取回结果集

那么,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放在/webapps/mystruts/WEB-INF/lib目录下。

在struts-config.xml文件中配置数据源

这里,有一点要引起大家的注意的,就是,struts-config.xml中配置的各个项目是有一定的顺序要求的,几个主要项目的顺序大致是这样的:

data-sources
form-beans
action-mappings
message-resources
plug-in


在配置时要遵守上述顺序

<data-sources>
    <data-source key="A" type="org.apache.commons.dbcp.BasicDataSource">
      <set-property property="driverClassName"
          value="com.microsoft.jdbc.sqlserver.SQLServerDriver" />
      <set-property property="url"
          value="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=mystruts;SelectMethod=cursor" />
      <set-property property="username" value="sa" />
      <set-property property="password" value="yourpwd" />
      <set-property property="maxActive" value="10" />
      <set-property property="maxWait" value="5000" />
      <set-property property="defaultAutoCommit" value="false" />
      <set-property property="defaultReadOnly" value="false" />
    </data-source>
  </data-sources>


我们来对这段配置代码做一个简单的说明:

这句中,如果您的struts应用程序中只配置一个数据源则key="A"可以不要,而配置多个数据源时就要用这个键值区别,也就是说,可以为一个应用程序配置多个数据源让它访问多个数据库。

<set-property property="url" 
        value="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=mystruts;
        SelectMethod=cursor" />


这句中的sqlserver://127.0.0.1:1433;DatabaseName=mystruts;的数据库服务器名(本例是用代表本机的ip地址)和数据库名称要与您的具体情况相同。同时,还要注意访问数据库的用户名和口令也要合乎您的实际情况。

表示最大的活动连接数,这也说明这些连接是池化(pooling)的。

表示对数据库的增、删、改操作必须显式地提交。即必须使用connect.commit();这样的命令才能真正让数据库表中的记录作相应的改变。设置成这样方便用户组织自己的数据库事务。
下面,简单地分析一下数据访问对象的工作过程:

要访问数据库,一般要经历的如下几个步骤:
获得到数据库的连接
创建SQL语句
执行SQL语句
管理结果集

其中,得到数据库的连接本例中是在Action类中完成的,代码如下:
dataSource = getDataSource(request,"A");
cnn = dataSource.getConnection();

Action在调用业务对象时将连接作为一个参数传给业务对象,再由业务对象传给数据库访问对象。

要说明一点的是,要将struts-legacy.jar文件放在/webapps/mystruts/WEB-INF/lib目录下。

我们要在/webapps/mystruts/WEB-INF/classes目录下再建一个名叫db的子目录,将数据访问类以UserInfoDao.java文件名保存在该子目录中。按照上篇文章介绍的方法,编译各个包中的.java文件。就可以启动Tomcat重新运行您的程序了。

细心一点的读者可能都注意到了,到目前为止,我们程序中的各种消息都不是用中文表示的,在下一篇文章中,我们将讨论Struts的国际化编程即所谓的i18n编程,对我们在编程中经常遇到的乱码问题也一同作些分析。

JavaWeb——SSJDBC(struts2,spring,jdbc)框架,正向工程

原文地址:http://blog.csdn.net/sapce_fish/article/details/52900750 本文采用struts2,spring,jdbc搭建web框架,使用正向工...
  • sapce_fish
  • sapce_fish
  • 2016年10月23日 15:13
  • 1002

Struts2 +JDBC——简单登录

struts2+JDBC的简单登录注册
  • so_sss
  • so_sss
  • 2014年09月02日 14:22
  • 2567

Struts+Spring+JDBC 简单配置

     项目需要,在原来Struts的基础上,配了Spring,数据库访问也用JDBC代替,由于Spring出色的控制反转,JDBC连接的工作基本上不需要考虑,只要专注于数据抽取就可以了,下边把代码...
  • cnhappier
  • cnhappier
  • 2007年04月10日 23:56
  • 7761

Struts2+JDBC分页

编写web.xml文件,其代码如下:
  • zmhinzaghi
  • zmhinzaghi
  • 2010年07月10日 19:42
  • 2717

struts2+spring+spring jdbc

1、创建表    create table t_user(       user_id int primary key auto_increment,       username varcha...
  • lirui0822
  • lirui0822
  • 2014年04月08日 14:45
  • 2698

Struts2+JDBC 连接MySql验证登陆用户

1. 首先要下载Connector/J地址:http://www.mysql.com/downloads/connector/j/ 这是MySQL官方提供的连接方式: 解压后得到jar库文...
  • doraemon_007
  • doraemon_007
  • 2015年03月17日 16:38
  • 958

struts2/spring/springJDBC优缺点

[struts2优点] struts2有以下优点: 1 > Struts2没有像struts1那样跟Servlet API和struts API有着紧密的耦合,Struts2的应用可以不依赖于Serv...
  • hengwujun0903
  • hengwujun0903
  • 2013年10月15日 15:26
  • 364

Struts2 Spring3 集合 使用springjdbc操作数据(一)

Struts2 Spring3 集合 使用springjdbc操作数据
  • u010982856
  • u010982856
  • 2016年04月20日 16:22
  • 764

学习笔记2:Struts2 +Spring JDBC

前面的学习笔记1,我记录了Struts2搭建网站框架的小实例 这次,我要在Struts2框架实例的基础上,记录用JDBC链接数据库的过程。这个过程其实最核心的就是dao接口和daoImpl类,这些是...
  • ruiruibaobei1993
  • ruiruibaobei1993
  • 2015年11月21日 21:19
  • 164

Struts中的Action是单例还是多例

struts2中action是多例的,即一个session产生一个action如果是单例的话,若出现两个用户都修改一个对象的属性值,则会因为用户修改时间不同,两个用户访问得到的属性不一样,操作得出的结...
  • Marvel__Dead
  • Marvel__Dead
  • 2017年03月02日 21:40
  • 2070
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:struts中的JDBC
举报原因:
原因补充:

(最多只允许输入30个字)