?? 0115.htm
字號:
<html>
<head>
<title>新時(shí)代軟件教程:操作系統(tǒng) 主頁制作 服務(wù)器 設(shè)計(jì)軟件 網(wǎng)絡(luò)技術(shù) 編程語言 文字編輯</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style>
<!--
body, table {font-size: 9pt; font-family: 宋體}
a {text-decoration:none}
a:hover {color: red;text-decoration:underline}
.1 {background-color: rgb(245,245,245)}
-->
</style>
</head>
<p align="center"><script src="../../1.js"></script></a>
<p align="center">
<big><strong>
<!-- title -->
Jsp + JavaBean循序漸進(jìn)教程(四)上
</strong></big>
</p>
<div align="right">
<!-- author -->
劉玉鋒
</div>
<p><span class=smallFont>
<!-- content -->
<pre>
-
JavaBeans 和 JavaServer Pages的結(jié)合
JavaServer Pages+JavaBeans的數(shù)據(jù)庫操作應(yīng)用
上面已經(jīng)講了一個(gè)簡單的JavaBean應(yīng)用的計(jì)數(shù)器例子,當(dāng)然在實(shí)際程序過程中,涉及的更多的還是和數(shù)據(jù)庫
相關(guān)的操作,所以在這一節(jié)我們將重點(diǎn)闡述JavaServer Pages和JavaBeans如何對數(shù)據(jù)庫進(jìn)行操作。這里我們
選取了一個(gè)比較有代表性比較實(shí)用的例子,那就是用戶注冊管理,因?yàn)檫@在網(wǎng)上使用比較的頻繁,不管是注冊
Email、有獎(jiǎng)?wù){(diào)查、購買物品或者加入社區(qū)等等都會涉及到一個(gè)用戶注冊的問題;另外一方面,它又比較有代表性,
涉及到了數(shù)據(jù)庫的記錄增加,記錄顯示等常見操作,所以我們就拿用戶注冊開刀了。
程序采用Oracle Jdeveloper3.1開發(fā),運(yùn)行環(huán)境為Wiin2000+Tomcat3.1,數(shù)據(jù)庫系統(tǒng)采用了Oracle8.16i。
首先我們建立一個(gè)數(shù)據(jù)庫demodb,其字段如下面所示
username VARCHAR2(20) 用戶名
password VARCHAR2(20) 密碼
email VARCHAR2(30) Email地址
homepage VARCHAR2(50) 主頁
signs VARCHAR2(200) 簽名
regtime DATE 注冊時(shí)間
接著我們建立幾個(gè)JavaBeans和JavaServer Pages文件
db.java文件(封裝數(shù)據(jù)庫連接及一些底層操作)
adduser.java文件(進(jìn)行用戶數(shù)據(jù)的讀取以及添加操作)
newuser.jsp文件(用戶新增頁面,用于輸入用戶注冊信息)
donewuser.jsp文件(進(jìn)行用戶注冊信息添加)
listuser.jsp文件(所有的注冊用戶信息列表)
為了方便大家看代碼,在很多地方都進(jìn)行了詳細(xì)的注釋和講解,至于JavaBean中涉及到Java語法結(jié)構(gòu)的東西,
請大家參考Java書籍。
db.java文件
說明:這個(gè)JavaBean封裝數(shù)據(jù)庫連接及一些底層操作,派生出的類可以直接調(diào)用這些方法,另外提供了一個(gè)
toChinese方法,主要用來進(jìn)行中文數(shù)據(jù)的處理。
// Copyright (c) 2000 http://jspbbs.yeah.net
package lyf;
/**
* A Class class.
* < P>
* @author liuyufeng
*/
//聲明類庫文件
import oracle.jdbc.driver.*;
import java.net.*;
import java.sql.*;
import java.lang.*;
import java.io.*;
import java.util.*;
public class db {
//成員變量初始化
Connection conn = null; //數(shù)據(jù)庫連接
ResultSet rs = null; //記錄集
String Username=""; //用戶名
String Password=""; //密碼
String Email=""; //email
String Homepage=""; //主頁
String Signs=""; //簽名
//db的構(gòu)建器
public db() {
try {
//注冊數(shù)據(jù)庫驅(qū)動(dòng)程序?yàn)镺racle驅(qū)動(dòng)
Class.forName(new oracle.jdbc.driver.OracleDriver());
}
catch(java.lang.ClassNotFoundException e) {
//這樣寫是為了方便調(diào)試程序,出錯(cuò)打印mydb()就知道在什么地方出錯(cuò)了
System.err.println("mydb(): " + e.getMessage());
}
}
//executeQuery方法用于進(jìn)行記錄的查詢操作
//入口參數(shù)為sql語句,返回ResultSet對象
public ResultSet executeQuery(String sql) {
rs = null;
try {
//建立數(shù)據(jù)庫連接,使用Oracle的一種thin連接方式,demo為主機(jī)名字,demodb為數(shù)據(jù)庫,后面的兩個(gè)
demo為用戶名和密碼
conn = DriverManager.getConnection("jdbc:oracle:thin:@demo:1521:demodb","demo","demo");
Statement stmt = conn.createStatement();
//執(zhí)行數(shù)據(jù)庫查詢操作
rs = stmt.executeQuery(sql);
}
catch(SQLException ex) {
System.err.println("db.executeQuery: " + ex.getMessage());
}
return rs;
}
//executeUpdate方法用于進(jìn)行add或者update記錄的操作
//入口參數(shù)為sql語句,成功返回true,否則為false
public boolean executeUpdate(String sql) {
boolean bupdate=false;
rs = null;
try {
//建立數(shù)據(jù)庫連接,其它參數(shù)說明同上面的一樣
conn = DriverManager.getConnection("jdbc:oracle:thin:@demo:1521:demodb","demo","demo");
Statement stmt = conn.createStatement();
int rowCount = stmt.executeUpdate(sql);
//如果不成功,bupdate就會返回0
if(rowCount!=0)bupdate=true;
}
catch(SQLException ex) {
//打印出錯(cuò)信息
System.err.println("db.executeUpdate: " + ex.getMessage());
}
return bupdate;
}
//toChinese方法用于將一個(gè)字符串進(jìn)行中文處理
//否則將會是???這樣的字符串
public static String toChinese(String strvalue) {
try{
if(strvalue==null)
{
return null;
}
else
{
strvalue = new String(strvalue.getBytes("ISO8859_1"), "GBK");
return strvalue;
}
}catch(Exception e){
return null;
}
}
}
</pre>
</table>
<p align="center"><script src="../../2.js"></script></a>
</body>
</html>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -