1、第15章 网上书店实例 在本章中咱们使用JSP和Java Bean来构建一种网上书店。本章简介例子可以提成两大某些,第一某些是普通程序,用于客户在网上选购图书,第二某些是管理程序,用于在服务器端解决客户定单。客户端程序由如下几种某些构成: default.jsp:会员登录界面(首页); checklogon.jsp:检测登录代码和密码与否一致,依照由JavaBean返回成果显示不同信息。 BuyerBean:会员合法性检查所用Bean; booklist.jsp:给登录会员显示当前书店中可供选取图书; addcart.jsp:将所选图书加入购物车; shoppingcart.j
2、sp:查看购物车内容; 本例数据库采用Access(.MDB数据库),对数据库访问采用便于理解JDBC-ODBC方式,在使用本例前先在本地数据库建立一种ODBC数据源:bookstore。 设立环节如下: (1)在开始->设立->控制面版(Win98、NT4.0)中选用“数据源(ODBC)”;在Win Professional和Server中分别位于“开始->设立->控制面版->管理工具”和“开始->程序->管理工具”下。 (2)启动“数据源(ODBC)”配备程序,界面如图15-1所示。 图15-1 ODBC数据源管理界面 (3)在图15-1中“系统DSN”选项下单击“
3、添加”按钮,来添加一种系统数据源(DSN),则浮现如图15-2所示数据源驱动程序选取界面: 图15-2 数据源驱动程序选取界面 (4)在图15-2中选取“Microsoft Access Driver (*.mdb)”单击“完毕”加载Access数据库驱动,则浮现如图15-3所示数据库ODBC安装界面: 图15-3 数据库ODBC安装界面 (5)在图15-3中单击“选取(S)…”按钮,启动一种类似资源管理器界面来选取数据库,如图15-4所示,在图15-4所示界面中选取bookstore.mdb。 图15-4 数据库选取界面 15.1 会员登录 做一种网上书店,
4、在顾客开始购书之前,必要要记录顾客某些信息以便顾客在不同分类、不同页面购书时,最后可以去收款台统一结帐,并且网上书店同步有许多人在选购图书,也规定对不同顾客进行区别,咱们可以规定顾客在购书之迈进行注册成为会员,后来只用会员代码和密码即可登录。 为了便于阐明当前电子商务网站,由JSP做页面体现,由Java Bean做应用逻辑构造,在本例中将会员登录程序提成两大某些:一、Java Bean用于对数据库操作,验证顾客名和密码与否对的;二、JSP页面某些,用于供顾客会员代码和密码以及显示验证成果。 15.1.1 会员登录Java Bean 咱们网上书店中会员信息库构造如图15-5所示:
5、图15-5 会员信息库 其中memberID 是主键,用于区别不同会员,新会员注册时只能使用没有被使用顾客代码。 在验证时咱们只要使用验证顾客memberID和其pwd与否一致即可判断该顾客与否合法,如果合法则其登录次数加1。 下面是顾客验证某些Java Bean代码 清单15-1 BuyerBean.Java /* *BuyerBean.Java 1.10. *Copyright © , by cuug llp. *本Bean中有两个set办法和两个get 办法: *setMemberID()— 对BuyerBean中memberID属性进行赋值; *setPwd
6、)—对BuyerBean中 pwd 属性进行赋值; *getLogontimes()— 取该会员登录次数 *getMenberName()获得该会员真实姓名,用于显示欢迎信息。 *main()办法用于将BEAN作为一种 Application进行测试时使用,正式发布时可以删除。 **/ package cuug; import Java.sql.*; public class BuyerBean { private String memberID = null ; //会员ID private String memberName = null
7、 //会员姓名 private String pwd = null; //密码 private int logontimes = -1; //登录次数 private static String strDBDriver = “sun.jdbc.odbc.JdbcOdbcDriver”; //JDBC驱动 private static String strDBUrl = “jdbc:odbc:bookstore”; //数据源 , private Connection conn =null; //连接 private ResultSet
8、 rs = null; //成果集 public BuyerBean (){ //加载JDBC-ODBC驱动 try { Class.forName(strDBDriver ); } //捕获异常 catch(Java.lang.ClassNotFoundException e){ System.err.println(“BuyerBean():” + e.getMessage()); } } //获得登录次数,登录会员名字也在该办法调用时获得 public int getLogontimes(){
9、 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.ne
10、xt()){ // 登录次数 logontimes = rs.getInt(“logonTimes”); //会员姓名 memberName = rs.getString(“membername”); } rs.close(); //如果是合法会员则将其登录次数加1 if (logontimes != -1 ) { strSql = “Update buyerInfo set logonTimes = logonTimes +1 where memberID = ‘” +
11、 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){
12、 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 BuyerBe
13、an(); buyer.setMemberID(“abcd”); buyer.setPwd(“1234”); System.out.println(buyer.getLogontimes()); System.out.println(buyer.getMemberName()); } } 在BuyerBean中用了package cuug;在发布到WEB SERVER时,可以用JAR(JDK中带打包工具)把编译后BuyerBean.class 打包成JAR文献在服务器环境变量classpath中予以指定,或者在服务器classpath环境变量指定目录下建一种
14、cuug文献夹,把BuyerBean.class放到cuug目录下。
15.1.2 会员登录htm与JSP
会员登录要由两个某些来完毕,第一种页面用于会员输入其ID和密码,固然首页还可以加某些广告等其他信息,在本例中略过。
清单15-2 default.htm
15、DY bgcolor=”white”>
CUUG 网上书店
会员登录页
16、