JSP网上书店开发完整实例含完整源代码.docx

上传人:b****1 文档编号:20643948 上传时间:2023-04-25 格式:DOCX 页数:49 大小:279.95KB
下载 相关 举报
JSP网上书店开发完整实例含完整源代码.docx_第1页
第1页 / 共49页
JSP网上书店开发完整实例含完整源代码.docx_第2页
第2页 / 共49页
JSP网上书店开发完整实例含完整源代码.docx_第3页
第3页 / 共49页
JSP网上书店开发完整实例含完整源代码.docx_第4页
第4页 / 共49页
JSP网上书店开发完整实例含完整源代码.docx_第5页
第5页 / 共49页
点击查看更多>>
下载资源
资源描述

JSP网上书店开发完整实例含完整源代码.docx

《JSP网上书店开发完整实例含完整源代码.docx》由会员分享,可在线阅读,更多相关《JSP网上书店开发完整实例含完整源代码.docx(49页珍藏版)》请在冰豆网上搜索。

JSP网上书店开发完整实例含完整源代码.docx

JSP网上书店开发完整实例含完整源代码

完整的简单jsp网上书店详细实例

计算机web编程jsp毕业论文、考试复习资料必备

其中包括的详细需求、业务分析、数据库、源代码

我们使用JSP和JavaBean来构建一个网上书店。

介绍的例子可以分成两大部分,第一部分是普通程序,用于客户在网上选购图书,第二部分是管理程序,用于在服务器端处理客户的定单。

客户端程序由以下几个部分构成:

default.jsp:

会员登录界面(首页);

checklogon.jsp:

检测登录代码和密码是否一致,根据由JavaBean返回的结果显示不同的信息。

BuyerBean:

会员的合法性检验所用的Bean;

booklist.jsp:

给登录会员显示当前书店中可供选择的图书;

addcart.jsp:

将所选的图书加入购物车;

shoppingcart.jsp:

查看购物车的内容;

本例的数据库采用Access(.MDB数据库),对数据库的访问采用便于理解的JDBC-ODBC方式,在使用本例前先在本地数据库建立一个ODBC数据源:

bookstore。

设置步骤如下:

(1)在开始->设置->控制面版(Win98、NT4.0)中选取“数据源(ODBC)”;在Win2000Professional和Server中分别位于“开始->设置->控制面版->管理工具”和“开始->程序->管理工具”下。

(2)启动“数据源(ODBC)”配置程序,界面如图15-1所示。

图15-1 ODBC数据源管理界面

(3)在图15-1中“系统DSN”选项下单击“添加”按钮,来添加一个系统的数据源(DSN),则出现如图15-2所示数据源驱动程序选择界面:

图15-2 数据源驱动程序选择界面

(4)在图15-2中选择“MicrosoftAccessDriver(*.mdb)”单击“完成”加载Access数据库的驱动,则出现如图15-3所示数据库ODBC安装界面:

图15-3 数据库ODBC安装界面

(5)在图15-3中单击“选择(S)…”按钮,启动一个类似资源管理器的界面来选择数据库,如图15-4所示,在图15-4所示的界面中选择bookstore.mdb。

图15-4 数据库选择界面

15.1 会员登录

做一个网上书店,在顾客开始购书之前,必须要记录用户的一些信息以便用户在不同的分类、不同的页面购书时,最后能够去收款台统一结帐,而且网上书店同时有许多人在选购图书,也要求对不同的顾客进行区分,我们可以要求顾客在购书之前进行注册成为会员,以后只用会员代码和密码即可登录。

为了便于说明现在的电子商务网站,由JSP做页面表现,由JavaBean做应用逻辑的结构,在本例中将会员登录程序分成两大部分:

一、JavaBean用于对数据库的操作,验证用户名和密码是否正确;二、JSP页面部分,用于供用户会员代码和密码以及显示验证结果。

15.1.1 会员登录JavaBean

我们网上书店中的会员信息的库结构如图15-5所示:

图15-5 会员信息库

其中memberID是主键,用于区分不同的会员,新会员注册时只能使用没有被使用的用户代码。

在验证时我们只要使用验证用户的memberID和其pwd是否一致即可判断该用户是否合法,如果合法则其登录次数加1。

下面是用户验证部分的JavaBean的代码

清单15-1 BuyerBean.Java

/**BuyerBean.Java 1.10.2001

*Copyright?

2000,2001bycuugllp.

*本Bean中有两个set方法和两个get方法:

*setMemberID()—对BuyerBean中的memberID属性进行赋值;

*setPwd()—对BuyerBean中的pwd属性进行赋值;

*getLogontimes()—取该会员登录的次数

*getMenberName()获得该会员的真实姓名,用于显示欢迎信息。

*main()方法用于将BEAN作为一个Application进行测试时使用,正式发布时可以删除。

**/

packagecuug;

importJava.sql.*;

publicclassBuyerBean{

privateStringmemberID=null;  //会员ID

privateStringmemberName=null; //会员姓名

privateStringpwd=null;      //密码

privateintlogontimes=-1;      //登录的次数

privatestaticStringstrDBDriver=“sun.jdbc.odbc.JdbcOdbcDriver”; //JDBC驱动

privatestaticStringstrDBUrl=“jdbc:

odbc:

bookstore”; //数据源,

privateConnectionconn=null;      //连接

privateResultSetrs=null;          //结果集

publicBuyerBean(){

//加载JDBC-ODBC驱动

try{

Class.forName(strDBDriver);

}

//捕获异常

catch(Java.lang.ClassNotFoundExceptione){

System.err.println(“BuyerBean():

”+e.getMessage());

}  

}

//获得登录次数,登录的会员的名字也在该方法调用时获得

publicintgetLogontimes(){

StringstrSql=null;

try{

conn=DriverManager.getConnection(strDBUrl);

Statementstmt=conn.createStatement();

strSql=“SelectlogonTimes,membernamefrombuyerInfowherememberID=‘”+

memberID+“’andpwd=’”+pwd+“’”;

rs=stmt.executeQuery(strSql);

while(rs.next()){        

//登录的次数

logontimes=rs.getInt(“logonTimes”);

//会员姓名

memberName=rs.getString(“membername”);            

}      

rs.close();

//如果是合法会员则将其登录次数加1

if(logontimes!

=-1){

strSql=“UpdatebuyerInfoset

logonTimes=logonTimes+1wherememberID=‘”+memberID+“’”;

stmt.executeUpdate(strSql);

}

stmt.close();

conn.close();

}

//捕获异常

catch(SQLExceptione){

System.err.println(“BuyerBean.getLogontimes():

”+e.getMessage());

}

returnlogontimes;

}

//设置memberID属性;

public voidsetMemberID(StringID){

this.memberID=ID;

}

//设置pwd属性

publicvoid setPwd(Stringpassword){

this.pwd=password;

}

//获得该会员的真实姓名,必须在取该会员登录的次数之后才能被赋予正确的值

publicStringgetMemberName(){

returnmemberName;

}

//测试Bean中的各个方法是否能够正常工作

public staticvoidmain(Stringargs[]){

BuyerBeanbuyer=newBuyerBean();

buyer.setMemberID(“abcd”);

buyer.setPwd(“1234”);

System.out.println(buyer.getLogontimes());

System.out.println(buyer.getMemberName());

}  

}

在BuyerBean中用了package cuug;在发布到WEBSERVER时,可以用JAR(JDK中带的打包工具)把编译后的BuyerBean.class打包成JAR文件在服务器的环境变量classpath中给予指定,或者在服务器classpath环境变量指定的目录下建一个cuug文件夹,把BuyerBean.class放到cuug目录下。

15.1.2 会员登录htm与JSP

会员登录要由两个部分来完成,第一个页面用于会员输入其ID和密码,当然首页还可以加一些广告等的其它信息,在本例中略过。

清单15-2default.htm

Copyright?

1999cuug,liu.

CUUGONLINEBOOKSTORE–MEMBERLOGIN

CUUG网上书店

会员登录页

 

 


请输入会员代号和密码:


会员代码:


密    码:



在本例中提供了一个文本框供用户输入会员代号和登录密码,其运行结果如图15-6所示,当会员输入其代码和密码后调用checklogon.jsp来验证该网络用户是否是合法会员。

图15-6 会员登录页

在checklogon.jsp中接收从default.htm中由用户所填的会员代码和密码,把它传给BuyerBean,由BuyerBean判断该用户的会员代码和密码的正确性,若正确显示欢迎信息;若不正确,则提供一个重新登录的链接。

Checklogon.jsp的源代码如下:

清单15-3 checklogon.jsp

DOCTYPEHTMLPUBLIC“-//W3C//DTDHTML4.0Transitional//EN”>

<%@pagelanguage=”Java” contentType=”text/html;charset=GB2312”%>

useBeanclass=”cuug.BuyerBean”id=”buyer”scope=”page”>

useBean>

</p><p>CUUGONLINEBOOKSTORE–MEMBERLOGIN</p><p>

CUUG网上书店

<%

StringmemberID=request.getParameter(“memberID”);

Stringpwd=request.getParameter(“pwd”);

buyer.setMemberID(memberID);

buyer.setPwd(pwd);

%>

<%intlogonTimes=buyer.getLogontimes();

if(logonTimes>0){

session.putValue("memberID",memberID);

%>

<%=buyer.getMemberName()%>欢迎你第

<%=logonTimes+1%>次来到CUUG网上书店

进入书店

<%

}

else{

%>

对不起,<%=memberID%>你的用户名和密码不一致

重新登录

<%

}

%>

登录正确时的结果如图15-7所示,错误时的结果如图15-8所示。

图15-7 用户登录正确(会员abcd的真实姓名是cuug001)

图15-8 用户登录错误

15.2 选书

会员登录之后,合法的用户将可以看到本书店中可供选择的图书,并且将他感兴趣的书放入“购物车”,在去“收银台”结帐之前,该用户可以放弃购买其购物车中的任何一本书。

在此处我们用BookBean来获取图书的信息,在Booklist.jsp中显示这些书。

在会员选书部分,我们仍用JavaBean来操作数据库,用jsp来做页面表现。

15.2.1 选书JavaBean

图书信息的表结构如图15-9所示,为了便于说明,在本例中price也设置成了String型,在实际应用中应该设置成货币或浮点型:

图15-9 图书信息的表结构

其中,bookISBN是主键,区分不同的图书。

JavaBean要根据不同的图书的bookISBN来获得其相应的书名、作者、出版社、价格、简介等信息。

同时JavaBean还要有列出书店中所有图书的信息的功能。

清单15-4 BookBean..Java

/**BuyerBean.Java 1.10.2001

*Copyright?

2000,2001bycuug,llp.

*本Bean中的各个方法的功能介绍如下:

*setBookISBN():

设置图书的编号,同时根据编号更新相应的书名、作者、出版社、价格*和简介

*getBookList()—取得书库中全部书的书名、出版社、价格、作者等信息;

*getBookISBN()—取得当前图书的编号;

*getBookName()—取得当前图书的书名;

*getBookAuthor()—取得当前图书的作者;

*getPublisher()—取得当前图书的出版社信息;

*getPrice()—取得当前图书的价格;

*getIntroduce()取得当前图书的简介信息。

*main()方法用于将BEAN作为一个Application进行测试时使用,正式发布时可以删除。

**/

packagecuug;

importJava.sql.*;

publicclassBookBean{

privateStringbookISBN=null;    //图书编号

privateStringbookName=null;    //书名

privateStringbookAuthor=null;    //作者

privateStringpublisher=null;      //出版社

privateStringintroduce=null;      //简介

privateStringprice=null;        //价格

privatestaticStringstrDBDriver="sun.jdbc.odbc.JdbcOdbcDriver";

privatestaticStringstrDBUrl="jdbc:

odbc:

bookstore";

privateConnectionconn=null;

privateResultSetrs=null;  

publicBookBean(){

//加载驱动

try{

Class.forName(strDBDriver);

}

catch(Java.lang.ClassNotFoundExceptione){

System.err.println("BookBean():

"+e.getMessage());

}  

}

//取当前书库中全部图书信息

publicResultSetgetBookList(){

StringstrSql=null;

try{

//建立与数据库的连接

conn=DriverManager.getConnection(strDBUrl);

Statementstmt=conn.createStatement();

strSql="SelectbookISBN,bookName,bookAuthor,publisher,pricefrombookInfo";

rs=stmt.executeQuery(strSql);      

}

//捕获异常

catch(SQLExceptione){

System.err.println("BookBean.getBookList():

"+e.getMessage());

}

returnrs;

}

//根据图书的编号给图书的其他信息赋值

private voidgetBookInfo(StringISBN){

StringstrSql=null;

bookName=null;

bookAuthor=null;

publisher=null;

introduce=null;

price=null;

try{

//建立和数据库的连接

conn=DriverManager.getConnection(strDBUrl);

Statementstmt=conn.createStatement();

strSql="Select*frombookInfowherebookISBN='"+ISBN+"'";

rs=stmt.executeQuery(strSql);      

while(rs.next()){

bookName=rs.getString("bookName");

bookAuthor=rs.getString("bookAuthor");

publisher=rs.getString("publisher");

introduce=rs.getString("introduce");

price=rs.getString("price");

}

}

//捕获异常

catch(SQLExceptione){

System.err.println("BookBean.getBookList():

"+e.getMessage());

}    

}

//给图书的编号赋值,同时调用函数给图书的其他信息赋值

public voidsetBookISBN(StringISBN){

this.bookISBN=ISBN;

getBookInfo(bookISBN);

}

//取图书编号

public StringgetBookISBN(){

returnbookISBN;

}  

//取书名

publicStringgetBookName(){

returnbookName;

}

//取作者信息

publicStringgetBookAuthor(){

returnbookAuthor;

}

//取出版社信息

publicStringgetPublisher(){

returnpublisher;

}

//取图书简介

publicStringgetIntroduce(){

returnintroduce;

}

//取图书价格

publicStringgetPrice(){

returnprice;

}  

//将Bean作为一个application进行测试用

public staticvoidmain(Stringargs[]){

BookBeanbook=newBookBean();

book.setBookISBN("7-5053-5316-4");

System.out.println(book.getBookName());

System.out.println(book.getBookAuthor());

System.out.println(book.getPublisher());

System.out.println(book.getIntroduce());

System.out.println(book.getPrice());

try{

ResultSettmpRS=book.getBookList();

while(tmpRS.next()){    

System.out.println(tmpRS.getString("bookname"));

}

tmpRS.close();

}

//捕获异常

catch(Exceptione){

System.err.println("main()"+e.getMessage());

}

}  

}

15.2.2 选书JSP

会员正确登录之后,即可进入书店进行选书,我们已经在checklogon.jsp中将会员的代码(memberID)放入系统的session中,为了保证用户只能从主页面登录进入书店,我们在给会员显示可供选择的图书之前,先检查session中是否有memberID的合法值,如果没有则提示用户先去登录。

清单15-5 booklist.jsp

DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN">

<%@pagelanguage="J

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 建筑土木

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1