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;
}
}
}
adduser.java文件
说明:主要进行用户数据的读取以及添加操作,从db派生出来,addNewUser方法用来进行用户数据的添加,checkUser()方法用来检查用户名是否重复,另外还有一些set/get方法用来对属性进行处理,dousernew.jsp文件将进行条用。
// Copyright (c) 2000 http://jspbbs.yeah.net
package lyf;
/**
* A Class class.
* <P>
* @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循序渐进教程 jsp结合JAVABEAN 有浅入深, 初学JAVAbean的好教程
Jsp + JavaBean循序渐进教程 JSP动态网页制作必备知识
JSP+JavaBean+Servlet三层结构的实质是多了一个Controller:Servlet来分发客户端浏览器的请求。如果把起控制器作用的Servlet的作用理解为对客户端的请求进行预处理对理解Servlet将有很大的帮助。通过web.XML配置文件...
本教程将阐述JavaBean的原理,接着将阐述JavaBean在JavaServer Page下的特定语法,然后 演示一个使用 Jsp JavaBean的简单的计数器,最后将详细的讲解一个有数据库功能的JavaBean jsp 的用户注册程序。
适合jsp入门 有一些比较实用的例子
Jsp+JavaBean循序渐进教程 Jsp作为一个很好的动态网站开发语言得到了越来越广泛的应用,在各类Jsp应用程序中,Jsp + Java Bean的组合成为了一种事实上最常见的Jsp程序的标准,就让我们来看看具体的Jsp是如何与Java ...
本书以实际开发需求为主导,以目前主流的MyEclipse+Tomcat为开发平台,以网络购物系统的设计与实现为主线,辅以多个小实例为从线,通过任务驱动模式进行内容编排,由浅入深、循序渐进地介绍JSP开发方法和实用技术,...
面向JSP实际应用开发,通过大量的实例,循序渐进地为读者介绍了有关JSP开发所涉及的各类知识,同时还包含JDK、Tomcat和Struts等JSP相关知识。全书共分10章,内容依次包含了JSP的基本常识、开发环境、语法、内置对象...
本书较为全面地介绍了JSP技术,由浅入深、循序渐进地介绍了JSP的运行系统,基本概念,语法规范及其相关内容,从基本的JSP概述、与其他技术的对比,到JSP的运行系统和模式,逐步深入地对JSP语法规范进行了详细的...
里面含有java学习的各种文档以及jsp和javabean的各种内容。
本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。. 本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...
本书从初学者的角度出发 通过通俗易懂的语言和大量生动典型的实例 由浅入深 循序渐进地介绍应用Java进行网络编程的常用技术和方法 全书分为3篇 共20章 第1篇为起步篇 第1章 第8章 主要介绍Java语言概述 搭建Java...
本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。. 本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...
本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。. 本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...
本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。. 本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...
本书以网络留言板开发为主线将JavaWeb知识融会贯通,知识模块完整,通过静态网页篇、动态网站篇、系统框架篇、项目实战篇循序渐进地使学生全面掌握JavaWeb开发技术。静态网页篇主要讲解HTML、CSS、DIV、JavaScript等...
本书从最基础的JSP开发开始,循序渐进地介绍了JSP 开发技术,并涵盖了许多高级主题,如需要在企业级Web应用中使用的特性—Enterprise JavaBeans、JDBC 2.0、数据库连接池和自定义标签库。本书既适合初学者阅读,也...