Jsp + JavaBean循序漸進教程(一)

Jsp + JavaBean循序漸進教程(一)

--------------------------------------------------------------------------------

Jsp + JavaBean循序漸進教程(一)
(文/劉玉鋒)


 目前,Jsp作爲一個非常好的動態網站研發語言得到了越來越廣泛的應用,在各類Jsp應用程式中,Jsp
+ Java Bean的組合成爲了一種事實上最常見的Jsp程式的標準,就讓我們來看看具體的Jsp是怎麼和
Java Bean結合在一起的吧。

  本教程將闡述JavaBean的原理,接着將闡述JavaBean在JavaServer Page下的特定語法,然後
演示一個使用Jsp+JavaBean的簡單的計數器,最後將周詳的講解一個有數據庫功能的JavaBean+jsp
的用戶註冊程式。

Java Bean原理和應用

  1、什麼是JavaBean?

  JavaBean是描述Java的軟件組件模型,有點類似於Microsoft的COM組件概念。在Java模型中,
通過JavaBean能無限擴充Java程式的功能,通過JavaBean的組合能快速的生成新的應用程式。
對於程式員來說,最佳的一點就是JavaBean能實現代碼的重複利用,另外對於程式的易維護性等等
也有非常重大的意義。

  JavaBean通過Java虛擬機(Java Virtual Machine)能得到正確的執行,運行JavaBean最
小的需求是JDK1.1或以上的版本。

  JavaBean傳統的應用在於可視化的領域,如AWT下的應用。自從Jsp誕生後,JavaBean更多的應
用在了非可視化領域,在服務器端應用方面表現出來了越來越強的生命力。在這裏我們主要討論的是非
可視化的JavaBean,可視化的JavaBean在市面上有非常多Java書籍都有周詳的闡述,在這裏就不作爲
重點了。

  2、非可視化的JavaBean

  非可視化的JavaBean,顧名思義就是沒有GUI界面的JavaBean。在Jsp程式中常用來封裝事務邏
輯、數據庫操作等等,能非常好地實現業務邏輯和前臺程式(如jsp文件)的分離,使得系統具有更好的
健壯性和靈活性。

  一個簡單的例子,比如說一個購物車程式,要實現購物車中添加一件商品這樣的功能,就能寫
一個購物車操作的JavaBean,建立一個public的AddItem成員方法,前臺Jsp文件裏面直接調用這個
方法來實現。如果後來又考慮添加商品的時候需要判斷庫存是否有貨物,沒有貨物不得購買,在這個
時候我們就能直接修改JavaBean的AddItem方法,加入處理語句來實現,這樣就完全不用修改前臺
jsp程式了。

  當然,也能把這些處理操作完全寫在jsp程式中,不過這樣的jsp頁面可能就有成百上千行,光看
代碼就是個頭疼的事情,更不用說修改了。如果你使用過asp研發過程式的話,相信對這就深有體會
了(其實使用ASP+COM組件完萬能實現同jsp+javabean同樣的架構,但不知道某種原因網上常見的
都是全部寫在asp頁面中,所以使得維護修改等極爲不方便,當然這是題外話了)。由此可見,通過
JavaBean能非常好地實現邏輯的封裝、程式的易於維護等等。

  如果你使用Jsp研發程式,一個非常好的習慣就是多使用JavaBean。

  3、JavaBean的簡單例子

  創建JavaBean並不是一件困難的事情,如果你寫過Java程式的話那就非常容易了,要注意一點的
就是在非可視化JavaBean中,常用>get或>set這樣的成員方法來處理屬性>(properties>)。>

  下面讓我們來看一個簡單的JavaBean

FirstJavaBean.java

import java.io.*;

public class FirstJavaBean {

private String FirstProperty = new String("");

public FirstJavaBean() {

}

public String getFirstProperty() {

return FirstProperty;

}

public void setFirstProperty(String value) {

FirstProperty = value;

}

public static void main(String[] args)

{

System.out.println("My First JavaBean!");

}

}

如果運行這個程式,就會出現下面的結果:

First JavaBean!

  這是個非常典型的JavaBean的代表,簡單地解釋一下,FirstProperty是其中的一個屬性
(Property),外部通過get/set方法能對這個屬性進行操作,如果你寫過VB的class的話,對
這個就再也熟悉不過了。Main方法是爲了測試程式用的,寫JavaBean能先不必加入到Jsp程式中
調用,而直接用main方法來進行調試,調試好以後就能在Jsp程式中調用了。

 

Jsp + JavaBean循序漸進教程(二)
(文/劉玉鋒)


  JavaBeans 和 JavaServer Pages的結合

  通過上面的學習,大家對JavaBean應該有了一個基本的瞭解,對於在JavaServer Pages中調用
JavaBeans我們還需要了解一些特定的jsp的內容,讓我們來看看吧。

  JavaServer Pages中的JavaBean相關標籤

  在JavaServer Pages中調用JavaBean有三個標準的標籤,那就是,
,及。

  標籤

  能定義一個具有一定生存範圍及一個唯一id的JavaBean的實例,這樣
JavaServer Pages通過id來識別JavaBean,也能通過id.method類似的語句來操作JavaBean。

  在執行過程中,首先會嘗試尋找已存在的具有相同id和scope值的JavaBean實例,
如果沒有就會自動創建一個新的實例。

  其具體語法如下


body


  其中,typeSpec定義如下

typeSpec ::=class=“className”
/ class=“className” type=“typeName”
/ type=“typeName” class=“className”
/ beanName=“beanName” type=“typeName”
/ type=“typeName” beanName=“beanName”
/ type=“typeName”
下面的表格是標籤中相關屬性的含義

  屬性及定義

Id
  id屬性是JavaBean對象的唯一標誌,代表了一個JavaBean對象的實例。他具有特定的存在範圍
(page/request/session/application)。在JavaServer Pages中通過id來識別JavaBean。

Scope
  Scope屬性代表了Javabean對象的生存時間,能是page, request, session, 和
application中的一種。

Class
  代表了JavaBean對象的class名字,特別注意大小寫要完全一致。

beanName
  BeanName屬性代表了Bean的名字,通常通過java.beans.Beans class的instantiate() 方法
來初始化。.

Type
  Type屬性指定了腳本變量定義的類型,默認爲腳本變量定義和class中的屬性一致,一般我們都
採用默認值

  標籤

  另一個標準的標籤就是標籤了,他主要用於設置bean的屬性值。JavaServer
Pages中調用的語法如下:

  

  其中,name屬性代表了已存在的並且具有一定生存範圍(scope)的JavaBean實例。last_syntax
代表的語法如下: property=“*” /
property=“propertyName” /
property=“propertyName” param=“parameterName” /
property=“propertyName” value=“propertyValue”
下面是標籤的基本屬性及含義

  屬性及定義

Name
  Name代表通過 標籤定義的JavaBean對象實例。 Property
  這是個非常重要的屬性,代表了你想設置值的屬性property名字。如果使用property=”*”,程式就會
反覆的查找當前的ServletRequest所有參數,並且匹配JavaBean中相同名字的屬性property,並通過
JavaBean中屬性的set方法賦值value給這個屬性。如果value屬性爲空,則不會修改Javabean中的
屬性值。

Param
  Param屬性代表了頁面請求的參數名字,標籤不能同時使用param和value。

Value
  Value屬性代表了賦給Bean的屬性property的具體值。

  標籤

  最後一個標籤就是標籤了.他能得到JavaBean實例的屬性值,並將他們轉換爲
java.lang.String, 最後放置在隱含的Out對象中. JavaBean的實例必須在
前面定義.

  標籤的語法如下:

  

  下面是標籤的基本屬性及含義

  屬性及定義

Name
  Name屬性代表了想要獲得屬性值的Bean的實例,Bean實例必須在前面用標籤定義.

Property
  Property屬性代表了想要獲得值的那個property的名字。

 

Jsp + JavaBean循序漸進教程(三)
劉玉鋒?yesky

Jsp和JavaBean結合的簡單例子

  上面講了這麼多,到目前還沒有看到具體應用,那好,目前我們看看具體的JavaServer Pages+JavaBean
的例子吧,首先讓我們看看一個簡單的計數器程式。

  本例程共包含3個文件

  JavaBean--counter.java文件,JavaServer Page-- counter.jsp文件, counter1.jsp文件其中,
counter.java主要用來進行計數器的計數操作,counter.jsp和counter1.jsp文件主要用來顯示網頁的計數。

  counter.java文件

package count;
/**
* Title: test
* Description: counter Bean
* @author LiuYufeng
* @version 1.0
*/
public class counter {
  //初始化JavaBean的成員變量
int count = 0;
  // Class構造器
public counter() {
}
  // 屬性Count的Get方法
public int getCount() {
  //計數操作,每一次請求都進行計數器加一
count++;
return this.count;
}
  //屬性Count的Set方法
public void setCount(int count) {
this.count = count;
}
}

counter.jsp文件

< HTML>
< HEAD>
< TITLE>
counter
< /TITLE>
< /HEAD>
< BODY>
< H1>
JBuilder Generated JSP
< /H1>

< jsp:useBean id="bean0" scope="application" class="count.counter" />

< /BODY>
< /HTML>

counter1.jsp文件

< HTML>
< HEAD>
< TITLE>
counter
< /TITLE>
< /HEAD>
< BODY>
< H1>
JBuilder Generated JSP
< /H1>


The Counter is :

< /BODY>
< /HTML>

  從這個例子我們不難看出Jsp和JavaBean應用的一般操作方法,首先在Jsp頁面中要聲明並初始化JavaBean,
這個JavaBean有一個唯一的id標誌,更有一個生存範圍scope(設置爲application是爲了實現多個用戶共享
一個計數器的功能,如果要實現單個用戶的計數功能,能修改scope爲session),最後還要制定JavaBean的
class來源count.counter:

  

  接着我們就能使用JavaBean提供的public方法或直接使用標籤來得到JavaBean
中屬性的值:

  out.println("The Counter is : " + bean0.getCount() + "");

  

  OK,目前運行一下程式看看,然後多刷新幾次,注意看計數器的變化。上面的程式在Jbuilder4.0下面
調試通過。

  如果要直接在一些jsp環境(如Tomcat、IAS、Weblogic等)下調試,請注意各自的文件,正確的放置
JavaBean文件。如在Tomcat環境中,本例子JavaBean編譯後的文件就需要放在
\WEB-INF\ClASSES\ count\ counter.class。

 


Jsp + JavaBean循序漸進教程(四)上
劉玉鋒

-
  JavaBeans 和 JavaServer Pages的結合
JavaServer Pages+JavaBeans的數據庫操作應用

  上面已講了一個簡單的JavaBean應用的計數器例子,當然在實際程式過程中,涉及的更多的還是和數據庫
相關的操作,所以在這一節我們將重點闡述JavaServer Pages和JavaBeans怎麼對數據庫進行操作。這裏我們
選取了一個比較有代表性比較實用的例子,那就是用戶註冊管理,因爲這在網上使用比較的頻繁,不管是註冊
Email、有獎調查、購買物品或加入社區等等都會涉及到一個用戶註冊的問題;另外一方面,他又比較有代表性,
涉及到了數據庫的記錄增加,記錄顯示等常見操作,所以我們就拿用戶註冊開刀了。

  程式採用Oracle Jdeveloper3.1研發,運行環境爲Wiin2000+Tomcat3.1,數據庫系統採用了Oracle8.16i。

  首先我們建立一個數據庫demodb,其字段如下面所示

username VARCHAR2(20) 用戶名
password VARCHAR2(20) 密碼
email VARCHAR2(30) Email地址
homepage VARCHAR2(50) 主頁
signs VARCHAR2(200) 簽名
regtime DATE 註冊時間

  接着我們建立幾個JavaBeans和JavaServer Pages文件

db.java文件(封裝數據庫連接及一些底層操作)
adduser.java文件(進行用戶數據的讀取及添加操作)
newuser.jsp文件(用戶新增頁面,用於輸入用戶註冊信息)
donewuser.jsp文件(進行用戶註冊信息添加)
listuser.jsp文件(所有的註冊用戶信息列表)

  爲了方便大家看代碼,在非常多地方都進行了周詳的註釋和講解,至於JavaBean中涉及到Java語法結構的東西,
請大家參考Java書籍。

  db.java文件

  說明:這個JavaBean封裝數據庫連接及一些底層操作,派生出的類能直接調用這些方法,另外提供了一個
toChinese方法,主要用來進行中文數據的處理。

  // 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; //數據庫連接
ResultSet rs = null; //記錄集
String Username=""; //用戶名
String Password=""; //密碼
String Email=""; //email
String Homepage=""; //主頁
String Signs=""; //簽名
  //db的構建器
public db() {
try {
  //註冊數據庫驅動程式爲Oracle驅動
Class.forName(new oracle.jdbc.driver.OracleDriver());
}
catch(java.lang.ClassNotFoundException e) {
  //這樣寫是爲了方便調試程式,出錯打印mydb()就知道在什麼地方出錯了
System.err.println("mydb(): " + e.getMessage());
}
}

  //executeQuery方法用於進行記錄的查詢操作

  //入口參數爲sql語句,返回ResultSet對象
public ResultSet executeQuery(String sql) {
rs = null;
try {
  //建立數據庫連接,使用Oracle的一種thin連接方式,demo爲主機名字,demodb爲數據庫,後面的兩個
demo爲用戶名和密碼
conn = DriverManager.getConnection("jdbc:oracle:thin:@demo:1521:demodb","demo","demo");
Statement stmt = conn.createStatement();
  //執行數據庫查詢操作
rs = stmt.executeQuery(sql);
}
catch(SQLException ex) {
System.err.println("db.executeQuery: " + ex.getMessage());
}
return rs;
}
//executeUpdate方法用於進行add或update記錄的操作

  //入口參數爲sql語句,成功返回true,否則爲false
public boolean executeUpdate(String sql) {
boolean bupdate=false;
rs = null;
try {
  //建立數據庫連接,其他參數說明同上面的相同
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) {
  //打印出錯信息
System.err.println("db.executeUpdate: " + ex.getMessage());
}
return bupdate;
}

  //toChinese方法用於將一個字符串進行中文處理

  //否則將會是???這樣的字符串
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;
}
}

}

Jsp + JavaBean循序漸進教程(四)下
劉玉鋒

adduser.java文件

  說明:主要進行用戶數據的讀取及添加操作,從db派生出來,addNewUser方法用來進行用戶數據的
添加,checkUser()方法用來檢查用戶名是否重複,另外更有一些set/get方法用來對屬性進行處理,
dousernew.jsp文件將進行條用。

  // Copyright (c) 2000 http://jspbbs.yeah.net
package lyf;
/**
* A Class class.
*
* @author liuyufeng
*/
  //導入java類庫
import java.sql.*;
import java.lang.*;
import oracle.jdbc.driver.*;
  //adduser由db派生出來,擁有db的成員變量和方法
public class adduser extends db {
  //構建器
public boolean addNewUser(){
boolean boadduser=false;
try {
  //進行用戶註冊的記錄添加操作,生成sql語句
String sSql=new String("insert into user(regtime,username,password,email,homepage,
signs)");
sSql=sSql+ " values(SYSDAYE,""+Username+"",""+Password+"",""+Email+"",""+Homepage
+"",""+Signs+"")";
  //一種調試的方法,能打印出sql語句,以便於查看錯誤
System.out.println(sSql);
  //調用父類的executeUpdate方法,並根據成功以否來設置返回值
if(super.executeUpdate(sSql))boadduser=true;
}
catch(Exception ex) {
//出錯處理
System.err.println("adduser.addNewUser: " + ex.getMessage());
}finally{
  //無論是否出錯,都要返回值
return boadduser;
}
}

  //checkUser()方法用來檢查用戶名是否重複

  //如果重複返回一個false
public boolean checkUser(){
boolean boadduser=false;
try {
  //構建sql查詢語句
String sSql="select * from user where username=""+Username+""";
  //調用父類的executeQuery方法
if((super.executeQuery(sSql)).next()){
  //查詢出來的記錄集爲空
boadduser=false;
}else{
boadduser=true;
}
}
catch(Exception ex) {
  //出錯處理
System.err.println("adduser.addNewUser: " + ex.getMessage());
}finally{
  //返回值
return boadduser;
}
}
//屬性的set/get方法,同請求的參數一致
/*
  其實下面的所有get/set方法都是重複性勞動,爲了避免重複性的拷貝粘貼工作,我寫了個軟件
Jsp Code Faster,只要輸入一系列的字段名,所有的get/set方法都能自動生成,大家能在我的網站
http://jspbbs.yeah.net上下載這個軟件
*/
  //屬性用戶名Username的get/set方法
public String getUsername(){
return Username;}
public void setUsername(String newUsername){
  //用戶名有可能是中文,需要進行轉換
Username =db.toChinese(newUsername);}
  //屬性密碼Password的get/set方法
public String getPassword(){
return Password;}
public void setPassword(String newPassword){
Password = newPassword;}
  //屬性Email的get/set方法
public String getEmail(){
return Email;}
public void setEmail(String newEmail){
Email = newEmail;}
  //屬性主頁Homepage的get/set方法
public String getHomepage(){
return Homepage;}
public void setHomepage(String newHomepage){
Homepage = newHomepage;}

  //屬性主頁Signs的get/set方法
public String getSigns(){
return Signs;}
public void setSigns(String newSigns){
  //簽名有可能是中文,需要進行轉換
Signs = db.toChinese(newSigns);}
}
  好了,到這裏,Javabean程式基本上寫完了,要注意的是中文處理一定要經過轉換,更有不一定所有
的屬性都需要set/get方法,視情況而定,最後還需要編譯爲class文件,能使用一些可視化的軟件如
Jbuilder或VisualAge等等來編譯。編譯後會發現有兩個文件db.class和adduser.class文件,都
在lyf子目錄下。這兩個文件就能讓後面的jsp頁面調用了。

 

Jsp+JavaBean循序漸進教程(五)
劉玉鋒

newuser.jsp文件

  說明:用戶註冊頁面,有用戶名、密碼、主頁、Email、個人簽名等信息,主要用於提供用戶輸入註冊
信息,提交Action後的處理頁面爲donewuse.jsp文件,所有參數將會傳遞到donewuser.jsp文件進行
處理。文件開頭< %@ page contentType="text/html;charset=gb2312"%>語句表明這個頁面使用
gb2312中文字符集,如果不聲明的的話在中文顯示上就出現亂碼。< % response.setHeader("Expires",
"0"); %>語句是爲了讓頁面能夠自動刷新,這句話不要也沒有太大影響。後面的基本上就是html語句了,
大家都比較熟悉,所以在這裏沒有必要浪費篇幅了。

< %@ page contentType="text/html;charset=gb2312"%>
< % response.setHeader("Expires","0"); %>
< html>

< head>
< meta http-equiv="Content-Type" content="text/html; charset=gb2312">
< meta name="GENERATOR" content="Microsoft FrontPage 4.0">
< meta name="ProgId" content="FrontPage.Editor.Document">
< title>新用戶註冊
< /head>
< body bgcolor="#FFFAD9">
< p align="center">< font color="#8484FF">< span class="main1">< strong>< big>新個人
用戶註冊
< span class="main1">
< form method="POST" name="formreg" action="donewuser.jsp">
< div align="center">< center>< table
border="1" width="50%" borderColorDark="#FFFFFF" borderColorLight="#000000"
cellspacing="0">
< tr>
< td width="27%" bgcolor="#DDDDFF" align="center">< span class="main1">用戶名:
< td width="73%" bgcolor="#DDDDFF">< span class="main1">< input type="text"
name="username" size="20"
tabindex="2">< font color="#FF0000">< b>*
< /tr>
< tr>
< td width="27%" bgcolor="#DDDDFF" align="center">輸入密碼:
< td width="73%" bgcolor="#DDDDFF">< input type="password" name="password" size="20"
tabindex="2">< font color="#FF0000">< b>*
< /tr>

< tr>
< td width="27%" bgcolor="#DDDDFF" align="center">校驗密碼:
< td width="73%" bgcolor="#DDDDFF">< input type="password" name="Password1" size="20"
tabindex="3">< font color="#FF0000">< b>*
< /tr>

< tr>
< td width="27%" bgcolor="#DDDDFF" align="center">E-mail
< td width="73%" bgcolor="#DDDDFF">< input type="text" name="email" size="20" tabindex="4">
< font color="#FF0000">*
< /tr>

< tr>
< td width="27%" bgcolor="#DDDDFF" align="center">主頁地址:
< td width="73%" bgcolor="#DDDDFF">< input type="text" name="homepage" size="20"
tabindex="6" value="http://">
< /tr>
< tr>
< td width="100%" bgcolor="#DDDDFF" colspan="2">
< BR>
< center>< span class="main1">< Font color="red">< B>介紹自己:
< span class="main">(介紹自己,不能超過120字)
< /tr>
< tr>
< td width="100%" bgcolor="#DDDDFF" colspan="2"> < textarea rows="6"
name="signs" cols="66" tabindex="9">
< /tr>
< tr>
< td width="30%" bgcolor="#DDDDFF" colspan="2">< center>< p>< input
type="submit" value="遞交" οnclick="return checkmsg();" name="B1" tabindex="10">
< input type="reset" value="清除" name="B2" tabindex="11">
< /tr>
< /table>
< /center>
< /form>

< hr size="1" color="#FF0000">
< span class="main">
< p align="center">Better View:800*600 Best View:1024x768
爲了本系統能夠更好的爲你服務,請使用IE4.0或以上版本瀏覽器
< font color="#000000">< a href="javascript:%20newGuide("copyright.htm")"
target="_self">版權所有

< span class="main">
< a href="http://jspbbs.yeah.net" target="_blank">JSP愛好者
< span class="main1">(< a href="mailto:[email protected]">劉玉鋒)
製作 Copyright? 2000
< /body>
< /html>

  註冊頁面做完了,看看後面怎麼對這個頁面的數據進行處理。


Jsp+JavaBean循序漸進教程(六)
劉玉鋒


這一節涉及到兩個頁面,一個donewuser.jsp文件用來實現記錄添加操作,另一個文件listuser.jsp文件
用來顯示所有的已註冊的用戶信息。這兩個頁面都涉及到了JavaBean的具體調用,還是來看看文件吧,
對於文件中關鍵代碼,都會添加上註釋,以方便大家理解。

  donewuser.jsp文件

  說明:用戶註冊操作頁面,並根據用戶註冊成功否顯示相應的反饋信息,這個頁面主要的特點就是使用了
lyf.adduser這個JavaBean的addNewUser()方法來進行記錄的添加。

< %@ page contentType="text/html;charset=gb2312"%>
< % response.setHeader("Expires","0"); %>
< !--生成一個JavaBean:lyf.adduser的實例,id爲adduser,生存範圍爲page-->
< jsp:useBean id="adduser" class="lyf.adduser" scope="page"/>

  < !--設置JavaBean中各個屬性的值,這會調用JavaBean中各個屬性的set方法,以便JavaBean得到
正確的屬性值,”*”代表進行所有屬性的匹配-->

< jsp:setProperty name="adduser" property="*"/>
< html>
< head>
< meta http-equiv="Content-Language" content="zh-cn">
< meta http-equiv="Content-Type" content="text/html; charset=gb2312">
< meta name="GENERATOR" content="Microsoft FrontPage 3.0">
< meta name="ProgId" content="FrontPage.Editor.Document">
< title>用戶添加< /title>
< /head>
< body bgcolor="#FFEBBD">
< div align="center">< center>
< %

  //調用lyf.adduser的checkUser()方法檢查是否有重複的用戶名

  //如果有重複就顯示對應的信息

if(!adduser.checkUser())
{

  //頁面文字輸出信息,使用jsp內置對象out的println方法,相當於asp中的response.write方法

out.println("對不起,這個用戶名"+adduser.getUsername()+"已被申請了,請重新選擇!");

  //return代表返回,運行時候碰到return就不會進行下面的處理了,功能相當於asp中的response.end

return;
}
%>
< %
//如果沒有用戶名重複的問題,調用lyf.adduser的addNewUser()方法來將用戶數據添加到數據庫中,並
根據數據添加成功否來顯示對應的信息

if(adduser.addNewUser()){
%>
< H2>添加用戶成功!

< H2>添加用戶失敗,請和管理員聯繫!

< /BODY>
< /HTML>

  listuser.jsp文件

  說明:用戶信息列表頁面,用於顯示註冊的所有用戶信息,對數據進行了分頁顯示。

  爲了方便大家使用,採用了通用的分頁代碼,如果是JDBC2.0以上或其他支持
TYPE_SCROLL_INSENSITIVE遊標的數據庫驅動程式,能有更簡潔的分頁方法。

  和前面jsp頁面類似的語句就不講解了,代表在
這個頁面中導入java.sql.ResultSet的這個類庫,因爲Jsp頁面中間要聲明ResultSet;
oracle.jdbc.driver.*類庫是Oracle專用的Jdbc驅動程式,讓Jsp頁面能用來進行Oracle的數據庫操作。

< %@ page contentType="text/html;charset=gb2312"%>
< % response.setHeader("Expires","0"); %>
< %@ page import="java.sql.ResultSet" %>
< %@ page import="oracle.jdbc.driver.*" %>
< !--生成一個JavaBean:lyf.db的實例-->
< jsp:useBean id="db" class="lyf.db" scope="request"/>
< jsp:setProperty name="db" property="*"/>
< %

  java.lang.String strSQL; //SQL語句

int intPageSize; //一頁顯示的記錄數
int intRowCount; //記錄總數
int intPageCount; //總頁數
int intPage; //待顯示頁碼
java.lang.String strPage;
int i,j,k;
  //設置一頁顯示的記錄數
intPageSize = 15;
  //取得待顯示頁碼
strPage = request.getParameter("page");
if(strPage==null){//表明在QueryString中沒有page這一個參數,此時顯示第一頁數據
intPage = 1;
}
else{//將字符串轉換成整型
intPage = java.lang.Integer.parseInt(strPage);
if(intPage<1) intPage = 1;
}
//獲取記錄總數
strSQL = "select count(*) from user";
ResultSet result = db.executeQuery(strSQL); //執行SQL語句並取得結果集
result.next(); //記錄集剛打開的時候,指針位於第一條記錄之前
intRowCount = result.getInt(1);
result.close(); //關閉結果集
  //記算總頁數
intPageCount = (intRowCount+intPageSize-1) / intPageSize;
  //調整待顯示的頁碼
if(intPage>intPageCount) intPage = intPageCount;
strSQL="select * from user order by id desc";
  //執行SQL語句並取得結果集
result = db.executeQuery(strSQL);
  //將記錄指針定位到待顯示頁的第一條記錄上
i = (intPage-1) * intPageSize;
for(j=0;j
< html>
< head>
< meta http-equiv="Content-Language" content="zh-cn">
< meta http-equiv="Content-Type" content="text/html; charset=gb2312">
< meta name="GENERATOR" content="Microsoft FrontPage 3.0">
< meta name="ProgId" content="FrontPage.Editor.Document">
< title>用戶列表< /title>
< /head>
< body bgcolor="#FFEBBD">
< div align="center">< center>
< table border="1"
borderColorDark="#FFFFFF" borderColorLight="#000000" cellspacing="0" height="22"
width="100%">
< tr bgcolor="#FFEBAD">
< td height="1" width="691" class="main">
第頁 共頁
< a href="listuser.jsp?page=0">首頁
< a href="listuser.jsp?page=">上一頁
上一頁
< a href="listuser.jsp?page=">下一頁
下一頁
< a href="listuser.jsp?page=">尾頁
第< input type="text" class="main" name="page" size="3" value=""
tabindex="1">頁< input type="submit" class="main" value="go" name="B1" tabindex="2">


< table border="1" width="100%" cellspacing="0" bordercolorlight="#000000"
bordercolordark="#FFFFFF" class="main">
< tr bgcolor="#FFEBAD">
< td >
< div align="left">用戶名

< td >
< p align="center">Email

< td >
< p align="center">主頁

< td>
< p align="center">登記時間

< td>
< p align="center">說明


< tr bgcolor="#FFEBAD">
< td>
< div align="left">
< td>< div align="center">
< td>< div align="center">< font color="#0000CC">

< td>< div align="center">< font color="#FF6666">

< td>< div align="center">< font color="#0000FF">


< /table>

< /body>
< /html>
  
  先運行程式newuser.jsp文件,進行用戶註冊操作,然後運行listuser.jsp文件,看看是否已
添加到數據庫中。對於具體jsp文件和class文件放在什麼目錄下的問題,請看具體jsp服務器軟件的參考,
一個最簡單的方法就是用Jbuilder4.0直接運行,因爲他自帶了Tomcat服務器軟件。

  好了,到這裏Jsp+JavaBean的介紹就基本上結束了,通過上面的學習,大家應該對JavaBean怎麼
應用於JSP程式中有了一個基本的瞭解,剩下的就是在具體程式中去應用和發揮了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章