周浩

  BlogJava :: 首页 :: 新随笔 :: 联系 ::  :: 管理 ::
  28 随笔 :: 0 文章 :: 16 评论 :: 0 Trackbacks

Jsp + JavaBean 循序渐进教程 (1)

目前,Jsp作为一个很好的动态网站开发语言得到了越来越广泛的应用,在各类Jsp应用程序中,Jsp+ Java Bean的组合成为了一种事实上最常见的Jsp程序的标准,就让我们来看看具体的Jsp是如何与Java Bean结合在一起的吧。

 

本教程将阐述JavaBean的原理,接着将阐述JavaBeanJavaServer Page下的特定语法,然后演示一个使用Jsp+JavaBean的简单的计数器,最后将详细的讲解一个有数据库功能的JavaBean+jsp的用户注册程序。

 

Java Bean 原理与应用

 

1 、什么是JavaBean

JavaBean 是描述Java的软件组件模型,有点类似于MicrosoftCOM组件概念。在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,建立一个publicAddItem成员方法,前台Jsp文件里面直接调用这个方法来实现。如果后来又考虑添加商品的时候需要判断库存是否有货物,没有货物不得购买,在这个时候我们就可以直接修改JavaBeanAddItem方法,加入处理语句来实现,这样就完全不用修改前台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方法可以对这个属性进行操作,如果您写过VBclass的话,对这个就再也熟悉不过了。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 循序渐进教程 ( )

				
						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="
				
				递交
				
						" onclick="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:coolknight@263.net">
				
				刘玉锋
				
						)
				
		
				
						制作
				
				
						
								 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
				
				服务器软件。
				
						
						
				
		

 

posted on 2006-12-27 18:50 Derek 阅读(434) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航:
 
Google