logo资料库

java网上书店web项目.doc

第1页 / 共38页
第2页 / 共38页
第3页 / 共38页
第4页 / 共38页
第5页 / 共38页
第6页 / 共38页
第7页 / 共38页
第8页 / 共38页
资料共38页,剩余部分请下载后查看
第 15 章 网上书店实例 在本章中我们使用 JSP 和 Java Bean 来构建一个网上书店。本章介绍的例子可以分成两 大部分,第一部分是普通程序,用于客户在网上选购图书,第二部分是管理程序,用于在 服务器端处理客户的定单。客户端程序由以下几个部分构成: default.jsp:会员登录界面(首页); checklogon.jsp:检测登录代码和密码是否一致,根据由 JavaBean 返回的结果显示不同 的信息。 BuyerBean:会员的合法性检验所用的 Bean; booklist.jsp:给登录会员显示当前书店中可供选择的图书; addcart.jsp:将所选的图书加入购物车; shoppingcart.jsp:查看购物车的内容; 本 例 的 数 据 库 采 用 Access(.MDB 数 据 库 ), 对 数 据 库 的 访 问 采 用 便 于 理 解 的 JDBC-ODBC 方式,在使用本例前先在本地数据库建立一个 ODBC 数据源:bookstore。 设置步骤如下: (1)在开始->设置->控制面版(Win98、NT4.0)中选取“数据源(ODBC)”;在 Win 2000 Professional 和 Server 中分别位于“开始->设置->控制面版->管理工具”和“开始->程 序->管理工具”下。 (2)启动“数据源(ODBC)”配置程序,界面如图 15-1 所示。 图 15-1 ODBC 数据源管理界面 (3)在图 15-1 中“系统 DSN”选项下单击“添加”按钮,来添加一个系统的数据源 (DSN),则出现如图 15-2 所示数据源驱动程序选择界面: 382
(4)在图 15-2 中选择“Microsoft Access Driver (*.mdb)”单击“完成”加载 Access 数 据库的驱动,则出现如图 15-3 所示数据库 ODBC 安装界面: 图 15-2 数据源驱动程序选择界面 (5)在图 15-3 中单击“选择(S)…”按钮,启动一个类似资源管理器的界面来选择 数据库,如图 15-4 所示,在图 15-4 所示的界面中选择 bookstore.mdb。 图 15-3 数据库 ODBC 安装界面 图 15-4 数据库选择界面 383
15.1 会员登录 做一个网上书店,在顾客开始购书之前,必须要记录用户的一些信息以便用户在不同 的分类、不同的页面购书时,最后能够去收款台统一结帐,而且网上书店同时有许多人在 选购图书,也要求对不同的顾客进行区分,我们可以要求顾客在购书之前进行注册成为会 员,以后只用会员代码和密码即可登录。 为了便于说明现在的电子商务网站,由 JSP 做页面表现,由 Java Bean 做应用逻辑的结 构,在本例中将会员登录程序分成两大部分:一、Java Bean 用于对数据库的操作,验证用 户名和密码是否正确;二、JSP 页面部分,用于供用户会员代码和密码以及显示验证结果。 15.1.1 会员登录 Java Bean 我们网上书店中的会员信息的库结构如图 15-5 所示: 其中 memberID 是主键,用于区分不同的会员,新会员注册时只能使用没有被使用的 图 15-5 会员信息库 用户代码。 在验证时我们只要使用验证用户的 memberID 和其 pwd 是否一致即可判断该用户是否 合法,如果合法则其登录次数加 1。 1.10.2001 下面是用户验证部分的 Java Bean 的代码 清单 15-1 BuyerBean.Java /* *BuyerBean.Java *Copyright © 2000, 2001 by cuug llp. *本 Bean 中有两个 set 方法和两个 get 方法: *setMemberID()— 对 BuyerBean 中的 memberID 属性进行赋值; *setPwd()—对 BuyerBean 中的 pwd 属性进行赋值; *getLogontimes()— 取该会员登录的次数 *getMenberName()获得该会员的真实姓名,用于显示欢迎信息。 *main()方法用于将 BEAN 作为一个 Application 进行测试时使用,正式发布时可以删 除。 384
**/ package cuug; import Java.sql.*; public class BuyerBean { //会员ID //会员姓名 private String memberID = null ; private String memberName = null; private String pwd = null; private int logontimes = -1; private static String strDBDriver = “sun.jdbc.odbc.JdbcOdbcDriver”; private static String strDBUrl = “jdbc:odbc:bookstore”; //连接 private Connection conn =null; private ResultSet rs = null; //结果集 //数据源 , //密码 //登录的次数 //JDBC驱动 public BuyerBean (){ //加载JDBC-ODBC驱动 try { Class.forName(strDBDriver ); } //捕获异常 catch(Java.lang.ClassNotFoundException e){ System.err.println(“BuyerBean():” + e.getMessage()); } } //获得登录次数,登录的会员的名字也在该方法调用时获得 public int getLogontimes(){ String strSql = null; try{ conn = DriverManager.getConnection(strDBUrl); Statement stmt = conn.createStatement(); strSql = “Select logonTimes,membername from buyerInfo where memberID = ‘” + memberID + “’ and pwd =’” + pwd + “’”; rs = stmt.executeQuery(strSql); while (rs.next()){ // 登录的次数 logontimes = rs.getInt(“logonTimes”); 385
//会员姓名 memberName = rs.getString(“membername”); } rs.close(); //如果是合法会员则将其登录次数加1 if (logontimes != -1 ) { strSql = “Update buyerInfo set logonTimes = logonTimes +1 where memberID = ‘” + memberID + “’”; stmt.executeUpdate(strSql); } stmt.close(); conn.close(); } //捕获异常 catch(SQLException e){ System.err.println(“BuyerBean.getLogontimes():” + e.getMessage()); } return logontimes ; } //设置 memberID 属性; public void setMemberID(String ID){ this.memberID = ID; } //设置 pwd 属性 public void setPwd(String password){ this.pwd = password; } //获得该会员的真实姓名,必须在取该会员登录的次数之后才能被赋予正确的值 public String getMemberName(){ return memberName; } //测试Bean中的各个方法是否能够正常工作 public static void main(String args[]){ BuyerBean buyer = new BuyerBean(); buyer.setMemberID(“abcd”); buyer.setPwd(“1234”); System.out.println(buyer.getLogontimes()); 386
System.out.println(buyer.getMemberName()); } } 在 BuyerBean 中用了 package cuug; 在发布到 WEB SERVER 时,可以用 JAR(JDK 中带的打包工具)把编译后的 BuyerBean.class 打包成 JAR 文件在服务器的环境变量 classpath 中给予指定,或者在服务器 classpath 环境变量指定的目录下建一个 cuug 文件夹, 把 BuyerBean.class 放到 cuug 目录下。 15.1.2 会员登录 htm 与 JSP 会员登录要由两个部分来完成,第一个页面用于会员输入其 ID 和密码,当然首页还可 以加一些广告等的其它信息,在本例中略过。 清单 15-2 default.htm CUUG ON LINE BOOK STORE – MEMBER LOGIN

CUUG 网上书店

会员登录页

 

 


请输入会员代号和密码:
会员代码:
密    码:

387
在本例中提供了一个文本框供用户输入会员代号和登录密码,其运行结果如图 15-6 所 示,当会员输入其代码和密码后调用 checklogon.jsp 来验证该网络用户是否是合法会员。 图 15-6 会员登录页 在 checklogon.jsp 中接收从 default.htm 中由用户所填的会员代码和密码,把它传给 BuyerBean,由 BuyerBean 判断该用户的会员代码和密码的正确性,若正确显示欢迎信息; 若不正确,则提供一个重新登录的链接。 Checklogon.jsp 的源代码如下: 清单 15-3 checklogon.jsp <%@ page language=”Java” contentType=”text/html;charset=GB2312”%> CUUG ON LINE BOOK STORE – MEMBER LOGIN

CUUG 网上书店

<% String memberID = request.getParameter(“memberID”); 388
String pwd = request.getParameter(“pwd”); buyer.setMemberID(memberID); buyer.setPwd(pwd); %> <% int logonTimes = buyer.getLogontimes() ; if (logonTimes > 0){ session.putValue("memberID",memberID); %> <%

<%= buyer.getMemberName() %>欢迎你第 <%= logonTimes +1%>次来到 CUUG 网上书店

进入书店

} else{ %>

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

重新登录

<% %> } 登录正确时的结果如图 15-7 所示,错误时的结果如图 15-8 所示。 图 15-7 用户登录正确(会员 abcd 的真实姓名是 cuug001) 389
分享到:
收藏