首页 > 代码库 > 网上书城项目
网上书城项目
实习就要结束了,最终要上交的是网上书城项目和一份文档。接下来简要介绍一下项目。
项目是根据三层架构来写,数据访问层(DAO层)、系统业务逻辑控制处理层(servlet层)、和界面层(jsp)。
首先在DAO层构造好SQL语句,对数据库进行操作,在servlet层调用Dao层相关方法进行相应的逻辑处理,JSP负责构造界面以及显示数据。
下面贴出代码,仅供参考,一些功能的具体实现在功能说明时有所介绍,只贴一些比较重要的部分的代码,大家主要重在理解。
此次项目,我感觉比较困难的部分是 加入购物车 部分和订单处理这部分。
加入购物车部分,一定要对集合操作非常熟悉才可以比较好的处理,另外还有合理的采用session,另外比较好的是构造一个BookShopping实体来帮助我们处理购物车部分的计算价格问题;
订单处理部分,生成订单,就是根据购物车里的有关书的一些信息,将这些信息插入order表中,会自动生成一个订单编号,因为当前购物车订单号相同;
生成订单,由book表、order表拼凑成items表;
生成历史订单,是根据当前登录用户在Order表中查找到此用户所有的订单号,再根据订单号在items表中查到所有的订单详情。
注册功能
package com.mm.Dao.impl;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;import com.mm.Dao.UserDao;import com.mm.Utils.JDBCUtils;import com.mm.bean.User;//Dao层 数据库接口层public class UserDaoImpl implements UserDao { public boolean addUser(User user) { // TODO Auto-generated method stub Connection con = null; PreparedStatement ps = null; ResultSet rs = null; try { String sql = "insert into user values(?,?,?,?)"; con = JDBCUtils.getconnection(); ps = con.prepareStatement(sql); ps.setString(1, user.getUsername()); ps.setString(2, user.getPassword()); ps.setString(3, user.getEmail()); ps.setString(4, user.getAddress()); int count = ps.executeUpdate(); System.out.print("受影响的行数是:"+count); return true; } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ JDBCUtils.release(rs, ps, con); } return false; } public User findUser(String name, String password) { // TODO Auto-generated method stub Connection con = null; PreparedStatement ps = null; ResultSet rs = null; User user = new User(); String sql = "select * from user where username = ? and password = ?"; try { con = JDBCUtils.getconnection(); ps = con.prepareStatement(sql); ps.setString(1, name); ps.setString(2, password); rs = ps.executeQuery(); while(rs.next()){ try { user.setUsername(rs.getString("username")); user.setPassword(rs.getString("password")); user.setEmail(rs.getString("email")); user.setAddress(rs.getString("address")); return user; } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ JDBCUtils.release(rs, ps, con); } } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ JDBCUtils.release(rs, ps, con); } return null; } }
1
//这层可以不要,将它归并到servlet里。
package com.mm.service.impl; 2 3 import com.mm.Dao.UserDao; 4 import com.mm.Dao.impl.UserDaoImpl; 5 import com.mm.bean.User; 6 import com.mm.service.UserService; 7 8 public class UserServiceImpl implements UserService { 9 10 public User login(String username, String password) {11 // TODO Auto-generated method stub12 UserDao dao = new UserDaoImpl();13 User user = dao.findUser(username, password); 14 return user;15 }16 17 public boolean register(User user) {18 // TODO Auto-generated method stub19 UserDao dao = new UserDaoImpl();20 if(dao.addUser(user)){21 return true;22 }23 return false;24 25 }26 27 }
1 package com.mm.servlet; 2 3 import java.io.IOException; 4 import java.io.PrintWriter; 5 import java.util.HashMap; 6 import java.util.Map; 7 8 import javax.servlet.ServletException; 9 import javax.servlet.http.HttpServlet;10 import javax.servlet.http.HttpServletRequest;11 import javax.servlet.http.HttpServletResponse;12 13 import com.mm.Dao.UserDao;14 import com.mm.Dao.impl.UserDaoImpl;15 import com.mm.bean.User;16 import com.mm.service.UserService;17 import com.mm.service.impl.UserServiceImpl;18 19 20 21 public class RegisterServlet extends HttpServlet {22 23 public void doGet(HttpServletRequest request, HttpServletResponse response)24 throws ServletException, IOException {25 doPost(request,response);26 27 }28 29 30 Map<String, String> errors = new HashMap<String, String>();31 public void doPost(HttpServletRequest request, HttpServletResponse response)32 throws ServletException, IOException { 33 //获取参数值34 String username = request.getParameter("username");35 String password = request.getParameter("password");36 String repassword = request.getParameter("repassword");37 String email = request.getParameter("email");38 String address = request.getParameter("address");39 40 //组装成一个user对象41 User user = new User();42 user.setUsername(username);43 user.setPassword(password);44 user.setEmail(email); 45 user.setAddress(address);46 //调用dao 来注册47 UserService dao = new UserServiceImpl();48 boolean re = dao.register(user);49 50 //根据注册结果来跳转 51 if(re){52 request.getRequestDispatcher("register_success.jsp").forward(request, response);53 }54 55 }else{56 request.setAttribute("errors", errors);57 request.getRequestDispatcher("register.jsp").forward(request, response);58 }59 60 } 65 }66 67 68
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 <% 3 String path = request.getContextPath(); 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 5 Map<String,String> errors = (HashMap<String,String>)request.getAttribute("errors"); 6 %> 7 8 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 9 <html>10 <head>11 <base href="http://www.mamicode.com/">12 13 <title>注册页面</title>14 15 <link type="text/css" rel="stylesheet" href="http://www.mamicode.com/css/style.css" />16 <script type="text/javascript" src="http://www.mamicode.com/jquery.js"></script>17 18 <script type="text/javascript">19 function validate(){20 var username = document.getElementById("user1").value;21 var password = document.getElementById("pwd1").value;22 var repassword = document.getElementById("rpwd1").value;23 var email = document.getElementById("email1").value;24 var address = document.getElementById("address1").value;25 var reg1 = /[a-zA-Z]\w*/;26 var reg2 = /\w+([-+.‘]\w+)*@\w+([-.]\w+)*.\w+([-.]\w+)*/;27 if(username.length<=0) alert("用户名不能为空!");28 else if(!reg1.test(username)) alert("用户名格式不正确!");29 else if(password.length<6) alert("密码长度必须大于等于6");30 else if(password!=repassword) alert("两次密码不一致!");31 else if(!reg2.test(email)) alert("邮箱格式不正确!!");32 else document.form[1].submit();33 }34 </script>35 36 </head>37 38 <body style="text-align:center">39 <div id="header" class="wrap">40 <div id="logo">北大青鸟网上书城</div>41 <div id="navbar">42 <form method="get" name="search" action="">43 搜索:<input class="input-text" type="text" name="keywords" /><input class="input-btn" type="submit" name="submit" value="" />44 </form>45 </div>46 </div>47 <div id="register">48 <div class="title">49 <h2>欢迎注册北大青鸟网上书城</h2>50 </div>51 <div class="steps">52 <ul class="clearfix">53 <li class="current">1.填写注册信息</li>54 <li class="unpass">2.注册成功</li>55 </ul>56 </div>57 <form method="post" action="RegisterServlet" id="registerForm">58 <dl>59 <dt>用 户 名:</dt>60 <dd><input id = "user1" class="input-text" type="text" name="username" /><span>${errors.username }</span></dd>61 <dt>密 码:</dt>62 <dd><input id = "pwd1" class="input-text" type="password" name="password" /><span>${errors.password}</span></dd>63 <dt>确认密码:</dt>64 <dd><input id = "rpwd1" class="input-text" type="password" name="repassword" /><span>${errors.repassword }</span></dd>65 <dt>Email地址:</dt>66 <dd><input id = "email1" class="input-text" type="text" name="email" /><span>${errors.email }</span></dd>67 <dt>通信地址:</dt>68 <dd><input id = "address1" class="input-text" type="text" name="address" /></dd>69 <dt></dt>70 <dd class="button"><input class="input-reg" type="submit" name="register" onClick="validate()"/></dd>71 </dl>72 </form>73 </div>74 <div id="footer" class="wrap">75 北大青鸟网上书城 © 版权所有76 77 </div>78 </body>79 </html>
登录功能
登录功能用到cookie会话技术,可以回显用户名密码;前提是复选框要选中
1 package com.mm.servlet; 2 3 import java.io.IOException; 4 import java.io.PrintWriter; 5 6 import javax.mail.Session; 7 import javax.servlet.ServletException; 8 import javax.servlet.http.Cookie; 9 import javax.servlet.http.HttpServlet;10 import javax.servlet.http.HttpServletRequest;11 import javax.servlet.http.HttpServletResponse;12 import javax.servlet.http.HttpSession;13 14 import com.mm.bean.User;15 import com.mm.service.UserService;16 import com.mm.service.impl.UserServiceImpl;17 18 public class LoginServlet extends HttpServlet {19 20 21 public void doGet(HttpServletRequest request, HttpServletResponse response)22 throws ServletException, IOException {23 //得到页面输入的用户名和密码24 String username = request.getParameter("username");25 String password = request.getParameter("password");26 String remember = request.getParameter("remember");27 //从数据库中查找是否存在28 UserService us = new UserServiceImpl();29 User user = us.login(username, password); 30 //找到 显示登陆成功,跳转到 User主页,跳转不成功,在login.jsp31 //user不为空说明此用户真实存在32 if(user != null){33 //如果用户找到了,那就说明是合法用户34 //把用户放入cookies中35 Cookie cookie = new Cookie("username",username);36 Cookie cookie1 = new Cookie("password",password);37 if("on".equals(remember)){ 38 cookie.setMaxAge(300);39 cookie1.setMaxAge(300);40 }else{41 cookie.setMaxAge(0);42 cookie1.setMaxAge(0);43 }44 45 response.addCookie(cookie);46 response.addCookie(cookie1);47 48 //此用户存到session中49 request.getSession().setAttribute("username", username);50 51 52 response.setHeader("refresh", "3;url=BookServlet?op=list");53 54 }else{//非法用户55 request.setAttribute("error", "用户名或密码错误");56 57 request.getRequestDispatcher("login.jsp").forward(request, response);58 59 60 }61 62 63 }64 65 66 public void doPost(HttpServletRequest request, HttpServletResponse response)67 throws ServletException, IOException {68 doGet(request,response);69 70 }71 72 }
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <base href="http://www.mamicode.com/"> <title>登录界面</title> <link type="text/css" rel="stylesheet" href="http://www.mamicode.com/css/style.css" /> </head> <body style="text-align:center"> <div id="header" class="wrap"> <div id="logo">北大青鸟网上书城</div> <div id="navbar"> <form method="get" name="search" action=""> 搜索:<input class="input-text" type="text" name="keywords" /> <input class="input-btn" type="submit" name="submit" value="" /> </form> </div></div><div id="login"><% //拿到错误信息 String name = (String) request.getAttribute("error") ; if(name != null) out.write("<font color = red>" + name + "</font>") ; String username = "" ; String password = "" ; //拿到客户端携带的所有的Cookie Cookie[] cs = request.getCookies() ; //循环判断,如果拿到cookies for (int i = 0; cs !=null && i < cs.length; i++) { Cookie c = cs[i] ; if(c.getName().equals("username")){ //说明找到了存储用户名的cookie username = c.getValue() ; } if(c.getName().equals("password")){ //说明找到了存储密码的Cookie password = c.getValue() ; } } %> <h2>用户登陆</h2> <form method="post" action="LoginServlet"> <dl> <dt>用户名: </dt> <dd><input class="input-text" type="text" name="username" value = "http://www.mamicode.com/"/><span>${error}</span></dd> <dt>密 码: </dt> <dd><input class="input-text" type="password" name="password" value = "http://www.mamicode.com/"/></dd> <dt><input class = "input-text" type= "checkbox" name = "remember" value = "http://www.mamicode.com/on"/></dt> <dd>是否记住此用户</dd> <dt></dt> <dd class="button"><input class="input-btn" type="submit" name="submit" value="" /> <input class="input-reg" type="button" name="register" value="" onclick="window.location=‘register.jsp‘;" /></dd> </dl> </form></div><div id="footer" class="wrap"> 北大青鸟网上书城 © 版权所有</div> </body></html>
注销功能
登录时将此用户存入session中,方便后边的使用;注销时将此用户从session中删除即可。
1 HttpSession se = request.getSession(false);2 if(se==null) {3 response.sendRedirect("login.jsp");4 return ; 5 }6 7 se.removeAttribute("username");8 response.sendRedirect("login.jsp");
加入购物车功能
方便对购物车进行管理,创建了一个购物车的实体,计算出了每种书花费的价格
1 package com.mm.bean; 2 3 public class BookShopping { 4 private Book book; 5 private int count;//购买的数量 6 private double totalprice;//总价格 7 public BookShopping(Book book , int count) { 8 this.book = book; 9 this.count = count;10 this.totalprice = this.book.getBookprice()*this.count;11 }12 public Book getBook() {13 return book;14 }15 public void setBook(Book book) {16 this.book = book;17 }18 19 public int getCount() {20 return count;21 }22 public void setCount(int count) {23 this.count = count;24 }25 public double getTotalprice() {26 return totalprice;27 }28 public void setTotalprice(double totalprice) {29 this.totalprice = totalprice;30 }31 32 33 }
1 package com.mm.servlet; 2 3 import java.io.IOException; 4 import java.util.HashMap; 5 import java.util.List; 6 import java.util.Map; 7 import java.util.Set; 8 9 import javax.servlet.ServletException;10 import javax.servlet.http.HttpServlet;11 import javax.servlet.http.HttpServletRequest;12 import javax.servlet.http.HttpServletResponse;13 import javax.servlet.http.HttpSession;14 15 import com.mm.Dao.impl.BookDaoImpl;16 import com.mm.bean.Book;17 18 public class AddCartServlet extends HttpServlet {19 20 21 public void doGet(HttpServletRequest request, HttpServletResponse response)22 throws ServletException, IOException {23 doPost(request,response);24 }25 26 //将从User首页选中的加入购物车,还要根据书的本数还要计算价格27 public void doPost(HttpServletRequest request, HttpServletResponse response)28 throws ServletException, IOException {29 //从界面拿到选中的即需要加入购物车的所有图书的Id号30 String[] bookIds =(String[])request.getParameterValues("bookid");31 Map<String,Integer> bookMap = (Map<String, Integer>) request.getSession().getAttribute("bookMap");32 if(bookMap==null) bookMap = new HashMap();33 //遍历选择的商品34 if(bookIds!=null&&bookIds.length>0){35 for(String bookId: bookIds){36 //添加到购物车37 Integer count = bookMap.get(bookId);//得到bookid对应的数量38 if(count==null) bookMap.put(bookId, 1);39 else{40 bookMap.put(bookId, count+1);41 }42 }43 }44 45 //将购物车里书的id及选购的本数放入sesssion中, request.getSession().setAttribute("bookMap",bookMap); 46 47 request.getRequestDispatcher("goon.jsp").forward(request, response);48 }49 50 }
1 <%@ page language="java" import="java.util.*,com.mm.bean.*,com.mm.Dao.*,com.mm.Dao.impl.*" pageEncoding="UTF-8"%> 2 <%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core"%> 3 <% 4 String path = request.getContextPath(); 5 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 6 7 Map<String,Integer> bookMap =(Map<String,Integer>)request.getSession().getAttribute("bookMap"); 8 BookDao dao = new BookDaoImpl(); 9 Iterator keys = bookMap.keySet().iterator(); 10 double hj = 0; 11 List<BookShopping> list = new ArrayList(); 12 while(keys.hasNext()){ 13 String key = (String)keys.next();//book的id 14 Book book = dao.findbookById(Integer.parseInt(key)); 15 int count = bookMap.get(key); 16 BookShopping bs = new BookShopping(book,count);//bookshopping里的构造函数,把价格算出来了。 17 hj+=bs.getTotalprice();//算总的合计,累计叠加 18 list.add(bs); 19 } 20 21 request.getSession().setAttribute("bookshoppinglist",list); 22 23 24 String username = (String)request.getSession().getAttribute("username"); 25 26 %> 27 28 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 29 <html> 30 <head> 31 <base href="http://www.mamicode.com/"> 32 33 <title>购物车界面</title> 34 <link type="text/css" rel="stylesheet" href="http://www.mamicode.com/css/style.css" /> 35 <script type="text/javascript" src = "http://www.mamicode.com/jquery.js"></script> 36 <script type="text/javascript"> 37 </script> 38 39 </head> 40 41 <body style="text-align:center"> 42 <div id="header" class="wrap"> 43 <div id="logo">北大青鸟网上书城</div> 44 <div id="navbar"> 45 <div class="userMenu"> 46 <ul> 47 <li><a href="http://www.mamicode.com/showbook.jsp">欢迎您:${username }</a></li> 48 <li><a href="http://www.mamicode.com/orderlist.jsp">我的订单</a></li> 49 <li class="current"><a href="http://www.mamicode.com/shopping.jsp">购物车</a></li> 50 <li><a href="http://www.mamicode.com/exit.jsp">注销</a></li> 51 </ul> 52 </div> 53 <form method="get" name="search" action=""> 54 搜索:<input class="input-text" type="text" name="keywords" /><input class="input-btn" type="submit" name="submit" value="" /> 55 </form> 56 </div> 57 </div> 58 <div id="content" class="wrap"> 59 <div class="list bookList"> 60 <form method="post" name="shoping" action="OrderServlet?op=list"> 61 <table> 62 <tr class="title"> 63 <th class="view">图片预览</th> 64 <th>库存</th> 65 <th>书名</th> 66 <th class="nums">数量</th> 67 <th class="nums">单价</th> 68 <th class="price">总价</th> 69 70 </tr> 71 72 <c:forEach var="obj" items = "${bookshoppinglist}"> 73 <tr> 74 <td>${obj.book.bookimg}</td> 75 <td>${obj.book.booksave}</td> 76 <td>${obj.book.bookname}</td> 77 <td>${obj.count }</td> 78 <td>${obj.book.bookprice }</td> 79 <td>${obj.totalprice }</td> 80 </tr> 81 </c:forEach> 82 83 </table> 84 85 86 <div class="button"> 87 <h4>总价:¥<span><%=hj %></span>元</h4> 88 <a href="http://www.mamicode.com/BookServlet?op=list">返回继续购物</a> 89 <input id = "buy" class="input-chart" type="submit" name="submit" value="" /> 90 </div> 91 92 </form> 93 </div> 94 </div> 95 <div id="footer" class="wrap"> 96 北大青鸟网上书城 © 版权所有 97 98 </div> 99 </body>100 </html>
主要用到EL,JSTL简化编程
生成订单功能
1 package com.mm.Dao.impl; 2 3 import java.sql.Connection; 4 import java.sql.PreparedStatement; 5 import java.sql.ResultSet; 6 import java.sql.SQLException; 7 8 import com.mm.Dao.OrderDao; 9 import com.mm.Utils.JDBCUtils;10 import com.mm.bean.Orders;11 12 public class OrderDaoImpl implements OrderDao {13 //向数据库order表中插入一行数据,oid自增,可以自动生成oid14 public int addNewOrder(Orders order) {15 Connection con = null ;16 PreparedStatement ps = null;17 ResultSet rs = null;18 int oid = 0;19 String sql = "insert into orders(date,user_name,state,totalmoney) values(?,?,?,?)";20 try {21 con = JDBCUtils.getconnection();22 ps = con.prepareStatement(sql);23 ps.setString(1, order.getDate());24 ps.setString(2, order.getUser_name());25 ps.setInt(3, order.getState());26 ps.setDouble(4, order.getTotalmoney());27 int count = ps.executeUpdate();28 System.out.println("受影响的行数是:"+count);29 if(count == 1){30 String s = "select oid from orders where date = ? and user_name = ? and state = ? and totalmoney = ?";31 ps = con.prepareStatement(s);32 ps.setString(1,order.getDate());33 ps.setString(2, order.getUser_name());34 ps.setInt(3,order.getState());35 ps.setDouble(4, order.getTotalmoney());36 rs = ps.executeQuery();37 while(rs.next()){38 oid = rs.getInt(1);//返回第一条记录39 } 40 }41 42 return oid;43 } catch (SQLException e) {44 // TODO Auto-generated catch block45 e.printStackTrace();46 }finally{47 JDBCUtils.release(rs, ps, con);48 }49 return oid; 50 }51 52 53 public static void main(String args[]){54 OrderDao d = new OrderDaoImpl();55 Orders o = new Orders();56 o.setDate("2016-09-09");57 o.setState(1);58 o.setUser_name("mxn");59 o.setTotalmoney(23);60 61 int a = d.addNewOrder(o);62 System.out.println(a);63 }64 65 }
1 package com.mm.servlet; 2 3 import java.io.IOException; 4 import java.text.SimpleDateFormat; 5 import java.util.ArrayList; 6 import java.util.Date; 7 import java.util.Iterator; 8 import java.util.List; 9 import java.util.Map; 10 import java.util.Set; 11 12 import javax.servlet.ServletException; 13 import javax.servlet.http.HttpServlet; 14 import javax.servlet.http.HttpServletRequest; 15 import javax.servlet.http.HttpServletResponse; 16 17 import com.mm.Dao.OrderDao; 18 import com.mm.Dao.impl.ItemDAOImp; 19 import com.mm.Dao.impl.OrderDaoImpl; 20 import com.mm.bean.Book; 21 import com.mm.bean.BookShopping; 22 import com.mm.bean.ItemsIn; 23 import com.mm.bean.Orders; 24 25 public class OrderServlet extends HttpServlet { 26 27 28 public void doGet(HttpServletRequest request, HttpServletResponse response) 29 throws ServletException, IOException { 30 doPost(request,response); 31 32 } 33 34 35 public void doPost(HttpServletRequest request, HttpServletResponse response) 36 throws ServletException, IOException { 37 38 String op = request.getParameter("op"); 39 40 if(op==null) op="list"; 41 if("list".equals(op)){ 42 43 String username = (String)request.getSession().getAttribute("username"); 44 int state = 1; 45 String date = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date()); 46 System.out.println("时间是"+date); 47 Orders order = new Orders(); 48 order.setDate(date); 49 order.setState(state); 50 order.setUser_name(username); 51 //order.setTotalmoney(totalmoney); 52 OrderDao dao = new OrderDaoImpl();//根据一行数据就可以得到订单的oid; 53 int oid = dao.addNewOrder(order);//从Order表中根据order的其他信息得到order的oid ; 54 System.out.println("生成的订单编号是"+oid); 55 56 57 List<ItemsIn> li = new ArrayList(); 58 //得到bookshopping 集合 59 List<BookShopping> list = (List<BookShopping>) request.getSession().getAttribute("bookshoppinglist"); 60 if(list!=null){ 61 Iterator<BookShopping> it = list.iterator(); 62 while(it.hasNext()){ 63 BookShopping bs = it.next(); 64 bs.getBook();//得到图书实体 65 bs.getCount();//得到图书对应的本书 66 67 System.out.println("图书对应的本数:"+bs.getCount()); 68 69 70 ItemsIn in = new ItemsIn(); 71 in.setBook_id(bs.getBook().getBookid()); 72 in.setNumber(bs.getCount()); 73 in.setO_id(oid); 74 in.setSinglePrice(bs.getBook().getBookprice()); 75 in.setSumMoney(bs.getTotalprice()); 76 77 li.add(in); 78 79 } 80 81 ItemDAOImp d = new ItemDAOImp(); 82 int c = d.insertItem(li); 83 System.out.println(" :"+c); 84 }else{ 85 System.out.println("list为null"); 86 } 87 88 89 90 request.getSession().setAttribute("oid",oid ); 91 response.sendRedirect("shopping-success.html"); 92 93 94 } 95 96 97 98 } 99 100 }
订单显示功能 & 查看历史订单
1 package com.mm.Dao.impl; 2 3 import java.sql.Array; 4 import java.sql.Connection; 5 import java.sql.Date; 6 import java.sql.PreparedStatement; 7 import java.sql.ResultSet; 8 import java.sql.SQLException; 9 import java.text.SimpleDateFormat; 10 import java.util.ArrayList; 11 import java.util.List; 12 13 import com.mm.Dao.IItemDAO; 14 import com.mm.Utils.JDBCUtils; 15 import com.mm.bean.ItemsIn; 16 import com.mm.bean.ItemsOut; 17 18 public class ItemDAOImp implements IItemDAO { 19 Integer oid = 1; 20 public Integer getOid() { 21 return oid; 22 } 23 public void setOid(Integer oid) { 24 this.oid = oid; 25 } 26 27 28 // 找到某页的订单详情数据 29 public List<ItemsOut> getPageList(int currentPage, int count) { 30 31 32 Connection con = null; 33 PreparedStatement ps = null; 34 ResultSet rs = null; 35 List<ItemsOut> list = new ArrayList(); 36 try { 37 String sql = "SELECT bookname,state,oid,DATE,user_name,summoney,bookimg,singleprice,number FROM book,orders,items WHERE items.o_id = orders.oid AND items.book_id=book.bookid AND orders.oid="+oid+" limit ?,?"; 38 con = JDBCUtils.getconnection(); 39 ps = con.prepareStatement(sql); 40 //ps.setInt(1, oid); 41 ps.setInt(1, (currentPage - 1) * count);// 某页的起始数据 42 ps.setInt(2, count);// 每页显示的数据数 43 rs = ps.executeQuery(); 44 while (rs.next()) { 45 list.add(toitem(rs)); 46 } 47 return list; 48 } catch (SQLException e) { 49 // TODO Auto-generated catch block 50 e.printStackTrace(); 51 } finally { 52 JDBCUtils.release(rs, ps, con); 53 } 54 return null; 55 } 56 57 58 String username = "mxn"; 59 // 根据姓名,获取到此姓名订单的所有数据,并分页显示。 60 public List<ItemsOut> getPageList1(int currentPage, int count) { 61 62 Connection con = null; 63 PreparedStatement ps = null; 64 ResultSet rs = null; 65 List<Integer> list = new ArrayList(); 66 List<ItemsOut> l = new ArrayList(); 67 // 根据姓名,从order表中先获取到此用户所有的订单号! 68 String sql1 = "select oid from orders where user_name = ?"; 69 try { 70 con = JDBCUtils.getconnection(); 71 ps = con.prepareStatement(sql1); 72 ps.setString(1, username); 73 rs = ps.executeQuery(); 74 int i=0; 75 while (rs.next()) { 76 list.add((Integer)rs.getInt("oid")); 77 //System.out.println("list[新加的值是]"+list.get(i)); 78 i++; 79 } 80 String in=""; 81 for (int j = 0; j < list.size()-1; j++) { 82 in=in+list.get(j)+","; 83 } 84 in+=list.get(list.size()-1); 85 // System.out.println("in---------------"+in); 86 //根据订单号从多张表中查找到需要显示的订单数据 87 String sql = "SELECT bookname,state,oid,DATE,user_name,summoney,bookimg,singleprice,number FROM book,orders,items WHERE items.o_id = orders.oid AND items.book_id=book.bookid AND orders.oid in("+in+") limit ?,?"; 88 ps = con.prepareStatement(sql); 89 ps.setInt(1, (currentPage - 1) * count);// 某页的起始数据 90 ps.setInt(2, count);// 每页显示的数据数 91 rs = ps.executeQuery(); 92 while (rs.next()) { 93 l.add(toitem(rs)); 94 } 95 return l; 96 } catch (SQLException e) { 97 // TODO Auto-generated catch block 98 e.printStackTrace(); 99 }finally{100 JDBCUtils.release(rs, ps, con);101 }102 103 return null; 104 }105 106 107 private ItemsOut toitem(ResultSet rs) {108 ItemsOut io = new ItemsOut();109 try {110 io.setBookimg(rs.getString("bookimg"));111 io.setBookname(rs.getString("bookname"));112 io.setDate(rs.getString("date"));113 io.setNumber(rs.getInt("number"));114 io.setSinglePrice(rs.getDouble("singleprice"));115 io.setSumMoney(rs.getDouble("summoney"));116 io.setUsername(rs.getString("user_name"));117 io.setState(rs.getInt("state"));118 io.setO_id(rs.getInt("oid"));119 return io;120 } catch (SQLException e) {121 // TODO Auto-generated catch block122 e.printStackTrace();123 }124 125 return null;126 }127 128 public int getTotalcount() {129 Connection con = null;130 PreparedStatement ps = null;131 ResultSet rs = null;132 try {133 con = JDBCUtils.getconnection();134 ps = con.prepareStatement("select count(*) from items where items.o_id=3");135 rs = ps.executeQuery();136 if (rs.next()) {137 return rs.getInt(1);// 返回第一条记录138 }139 } catch (Exception e) {140 e.printStackTrace();141 } finally {142 JDBCUtils.release(rs, ps, con);143 }144 return 0;145 }146 147 public int getTotalcount1() {148 // TODO Auto-generated method stub149 int reCount=0;150 Connection con = null;151 PreparedStatement ps = null;152 ResultSet rs = null;153 String sql = "select oid from orders where user_name = ?"; 154 List<Integer> list = new ArrayList();155 try {156 con = JDBCUtils.getconnection();157 ps = con.prepareStatement(sql);158 ps.setString(1, username);159 rs = ps.executeQuery();160 int i=0;161 while (rs.next()) {162 list.add((Integer)rs.getInt("oid"));163 System.out.println("list[新加的值是]"+list.get(i));164 i++;165 } 166 String in="";167 for (int j = 0; j < list.size()-1; j++) {168 in=in+list.get(j)+",";169 }170 in+=list.get(list.size()-1);171 String sqlcont="select count(itemid) from items where items.o_id in("+in+")";172 ps = con.prepareStatement(sqlcont);173 rs = ps.executeQuery();174 if (rs.next()) {175 reCount=rs.getInt(1);176 }177 } catch (Exception e) {178 e.printStackTrace();179 } finally {180 JDBCUtils.release(rs, ps, con);181 }182 return reCount;183 }184 185 public String getUsername() {186 return username;187 }188 189 public void setUsername(String username) {190 this.username = username;191 }192 193 194 //向订单表中插入数据195 public int insertItem(List<ItemsIn> list){196 Connection con = null;197 PreparedStatement ps = null;198 ResultSet rs = null ; 199 int c = 0 ; 200 for(ItemsIn in:list){201 String sql = "insert into items (o_id,summoney,singleprice,number,book_id) values(?,?,?,?,?);";202 try {203 con = JDBCUtils.getconnection();204 ps = con.prepareStatement(sql);205 ps.setInt(1, in.getO_id());206 ps.setDouble(2, in.getSumMoney());207 ps.setDouble(3, in.getSinglePrice());208 ps.setInt(4, in.getNumber()); 209 ps.setInt(5, in.getBook_id());210 211 System.out.println("eeeeeeeeeeeeeeeeeeeeeeee");212 c = ps.executeUpdate();213 System.out.println("所影响的行数是:"+c);214 215 if(c == 1){216 continue; //217 }else{218 break;219 } 220 } catch (SQLException e) {221 // TODO Auto-generated catch block222 e.printStackTrace();223 }finally{224 JDBCUtils.release(rs, ps, con);225 } 226 return c;227 }228 return c;229 230 231 232 }233 234 235 236 public static void main(String[] args) {237 // List<Integer> list = new ArrayList();238 ItemDAOImp id = new ItemDAOImp();239 // id.setUsername("ss");240 // List<ItemsOut> list1 = id.getPageList1(1, 2);241 // int s = id.getTotalcount1();242 // System.out.println("总计路数666666666666666666666666666666----------"+s);243 // for (ItemsOut i : list1) {244 // System.out.println(i.getSumMoney());245 // }246 // 247 // System.exit(0);248 // }249 ItemsIn in = new ItemsIn();250 in.setBook_id(1);251 in.setNumber(2);252 in.setO_id(2);253 in.setSinglePrice(22);254 in.setSumMoney(23);255 List<ItemsIn> list = new ArrayList();256 list.add(in);257 id.insertItem(list);258 }259 }
1 package com.mm.servlet; 2 3 import java.io.IOException; 4 import java.io.PrintWriter; 5 import java.util.List; 6 import java.util.Map; 7 8 import javax.servlet.ServletException; 9 import javax.servlet.http.HttpServlet;10 import javax.servlet.http.HttpServletRequest;11 import javax.servlet.http.HttpServletResponse;12 13 import com.mm.Dao.impl.ItemDAOImp;14 import com.mm.bean.Book;15 import com.mm.bean.ItemsOut;16 import com.mm.bean.User;17 18 public class MyItemsServlet extends HttpServlet {19 20 21 public void doGet(HttpServletRequest request, HttpServletResponse response)22 throws ServletException, IOException {23 doPost(request,response);24 }25 26 27 public void doPost(HttpServletRequest request, HttpServletResponse response)28 throws ServletException, IOException {29 String op = request.getParameter("op");30 ItemDAOImp id = new ItemDAOImp();31 //从session中拿到oid32 id.setOid((Integer)request.getSession().getAttribute("oid"));33 34 35 //从session中拿到useranme36 id.setUsername((String)request.getSession().getAttribute("username"));37 38 39 if(op == null) op = "list";40 //查看订单详情41 if("list".equals(op)){42 //接收 显示所有的请求信息 43 44 45 //从页面超链传来的 每页显示的数量count46 String count = request.getParameter("count");47 if(count == null) count = "10";//默认每页10条48 String curpageIndex = request.getParameter("curpage");//得到当前页的索引49 if(curpageIndex == null) curpageIndex = "1";//默认是首页50 //根据传来的参数 找到 当前页的数据集list51 List<ItemsOut> list= id.getPageList(Integer.parseInt(curpageIndex), Integer.parseInt(count));52 53 //得到总的数据量54 int z = id.getTotalcount();55 56 //根据传来的参数得到总页数57 int pagenum = (z+Integer.parseInt(count)-1)/Integer.parseInt(count);58 59 //将得到的当前页的数据集、总页数、和当前页返回给页面,页面进行显示60 request.setAttribute("list", list);61 62 request.setAttribute("pagecount", pagenum);63 64 request.setAttribute("currentPageIndex",curpageIndex); 65 66 request.getRequestDispatcher("orderlist.jsp").forward(request, response);67 return ;68 69 70 }else if("find".equals(op)){//查看历史订单71 72 String username = (String)request.getSession().getAttribute("username");73 if(username==null){74 response.sendRedirect("login.jsp");75 }else{76 //从页面超链传来的 每页显示的数量count77 String count = request.getParameter("count");78 if(count == null) count = "10";//默认每页10条79 String curpageIndex = request.getParameter("curpage");//得到当前页的索引80 if(curpageIndex == null) curpageIndex = "1";//默认是首页81 //根据传来的参数 找到 当前页的数据集list 82 List<ItemsOut> list1= id.getPageList1(Integer.parseInt(curpageIndex), Integer.parseInt(count));83 //得到总的数据量 84 int z1 = id.getTotalcount1();85 //根据传来的参数得到总页数 86 int pagenum1 = (z1+Integer.parseInt(count)-1)/Integer.parseInt(count);87 //将得到的当前页的数据集、总页数、和当前页返回给页面,页面进行显示 88 request.setAttribute("list", list1); 89 request.setAttribute("pagecount", pagenum1);90 request.setAttribute("currentPageIndex",curpageIndex); 91 request.getRequestDispatcher("orderhistory.jsp").forward(request, response);92 return ;93 }94 }95 96 }97 98 }
1 <%@ page language="java" 2 import="java.util.*,com.mm.bean.*,com.mm.Dao.impl.*" 3 pageEncoding="UTF-8"%> 4 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 5 <% 6 String path = request.getContextPath(); 7 String basePath = request.getScheme() + "://" 8 + request.getServerName() + ":" + request.getServerPort() 9 + path + "/"; 10 11 List<ItemsOut> list = (ArrayList<ItemsOut>) request.getAttribute("list"); 12 13 //总页数 14 Integer pagenum = (Integer) request.getAttribute("pagecount"); 15 16 17 //当前页 18 String curpageStr = (String) request.getAttribute("currentPageIndex"); 19 Integer curpage = Integer.parseInt(curpageStr); 20 21 22 String username = (String)request.getSession().getAttribute("username"); 23 %> 24 25 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 26 <html> 27 <head> 28 <base href="http://www.mamicode.com/"> 29 <link type="text/css" rel="stylesheet" href="http://www.mamicode.com/css/style.css" /> 30 <title>我的订单</title> 31 32 </head> 33 34 <body> 35 <div id="header" class="wrap"> 36 <div id="logo">北大青鸟网上书城</div> 37 <div id="navbar"> 38 <div class="userMenu"> 39 <ul> 40 <li><a href="http://www.mamicode.com/BookServlet?op=list">欢迎您:${username }</a> 41 </li> 42 <li class="current"><a href="http://www.mamicode.com/orderlist.jsp">我的订单</a> 43 </li> 44 <li><a href="http://www.mamicode.com/shopping.jsp">购物车</a> 45 </li> 46 <li><a href="http://www.mamicode.com/#">注销</a> 47 </li> 48 </ul> 49 </div> 50 <form method="get" name="search" action=""> 51 搜索:<input class="input-text" type="text" name="keywords" /><input 52 class="input-btn" type="submit" name="submit" value="" /> 53 </form> 54 </div> 55 </div> 56 <div id="content" class="wrap"> 57 <div class="list orderList"> 58 <table> 59 <tr class="title"> 60 <th class="orderId">订单编号</th> 61 <th>订单商品</th> 62 <th calss="price">订单名称</th> 63 <th class="userName">收货人</th> 64 <th class="price">订单单价</th> 65 <th class="price">购买量</th> 66 <th class="price">订单金额</th> 67 <th class="createTime">下单时间</th> 68 <th class="status">订单状态</th> 69 </tr> 70 71 <c:forEach var="item" items="${list}"> 72 <tr> 73 <td>${item.o_id }</td> 74 <td><img src="http://www.mamicode.com/${item.bookimg}" /></td> 75 <td>${item.bookname}</td> 76 <td>${item.username }</td> 77 <td>${item.singlePrice}</td> 78 <td>${item.number }</td> 79 <td>${item.sumMoney }</td> 80 <td>${item.date}</td> 81 <td>${item.state}</td> 82 </tr> 83 </c:forEach> 84 85 86 87 </table> 88 <div class="page-spliter"> 89 90 <a href="http://www.mamicode.com/MyItemsServlet?op=list&count=5&curpage=1">首页</a> 91 92 <c:choose> 93 <c:when test="curpage = 1"> 94 <a href="http://www.mamicode.com/#">上一页</a> 95 </c:when> 96 <c:otherwise> 97 <%if(curpage>1){ %> 98 <a href="http://www.mamicode.com/MyItemsServlet?op=list&count=2&curpage=">上一页</a> 99 100 <%} else{%>101 <a href="http://www.mamicode.com/MyItemsServlet?op=list&count=2&curpage=">上一页</a>102 103 <%} %>104 </c:otherwise>105 </c:choose>106 107 <c:choose>108 <c:when test="curpage = pagenum">109 <a href="http://www.mamicode.com/#">下一页</a>110 </c:when>111 <c:otherwise>112 113 <%if(curpage>=pagenum){ %>114 <a href="http://www.mamicode.com/MyItemsServlet?op=list&count=2&curpage=">下一页</a>115 116 <%} else {%>117 <a href="http://www.mamicode.com/MyItemsServlet?op=list&count=2&curpage=">下一页</a>118 119 <%} %>120 </c:otherwise>121 </c:choose>122 <a href="http://www.mamicode.com/MyItemsServlet?op=list&count=2&curpage=">尾页</a>123 124 125 </div>126 <div class="button">127 128 <a href = "http://www.mamicode.com/MyItemsServlet?op=find">查看历史订单</a>129 130 131 </div>132 </div>133 </div>134 <div id="footer" class="wrap">北大青鸟网上书城 © 版权所有</div>135 136 137 138 </body>139 </html>
1 <%@ page language="java" 2 import="java.util.*,com.mm.bean.*,com.mm.Dao.impl.*" 3 pageEncoding="UTF-8"%> 4 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 5 <% 6 String path = request.getContextPath(); 7 String basePath = request.getScheme() + "://" 8 + request.getServerName() + ":" + request.getServerPort() 9 + path + "/"; 10 11 List<ItemsOut> list = (ArrayList<ItemsOut>) request.getAttribute("list"); 12 13 //总页数 14 Integer pagenum = (Integer) request.getAttribute("pagecount"); 15 16 17 //当前页 18 String curpageStr = (String) request.getAttribute("currentPageIndex"); 19 Integer curpage = Integer.parseInt(curpageStr); 20 21 String username = (String)request.getSession().getAttribute("username"); 22 %> 23 24 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 25 <html> 26 <head> 27 <base href="http://www.mamicode.com/"> 28 <link type="text/css" rel="stylesheet" href="http://www.mamicode.com/css/style.css" /> 29 <title>我的订单</title> 30 31 </head> 32 33 <body> 34 <div id="header" class="wrap"> 35 <div id="logo">北大青鸟网上书城</div> 36 <div id="navbar"> 37 <div class="userMenu"> 38 <ul> 39 <li><a href="http://www.mamicode.com/BookServlet?op=list">欢迎您:${username }</a> 40 </li> 41 <li class="current"><a href="http://www.mamicode.com/orderlist.jsp">我的订单</a> 42 </li> 43 <li><a href="http://www.mamicode.com/shopping.html">购物车</a> 44 </li> 45 <li><a href="http://www.mamicode.com/#">注销</a> 46 </li> 47 </ul> 48 </div> 49 <form method="get" name="search" action=""> 50 搜索:<input class="input-text" type="text" name="keywords" /><input 51 class="input-btn" type="submit" name="submit" value="" /> 52 </form> 53 </div> 54 </div> 55 <div id="content" class="wrap"> 56 <div class="list orderList"> 57 <table> 58 <tr class="title"> 59 <th class="orderId">订单编号</th> 60 <th>订单商品</th> 61 <th calss="price">订单名称</th> 62 <th class="userName">收货人</th> 63 <th class="price">订单单价</th> 64 <th class="price">购买量</th> 65 <th class="price">订单金额</th> 66 <th class="createTime">下单时间</th> 67 <th class="status">订单状态</th> 68 </tr> 69 70 <c:forEach var="item" items="${list}"> 71 <tr> 72 <td>${item.o_id }</td> 73 <td><img src="http://www.mamicode.com/${item.bookimg}" /></td> 74 <td>${item.bookname}</td> 75 <td>${item.username }</td> 76 <td>${item.singlePrice}</td> 77 <td>${item.number }</td> 78 <td>${item.sumMoney }</td> 79 <td>${item.date}</td> 80 <td>${item.state}</td> 81 </tr> 82 </c:forEach> 83 84 85 86 </table> 87 <div class="page-spliter"> 88 89 <a href="http://www.mamicode.com/MyItemsServlet?op=find&count=5&curpage=1">首页</a> 90 91 <c:choose> 92 <c:when test="curpage = 1"> 93 <a href="http://www.mamicode.com/#">上一页</a> 94 </c:when> 95 <c:otherwise> 96 <%if(curpage>1){ %> 97 <a href="http://www.mamicode.com/MyItemsServlet?op=find&count=5&curpage=">上一页</a> 98 99 <%} else{%>100 <a href="http://www.mamicode.com/MyItemsServlet?op=find&count=5&curpage=">上一页</a>101 102 <%} %>103 </c:otherwise>104 </c:choose>105 106 <c:choose>107 <c:when test="curpage = pagenum">108 <a href="http://www.mamicode.com/#">下一页</a>109 </c:when>110 <c:otherwise>111 112 <%if(curpage>=pagenum){ %>113 <a href="http://www.mamicode.com/MyItemsServlet?op=find&count=5&curpage=">下一页</a>114 115 <%} else {%>116 <a href="http://www.mamicode.com/MyItemsServlet?op=find&count=5&curpage=">下一页</a>117 118 <%} %>119 </c:otherwise>120 </c:choose>121 <a href="http://www.mamicode.com/MyItemsServlet?op=find&count=5&curpage=">尾页</a>122 123 124 </div>125 <div class="button">126 <input class="input-gray" type="submit" name="submit"127 value="http://www.mamicode.com/查看一个月前的订单" />128 <input class="input-gray" type="submit" 129 name="submit" value="http://www.mamicode.com/查看一个月前的订单" />130 <a href="http://www.mamicode.com/MyItemsServlet?op=find">查看历史订单</a>131 132 133 </div>134 </div>135 </div>136 <div id="footer" class="wrap">北大青鸟网上书城 © 版权所有</div>137 138 139 140 </body>141 </html>
分页显示图书信息功能
1 package com.mm.Dao.impl; 2 3 import java.sql.Connection; 4 import java.sql.PreparedStatement; 5 import java.sql.ResultSet; 6 import java.sql.SQLException; 7 import java.util.ArrayList; 8 import java.util.List; 9 10 import com.mm.Dao.BookDao; 11 import com.mm.Utils.JDBCUtils; 12 import com.mm.bean.Book; 13 14 public class BookDaoImpl implements BookDao { 15 //根据当前页的索引返回当前页的数据集合 16 public List<Book> getPageList(int currentPageIndex, int count) { 17 // TODO Auto-generated method stub 18 19 Connection con = null; 20 PreparedStatement ps = null; 21 ResultSet rs = null; 22 List<Book> list = new ArrayList(); 23 try { 24 con = JDBCUtils.getconnection(); 25 ps = con.prepareStatement("select * from book limit ?,?"); 26 ps.setInt(1, (currentPageIndex-1)*count); 27 ps.setInt(2, count); 28 rs = ps.executeQuery(); 29 while(rs.next()){ 30 list.add(tobook(rs)); 31 } 32 return list; 33 } catch (SQLException e) { 34 // TODO Auto-generated catch block 35 e.printStackTrace(); 36 }finally{ 37 JDBCUtils.release(rs, ps, con); 38 } 39 return null; 40 } 41 42 private Book tobook(ResultSet rs) { 43 // TODO Auto-generated method stub 44 Book b = new Book(); 45 try { 46 b.setBookid(rs.getInt("bookid")); 47 b.setBookname(rs.getString("bookname")); 48 b.setBookpublish(rs.getString("bookpublish")); 49 b.setBookprice(rs.getDouble("bookprice")); 50 b.setBookauthor(rs.getString("bookauthor")); 51 b.setBookcontent(rs.getString("bookcontent")); 52 b.setBookimg(rs.getString("bookimg")); 53 b.setBooksave(rs.getString("booksave")); 54 } catch (SQLException e) { 55 // TODO Auto-generated catch block 56 e.printStackTrace(); 57 } 58 return b; 59 } 60 61 //返回数据库中图书总数,在Servlet可以算出总的页数 62 public int getTotalcount() { 63 // TODO Auto-generated method stub 64 65 Connection con = null; 66 PreparedStatement ps = null; 67 ResultSet rs = null; 68 try { 69 con = JDBCUtils.getconnection(); 70 ps = con.prepareStatement("select count(*) from book"); 71 rs = ps.executeQuery(); 72 if(rs.next()){ 73 return rs.getInt(1);//返回第一条记录 74 } 75 }catch(Exception e){ 76 e.printStackTrace(); 77 }finally{ 78 JDBCUtils.release(rs, ps, con); 79 } 80 81 82 return 0; 83 } 84 //模糊查询,根据书名返回符合的图书集合 85 public List<Book> findbookByName(String bookname) { 86 // TODO Auto-generated method stub 87 Connection con = null; 88 PreparedStatement ps = null; 89 ResultSet rs = null; 90 Book b = new Book(); 91 List<Book> li = new ArrayList(); 92 try { 93 con = JDBCUtils.getconnection(); 94 String qbk="%"+bookname+"%"; 95 //System.out.println(qbk); 96 String sql="select * from book where bookname like ?"; 97 ps = con.prepareStatement(sql); 98 ps.setString(1,qbk); 99 rs = ps.executeQuery();100 while(rs.next()){101 li.add(tobook(rs));102 103 } 104 return li;105 } catch (SQLException e) {106 // TODO Auto-generated catch block107 e.printStackTrace();108 }finally{109 JDBCUtils.release(rs, ps, con);110 } 111 return null;112 }113 //根据ID号找到书的详细信息114 public Book findbookById(int bid) {115 // TODO Auto-generated method stub116 Connection con = null;117 PreparedStatement ps = null;118 ResultSet rs = null; 119 Book book = new Book();120 try {121 con = JDBCUtils.getconnection();122 String sql = "select * from book where bookid =?"; 123 ps = con.prepareStatement(sql);124 ps.setInt(1, bid);125 rs = ps.executeQuery();126 while(rs.next()){127 return tobook(rs);128 }129 130 } catch (SQLException e) {131 // TODO Auto-generated catch block132 e.printStackTrace();133 }finally{134 JDBCUtils.release(rs, ps, con);135 } 136 return null;137 }138 139 }show
1 package com.mm.servlet; 2 3 import java.io.IOException; 4 import java.util.List; 5 6 import javax.servlet.ServletException; 7 import javax.servlet.http.HttpServlet; 8 import javax.servlet.http.HttpServletRequest; 9 import javax.servlet.http.HttpServletResponse;10 11 12 import com.mm.bean.Book;13 import com.mm.service.BookService;14 import com.mm.service.impl.BookServiceImpl;15 16 public class BookServlet extends HttpServlet {17 18 BookService bs = new BookServiceImpl();19 20 public void doGet(HttpServletRequest request, HttpServletResponse response)21 throws ServletException, IOException {22 doPost(request,response);23 }24 25 26 public void doPost(HttpServletRequest request, HttpServletResponse response)27 throws ServletException, IOException {28 29 String op = request.getParameter("op");30 31 32 if(op==null) op = "list";33 //分页显示book表中的所有图书34 if("list".equals(op)){ 35 //从页面超链传来的 每页显示的数量count36 String count = request.getParameter("count");37 if(count == null) count = "10";//默认每页10条38 String curpageIndex = request.getParameter("curpage");//得到当前页的索引39 if(curpageIndex == null) curpageIndex = "1";//默认是首页40 //根据传来的参数 找到 当前页的数据集list41 List<Book> list= bs.getPageList(Integer.parseInt(curpageIndex), Integer.parseInt(count));42 43 //根据传来的参数得到总页数44 int pagenum = bs.Pagecount(Integer.parseInt(count));45 //将得到的当前页的数据集、总页数、和当前页返回给页面,页面进行显示46 request.setAttribute("list", list);47 request.setAttribute("pagecount", pagenum);48 request.setAttribute("currentPageIndex",curpageIndex );49 50 request.getRequestDispatcher("showbook.jsp").forward(request, response);51 return ;52 53 }else if("find".equals(op)){54 //模糊查询55 //从页面超链得到每页显示的数目56 String bookname = request.getParameter("bookname");57 String count = request.getParameter("count");58 if(count == null) count = "10";//默认每页10条 59 List<Book> book = bs.findbookByName(bookname);//根据书名找到书的集合60 request.setAttribute("list", book);61 request.getRequestDispatcher("showbook.jsp").forward(request, response);62 return ;63 } 64 65 }66 67 68 }
网上书城项目