网上书店
需求分析:
程序由以下几个部分构成:
使用JSP和Java Bean来构建一个网上书店,用于客户在网上选购图书.
Index.html:会员登录界面(首页);
check.jsp:检测登录代码和密码是否一致,根据由JavaBean返回的结果显示不同的信息;
adduser.jsp:添加用户;
modification.jsp:修改用户的密码;
de.jsp:给登录会员显示当前书店中可供选择的图书;
add.jsp:将所选的图书加入购物车;
d.jsp:用户没有登陆是可以查看的书籍;
cart.jsp:查看购物车的内容;
系统总体结构:
一、会员登录
做一个网上书店,在顾客开始购书之前,必须要
用户的一些信息以便用户在不同的分类、不同的页面购书时,而且网上书店同时有许多人在选购图书,也要求对不同的顾客进行区分,同时要求顾客在购书之前进行注册成为会员,以后只用会员代码和密码即可登录。
为了便于说明现在的电子商务网站,由JSP做页面表现,由Java Bean做应用逻辑的结构,在本例中将会员登录程序分成两大部分:一、Java Bean用于对数据库的操作,验证用户名和密码是否正确;二、JSP页面部分,用于供用户会员代码和密码以及显示验证结果。
其中,bookISBN是主键,区分不同的图书。Java Bean要根据不同的图书的bookISBN来获得其相应的书名、作者、出版社、价格、简介等信息。同时Java Bean还要有列出书店中所有图书的信息的功能。
二、选书
会员登录之后,合法的用户将可以看到本书店中可供选择的图书,并且将他感兴趣的书放入“购物车”,该用户可以放弃购买其购物车中的任何一本书。在此处我们用BookBean来获取图书的信息,在cart.jsp中显示这些书。
在会员选书部分,我们仍用Java Bean来操作数据库,用jsp来做页面表现。
清单15-4 Visble.Java
*本Bean中的各个方法的功能介绍如下:
*setBookISBN():设置图书的编号,同时根据编号更新相应的书名、作者、出版社、价格*和简介
*getBookList()— 取得书库中全部书的书名、出版社、价格、作者等信息;
*getBookISBN()— 取得当前图书的编号 ;
*getBookName()—取得当前图书的书名;
*getBookAuthor()—取得当前图书的作者;
*getPublisher()—取得当前图书的出版社信息;
*getPrice()—取得当前图书的价格;
* getIntroduce()取得当前图书的简介信息。
*main()方法用于将BEAN作为一个 Application进行测试时使用,正式发布时可以删除。
清单 cart.jsp
<%@ page contentType="text/html;charset=GBK"%>
<%@ page import="java.sql.*" %>
<%@ page import="java.lang.Math.*" %>
网上书店
网上书店
<%
String[] id=cart.getItems();
if(id.length==0)
out.println("你的购物车暂时为空");
else
{
%>
<%
String sql="";
ResultSet rs=null;
out.print("
");
for(int i=0; i");
out.println(""+(i+1)+" | ");
sql="select * from book2 where id="+id[i];
System.out.println(sql);
rs=conn.executeQuery(sql);
if(rs.next())
{
out.println(""+rs.getString("name")+" | ");
out.println(""+rs.getString("hits")+" | ");
}
}
out.print("
");
}
%>
继续购买
三、图书查询
用户一旦确定购物车中所选的图书都是其所要购买的,就要到去提交其定单,以便书店按照相应的方式进行处理。而且,为方便用户是否已经提交定单,及定单的状态,本例提供了定单查询功能。在此处我们用OrderBean来将定单提交到数据库中,在order.jsp中显示并提交定单信息,cart.jsp.jsp来查询定单。
在会员选书部分,我们仍用Java Bean来操作数据库,用jsp来做页面表现。
清单 Visable.java
package bookshop;
import java.sql.*;
public class Visble {
// 分页控制子模块
// ShowOnePage(ResultSet, 页数, 每页记录数)
public String ShowOnePage( ResultSet rs, int Page , int PageSize)
{
String str = "";
for(int i=1; i<=(Page-1) * PageSize+1; i++) {
try {
rs.next();
}catch(Exception e) {}
}
for(int iPage=1; iPage<=PageSize; iPage++) {
str += RsToGbook(rs);
try {
if(!rs.next()) break;
}catch(Exception e) {}
}
return str;
}
// 显示单行记录子模块
public String RsToGbook( ResultSet rs ) {
String tt = "";
try {
tt = "
";
tt = tt + "
";
tt = tt + "书籍名称: | "+ rs.getString("name") + " | ";
tt = tt + "书籍作者: | " + rs.getString("author") + " | ";
tt = tt + "
书籍类别: | " + rs.getString("category") + " | ";
tt = tt + "借出次数: | " + rs.getInt("hits") + " |
";
tt = tt + "书籍介绍: | ";
String memo = rs.getString("introduction");
tt = tt + "" + memo + " |
";
tt = tt + "
";
}catch(SQLException e) {}
return tt;
}
}
四、购物车查询
用jsp页面来显示用户所选的图书的信息,并提供一个提交按纽,为便于程序的管理,我们将显示和处理结果放在一个JSP中,其代码如下:
清单 cart.jsp
<%
String[] id=cart.getItems();
if(id.length==0)
out.println("你的购物车暂时为空");
else
{
%>
<%
String sql="";
ResultSet rs=null;
out.print("
");
for(int i=0; i");
out.println(""+(i+1)+" | ");
sql="select * from book2 where id="+id[i];
System.out.println(sql);
rs=conn.executeQuery(sql);
if(rs.next())
{
out.println(""+rs.getString("name")+" | ");
out.println(""+rs.getString("hits")+" | ");
}
}
out.print("
");
}
%>
继续购买
用Buy.java来添加商品到购物车
/**Buy.java
String item = null;
private void addItem(String name) {
v.addElement(name);
}
private void removeItem(String name) {
v.removeElement(name);
}
public void setItem(String name) {
item = name;
}
public void setSubmit(String s) {
submit = s;
}
public String[] getItems() {
String[] s = new String[v.size()];
v.copyInto(s);
return s;
}
public void processRequest() {
if (submit.equals("add"))
addItem(item);
else if (submit.equals("remove"))
removeItem(item);
reset(); // reset at the end of the request
} // reset
private void reset() {
submit = null;
item = null;
}
}
查询书籍
主页面
用户登陆
用户修改
购买书籍
查询购物车