JSP网上书店系统(论文)
private long userid = 0; add():负责用户的添加。
//注册后返回的用户ID
该类具有的主要方法(省去了属性相关的getX()/setX()操作): delete():负责删除指定ID的用户。 get_alluser():取出书店所有用户的信息。 getGbk():返回指定字符串的GBK编码。 getUserinfo():负责取得用户的详细信息。 update():负责修改用户资料。
getRequest():获取表单数据,并分解存储。 4:op_buy.java
我们把业务逻辑和对订单以及和订单列表的管理集成到了该类当中。 该类具有以下属性:
private javax.servlet.http.HttpServletRequest request; //建立页面请求 private HttpSession session; //页面的session;
private boolean sqlflag = true; //对接收到的数据是否正确 private Vector purchaselist; //显示图书列表向量数组 private Vector allorder; //订购单列表 private Vector order_list; //订单清单列表 private int booknumber = 0; //购书总数量 private float all_price = 0; //购书总价钱
private boolean isEmpty = false; //库中的书数量是否够购买的数 private int leaveBook = 0; //库存数量 private String orderId = \用户订单号 private boolean isLogin = true; //用户是否登录! private int page = 1; //显示的页码
private int pageSize = 15; //每页显示的订单数 private int pageCount = 0; //页面总数 private long recordCount = 0; //查询的记录总数 该类的主要操作(省去了属性相关的getX()/setX()操作) addnew():负责向购物车中添加新购买的图书。 delete():负责从数据库中删除指定ID的订单。 modiShoper():负责修改购物车中已选的图书。 delShoper():负责删除购物车中的物品。
16
JSP网上书店系统(论文)
getAllorder():负责从数据库中的订单列表中查询指定用户的订单列表。 getGbk():获得指定字符串的GBK编码。 getOrder():获得单个订单对象。
payout():提交购物车,把订单插入到数据库中。
update():该方法负责当用户付款后,把数据中对应订单的是否付款标记修改成已付状态。
重要操作:主要介绍addnew() addnew()方法
功能:负责向购物车中添加一条新记录。 参数设计:页面传递的request对象。
返回值:boolean类型,成功返回true,否则返回false。
设计思路:从页面获得表单数据(request对象中)---》获得图书编号等参数值—》判断购买数量是否合法—》如果是可以操作,否则不能操作—》判断是否第一次购买—》如果是第一次购买,按第一次购买操作—》否则查询购买列表,找是否有相应项,有则直接修改数量—》否则添加新记录。
函数代码:
public boolean addnew(HttpServletRequest newrequest) throws Exception{ ????
request = newrequest;
String ID = request.getParameter(\ String Amount = request.getParameter(\ long bookid = 0; int amount = 0; try {
bookid = Long.parseLong(ID); amount = Integer.parseInt(Amount); }
catch (Exception e) { return false; }
if (amount < 1) return false;
session = request.getSession(false);
17
JSP网上书店系统(论文)
if (session == null) { return false; }
purchaselist = (Vector) session.getAttribute(\
String sqlStr = \ try { con=DataBase.getConnection(); stmt=con.createStatement(); rs = stmt.executeQuery(sqlStr); if (rs.next()) {
if (amount > rs.getInt(1)) { leaveBook = rs.getInt(1); isEmpty = true; return false; } }
DataBase.closeResultSet(rs); DataBase.closeStatement(stmt); DataBase.closeConnection(con); }
catch (SQLException e) { return false; }
allorder iList = new allorder(); iList.setBookNo(bookid); iList.setAmount(amount);
boolean match = false; //是否购买过该图书 if (purchaselist == null) { //第一次购买 purchaselist = new Vector(); purchaselist.addElement(iList); }
else { // 不是第一次购买
for (int i = 0; i < purchaselist.size(); i++) {
allorder itList = (allorder) purchaselist.elementAt(i);
18
JSP网上书店系统(论文)
if (iList.getBookNo() == itList.getBookNo()) {
itList.setAmount(itList.getAmount() + iList.getAmount()); purchaselist.setElementAt(itList, i); match = true; break;
} //if name matches结束 } // for循环结束 if (!match)
purchaselist.addElement(iList); }
session.setAttribute(\ return true; }
4.2.2客户界面设计与实现
1:界面头和界面尾设计。
为了提高代码的重用性,我把客户界面部分相同的头和尾作成两个独立的块,分别命名为 head.inc和tail.inc。这两个文件是单纯的html代码,在jsp页面中只要通过以下语句就可以实现对两个文件的调用: <%@include file=’’/bookshop/inc/head.inc”%>
< %@include file=’’/bookshop/inc/head.inc”%> 他们的效果如下图4-1:
图4-1界面头和尾部分显示效果
用户登录界面login.jsp代码如下:
19
JSP网上书店系统(论文)
<%@page contentType=\<%@ page session=\
request.getParameter(\ && !request.getParameter(\ String username =request.getParameter(\String passwd = request.getParameter(%username = new String(username.getBytes(\passwd = new String(passwd.getBytes(\login.setUsername(username); login.setPasswd(passwd); //out.print(username+passwd); if (login.execute()){ session.setAttribute(\String userid = Long.toString(login.getUserid()); session.setAttribute(\response.sendRedirect(\ <% }else { mesg = \登录出错!\; } 2:用户登录模块的设计。 为了检验用户是否合法,所以需要输入用户名和密码来验证用户的合法性,用户登录模块刚好完成这样的一个功能。该模块需要用到login.java(见4.4.3 1)这个bean。需要设计一个表单让用户输入信息。效果图如下:图4-2 }%> 20