1、2数据库表(数据字典),带表头(1) 用户表user_info数据项数据类型数据长度备注idInt11用户编号usernameVarchar14用户名passwordvarchar22密码super_idint是否超级用户,1为是(2) 图书表book_info书籍编号name80书籍名称author20作者price4单价photo40存放封面地址Type_id区别图书类型describe250图书描述(3) 购物车表shop_bus物品编号book_name书籍名5allprice6总价(4) 订单表list_info订单编号all_priceall_books500所有书籍名称user_
2、id订单所属ID3详细实现1运行环境:MyEclipse,TomCat6.02数据库连接:mySQL3主要页面,及页面功能描述登录页面:登录页面含有用户的登录功能,如果用户未注册过,还可以通过注册功能注册为会员,然后再登录该系统进入首页,同样,为了方便用户重新输入用户名与密码,还设置了用户名与密码重置的功能。如图1:图1 登录界面主要的登录代码如下:protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException HttpSession sess
3、ion = req.getSession(); UserInfo user = new UserInfo(); user.setUsername(req.getParameter(username); user.setPassword(req.getParameter(password UserInfoDao userInfoDao = new UserInfoDaoImp(); BookInfoDao bookInfoDao = new BookInfoDaoImp(); if (userInfoDao.login(user) Page page = new Page(); page.set
4、PageSize(12); page.setNowPage(1); if (bookInfoDao.allCount() % 12 = 0) page.setAllPage(bookInfoDao.allCount() / 12); else page.setAllPage(bookInfoDao.allCount() / 12 + 1); List list = new ArrayList(); list = bookInfoDao.getAllBooks(page); page.goTo(); ShopBusDao shopBusDao = new ShopBusDaoImp(); sho
5、pBusDao.delAll(); user = userInfoDao.findByUsername(user); session.setAttribute(page, page);bookList, list);user, user); resp.sendRedirect(main.jsp); else req.setAttribute(error, 用户名或密码错误! ServletContext sc = getServletContext(); RequestDispatcher rd = null; rd = sc.getRequestDispatcher(/index.jsp r
6、d.forward(req, resp); 注册页面:注册页面可以让需要注册的玩家填写注册信息,同意具有重置功能,如图2:图2 注册页面注册的的代码如下: if (userInfoDao.reg(user) userInfoDao.addUserInfo(user);success.jsp用户名已存在! ServletContext sc=getServletContext(); RequestDispatcher rd=null; rd=sc.getRequestDispatcher(/reg.jsp查询功能:查询的功能主要是通过选择查询条件书名或者作者,然后按照输入的关键字进行查询如图3和
7、图4: 图3 查询功能 图4查询所得图书列表主要代码如下: BookInfoDao bookInfoDao=new BookInfoDaoImp(); Listlist=bookInfoDao.getBooksByKey(req.getParameter(keyWord HttpSession session=req.getSession(); session.setAttribute(listBookByKey ServletContext sc = getServletContext(); RequestDispatcher rd = null; rd = sc.getRequestDis
8、patcher(/lookBooks.jsp rd.forward(req, resp);通过关键字查找数据库的代码如下:public List getAll(int nowPage,int id) Page page=new Page(); page.setNowPage(nowPage); page.setPageSize(5); if (this.allCount(id) % 5 = 0) page.setAllPage(this.allCount(id) / 5); page.setAllPage(this.allCount(id) / 5 + 1); page.goTo();list
9、=new ArrayList if(page.getNowPage()=page.getAllPage()/假如存在当前页select * from list_info where user_id = ? limit ? stmt.setInt(2, (page.getNowPage() - 1) * page.getPageSize(); stmt.setInt(3, page.getNowPage() * page.getPageSize(); stmt.setInt(1, id); ListInfo listInfo=new ListInfo(); listInfo.setId(rs.g
10、etInt(1); listInfo.setAllPrice(rs.getInt(2); listInfo.setAllBooks(rs.getString(3); listInfo.setUserId(rs.getInt(4); list.add(listInfo); 注销功能:方便用户使用完毕,用于退出网页,同时回到登录页面,注销前后如图7和图8: 图7注销前 图8注销后注销的主要代码如下: session.removeAttribute( req.setAttribute(注销成功!图书信息列表:方便会员查看图书信息,便于选择,和通过点击购买按钮放入购物车,同样为了节省版面具有分页功能,
11、如图9:图9图书信息列表显示图书信息的主要代码如下:public int allCount() int num = 0;SELECT count(*) FROM book_info num = rs.getInt(1); return num;分页功能代码如下: getAllBooks(Page page) SELECT * FROM book_info limit ? stmt.setInt(1, (page.getNowPage() - 1) * page.getPageSize(); stmt.setInt(2, page.getNowPage() * page.getPageSize();4总结通过这次实验,加深了对Ajax+JSP+JavaBean的理解与应用,也把一学期所学的知识都综合应用到一起,并解决了学习中存在的很多疑惑与难点,对实验中的Ajax和JavaBean的应用更熟练更透彻。同样在实验中也发现了自身的许多不足与缺陷相信在接下来的学习中会努力的去解决。