JDBC实验四 JavaBean的应用

更新时间:2023-07-24 07:31:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

广州中医药大学信息技术学院

实 验 报 告

课程名称: 专业班级: 学生学号:

网络数据库编程

计算机科学与技术(2010)级

2010081113

学生姓名: 汪珊 实验名称: 实验成绩:

课程类别:必修 □ 限选 公选□ 其它□

实验四 JavaBean的应用

实验类型:应用性实验 实验日期: [实验目的]

1. 理解组件的概念

2. 理解JavaBean的基本概念和规范 3. 掌握JavaBean的编写 4. 掌握JavaBean的应用 [实验内容]

1. JavaBean的调试环境(参考示例:counter,tax)

1) 正确编写.java代码,并编译成.class文件

2) 在jsp环境(如Tomcat、RESIN等)下调试,如在resin环境中,本

例JavaBean编译后的文件就需要放

resin\doc\WEB-INF\classes\count\counter.class。

2. 根据课本第5章的实例进行学习,代码见共享文件。 3. 用JavaBean组件实现文件上传(参考示例: file) 4. 编写连接数据库的JavaBean(参考示例:student)

5. 把实验三的“留言板”作业中的数据库连接改为用JAVABEAN实现,并增

加附件上传的功能(参考示例: file)。

在下面贴上题4的代码

(以下为理论知识题) 5、什么是软件组件?

组件从一般意义上讲组件是系统中可以明确辨识的构成成分 软件组件则是系统中具有一定意义的相对独立的构成成分

组件式一个不透明的功能实现体,能够被第三方组装,且符合一个组件模型

6、JavaBean 组件的公共特性有哪些?

JavaBean组件的公共特性有属性、方法和事件 属性是JavaBean的组成部分

方法是JavaBean可提供的行为或服务

事件是JavaBean对特定事件发生时所提供的响应

7、使用JavaBean进行数据库连接有什么好处? JavaBean不依赖平台。 可以实现代码的重复利用 易编写、易维护、易使用

可以在任何安装了Java运行环境的平台上使用,而不需要重新编译。 8、在SQL中定义事务的语句有哪些?如何实现JDBC对数据库的事务操作,请举例说明?

BEGIN TRANSACTION 事务名 /*标记一个显式本地事务的起始点*/ COMMIT TRAN 事务名 /*提交事务*/ ROLLBACK TRAN 事务名 /*回滚事务*/ Connection con = null; try {

ds = (DataSource)myContext.lookup("jdbc/oracleServer"); pooledCon = ds.getConnection("scott", "tiger"); pooledCon.setAutoCommit(false);

pooledCon.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);

// .. mit(); } catch (Exception ignored)

{ try { pooledCon.rollback(); } catch (SQLException ig) {} } finally { if(pooledCon != null) { pooledCon.setAutoCommit(true); pooledCon.close(); } }

9、自行在网上搜索资料,举例说明如何用程序实现分布式事务?(必要时可以用图片辅助文字说明)

在java中有如下三种事务,

简单的jdbc级的事务

jta - 在ejb环境下,用户得到事务并进行控制

cmp - 完全由容器控制事务,用户通过bean配置文件来定义事务行为

二三种都支持分布式事务,但只支持java环境下的分布式事务。

下面讨论如何在java程序里实现分布式事务,即在同一个事务里访问多个数据源。实际上就是如何使用jta.

这里假设使用oracle数据库,使用weblogic部署应用,所要做的是如下几步: 1. 配置

1.1 确认数据库支持分布式事务 - oracle是支持分布式事务的,jdbc驱动也支持分布式事务

1.2 在weblogic里配置datasource

1.2.1. 配置连接池,注意这里应该选择驱动是thin xa而不是thin 1.2.2. 配置数据源,使用前面配好的xa的连接池 2. 程序实现 2.1. 实现自己的xid

import javax.transaction.xa.*; public class myxid implements xid {

protected int formatid; protected byte gtrid[]; protected byte bqual[]; public myxid() { }

public myxid(int formatid, byte gtrid[], byte bqual[]) {

this.formatid = formatid; this.gtrid = gtrid; this.bqual = bqual; }

public int getformatid()

{

return formatid; }

public byte[] getbranchqualifier() {

return bqual; }

public byte[] getglobaltransactionid() {

return gtrid; } }

2.2. 通过jndi找到weblogic中配置好的数据源

public xadatasource getxadatasource() throws exception {

initialcontext ctx = new initialcontext( mgr.getprops()); xadatasource ds = (xadatasource)ctx.lookup("jdbc/xads"); return ds;

}

2.3. 使用xadatasource得到xaconnection,使用xaconnection得到xaresource,基于xaresource进行具体数据访问。如果我们这里lookup多个xadatasource,然后得到多个xaresource,就可以实现多数据源的事务控制。

xadatasource xads; xaconnection xacon; xaresource xares; xid xid; connection con;

statement stmt; int ret;

xads = getxadatasource(); xacon = xads.getxaconnection(); xares = xacon.getxaresource(); con = xacon.getconnection(); stmt = con.createstatement();

xid = new myxid(100, new byte[]{0x01}, new byte[]{0x02}); try {

xares.start(xid, xaresource.tmnoflags);

stmt.executeupdate("insert into test_table values (100)"); xares.end(xid, xaresource.tmsuccess); ret = xares.prepare(xid); if (ret == xaresource.xa_ok) { mit(xid, false); } }

catch (xaexception e) { e.printstacktrace(); } finally { stmt.close(); con.close(); xacon.close(); }

[实验体会]

请在下方写出你对本实验的看法,例如你认为实验难度如何?你能够独立实验吗?如果不能,你认为原因是什么?

1、实验难度: 难( ) 中等( ) 容易( )

2、能否按指定要求,在指定时间内完成所有实验? 能( ) 否( ) 如果不能,不能完成实验有

(作业提交说明:实验完成后,将此文档和相关的JSP文件一并压缩后提交上来,文件名为自己的学号+实验几,如2001000001+实验几.RAR)

本文来源:https://www.bwwdw.com/article/g8km.html

Top