a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 105|回复: 1

[专业语言] JAVA认证:从零开始手把手教你用tomcat

[复制链接]
发表于 2012-8-4 12:44:44 | 显示全部楼层 |阅读模式
前言   本文根据实例详细介绍了如何在tomcat中配置数据源。并且十分详细的介绍了JDBC简介,事务处理,数据源简介,配置数据源。本文从最基础的知识点开始讲起,让不太了解tomcat的学者对其在头脑里有一个十分清晰、透彻的了解。
) j7 B3 |! B& A" F6 F( p  开发环境: q- g0 d7 z3 O/ O8 f( z
  本文的环境:JDK1.4.2,TOMCAT5.0.28,Oracle9i4 ~% O: c* Z& r4 ]; V
  JDBC简介
0 Q# e& b% h/ }% m* q  提到数据源,那就不能不说JDBC。JDBC是Java Database Connectivity的缩写。在java.sql包中提供了JDBC API,定义了访问数据库的接口和类。但是JDBC API不能直接访问数据库,必须依赖于数据库厂商提供的JDBC驱动程序,即JDBC DRIVER。
4 c9 O5 L. I4 W9 E' y% h  Java.sql中常用的接口和类如下:' U1 B4 a+ m4 I5 x4 t' g, l& \
  Driver接口和DriverManager类
6 ]; k9 F4 [: }: {& j  Connection
5 n; l6 b+ z# J. d/ B) d  Statement0 K) r% K- G" U$ H. U( f
  PreparedSataement% |; |& Y3 d- m- r$ L1 Y3 T
  ResultSet
1 R- A- o! [, G2 V, O" u& r( X  1.Driver接口和DriverManager类
3 r1 q) s/ j$ i' x( B  DriverManager类用来建立和数据库的连接以及管理JDBC驱动程序,常用方法如下:/ `: a1 [% p  Y
  registerDriver(Driver driver) 在DriverManager中注册JDBC驱动程序
! D$ A4 \  N( F: {& i7 f* c) c  getConnection(String url,String user,String pwd) 建立和数据库的连接,返回Connection对象
9 M, k$ O8 z& Z- s$ `# H  setLoginTimeOut(int seconds) 设定等待数据库连接的最长时间
# u; O! K  n' w) {  setLogWriter(PrintWriter out) 设定输入数据库日至的PrintWriter对象
) V: Q" E9 d- T  2.Connection- Z6 \" Y/ a, Q0 G3 j9 X' d; H
  Connection代表和数据库的连接,其常用方法如下: 0 S/ f7 E& G  R& v% k% u) D% P
  getMetaData() 返回数据库的MetaData数据。MetaData数据包含了数据库的相关信息,例如当前数据库连接的用户名、使用的JDBC驱动程序、数据库允许的最大连接数、数据库的版本等等。 0 e% X4 q/ n* ?( R9 Q0 l: O
  createStatement() 创建并返回Statement对象
& }, ?/ Q1 v! b. Z2 t, W  PrepareStatement(String sql) 创建并返回prepareStatement对象 4 d+ F2 V* U, \# n, w
  3.Statement/ C3 {4 p6 G. P" n4 m( Z; N
  Statement用来执行静态sql语句。例如,对于insert、update、delete语句,调用executeUpdate(String sql)方法,而select语句可以调用executeQuery(String sql)方法,executeQuery(String sql)方法返回ResultSet对象。
1 Z0 a% G8 v) D+ T- x  4.PrepareStatement
' N* _/ O) V% E9 q  PrepareStatement用于执行动态的sql语句,即允许sql语句中包含参数。使用方法为:
/ r# L& _# z* r  String sql = “select col1 from tablename where col2=? And col3=?”;
0 ^6 q6 Y2 W8 L; x- A6 C; v2 p- T; w* p  PrepareStatement perpStmt = conn.preparestatement(sql);
; u# N7 a# |; H1 ?  perpStmt.setstring(1,col2Value);
5 C$ m1 F* y- D% w  perpStmt.setFloat(2,col3Value);
; \0 D$ W/ }% T( q% w" N; T  ResultSet rs = perpStmt.executeQuery();
; s" d. ^) s+ U  a. q8 ?  _4 w) L: @
  5.ResultSet
+ H3 |& g' u( P/ X( ?7 ~  ResultSet用来表示select语句查询得到的记录集,一个StateMent对象在同一时刻只能打开一个ResultSet对象。通过ResultSet的getXXX()方法来得到字段值。ResultSet提供了getString()、getFloat()、getInt()等方法。可以通过字段的序号或者字段的名字来制定获取某个字段的值。例如:在上例中getString(0),getString(col1)都可以获得字段col1的值。
回复

使用道具 举报

 楼主| 发表于 2012-8-4 12:44:45 | 显示全部楼层

JAVA认证:从零开始手把手教你用tomcat

</p>  事务处理 8 G' \8 n$ c8 C+ G
( x9 f5 J$ I7 d
  在实际应用中,我们会遇到同时提交多个sql语句,这些sql语句要么全部成功,要么全部失败,如果其中一条提交失败,则必须撤销整个事务。为此,Connection类提供了3个控制事务的方法: ! Y& _, f+ @  l/ X' d' X
  setAutoCommit(boolen autoCommit) 设置是否自动提交事务,默认为自动提交。 - ^/ V0 M7 M  O* Y, W+ A0 t
  commit() 提交事务
- m9 g$ Z8 x6 W. D  rollback() 撤销事务 2 S7 e% Y3 u# ]% p6 D2 R3 d# [2 c
  参考例子:" [& }; j2 @/ Z3 ^  F
  try{
% C1 p4 A4 u) I3 g! n  conn.SetautoCommit(false); & v: E4 M7 A5 R% ~: G, H1 }1 v
  stmt = conn.createstatement();
# k! b, |* Q- i$ s+ v6 R  stmt.executeUpdate(“delete form table1 where col1=1”);: l/ K/ u. \% ?- Q8 {
  stmt.eecuteUpdate(“delete from table2 where col2=1”);
+ R2 H7 R  T$ S5 B7 t, V  conn.comm.it(); # I4 S; ~3 i0 t; P2 D
  }catch(Exception e){
( w+ M0 U/ ^2 k# H  p  e.printStackTrace;
: Q1 i1 \. G1 X, k5 r' _  } 8 N$ S. D9 F/ C& x% H' S
  try{
2 V, ^' V! v. F4 p" m) r* q" D  conn.rollback();
' ^% \# R1 U, h$ y/ l1 D  ^" n  } catch(Exception e1){
3 Z: E& V! I) I0 M  e1.printStackTrace; % m3 Q/ A$ d; |9 d7 v
  } % c  F( N8 n7 z8 ^2 L! m. F1 P) z4 d' E
  }
0 r( l  h3 M. U' Z0 p2 F  通过一个JSP例子来访问oracle数据库:
4 q" [) o6 I1 ?6 F/ Q+ e   6 V; k4 @: D& u) Q9 m
  
* y7 ~  N0 a9 N2 }1 q   * b) C: x1 w4 |: Z/ X3 s! F4 b
  数据源简介
0 \9 y( K9 P3 g" R  JDBC2.0提供了javax.sql.DataSource的接口,负责与数据库建立连接,实际应用时不需要编写连接数据库代码,直接从数据源获得数据库的连接。Dataource中事先建立了多个数据库连接,这些数据库连接保持在数据库连接池中,当程序访问数据库时,只需要从连接池从取出空闲的连接,访问数据库结束,在将这些连接归还给连接池。DataSource对象由容器(Tomcat)提供,不能使用创建实例的方法来生成DataSource对象,要采用JAVA的JNDI(Java Nameing and Directory Interface,java命名和目录接口)来获得DataSource对象的引用。(另有一种说法:“其实从技术上来说,数据源连接方式是不需要目录服务的,我们同样可以通过序列化数据源对象直接访问文件系统。这点是需要明确的。”感兴趣的朋友可以试试。)JNDI是一种将对象和名字绑定的技术,对象工厂负责生产出对象,这些对象都和唯一的名字相绑定。程序中可以通过这个名字来获得对象的引用。Tomcat把DataSource作为一种可配置的JNDI资源来处理,生成DataSource对象的工厂为org.apache.comm.ons.dbcp.BasicDataSourceFactory。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-7 12:09 , Processed in 0.214978 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表