首页 > 代码库 > 网上书城项目

网上书城项目

    实习就要结束了,最终要上交的是网上书城项目和一份文档。接下来简要介绍一下项目。

项目是根据三层架构来写,数据访问层(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     北大青鸟网上书城 &copy; 版权所有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">    北大青鸟网上书城 &copy; 版权所有</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 }
BookShopping实体类

 

 

 

技术分享
 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 }
加入购物车的servlet

 

技术分享
  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     北大青鸟网上书城 &copy; 版权所有 97  98 </div> 99   </body>100 </html>
加入购物车的jsp显示与处理

主要用到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 }
生成订单的DAO层

 

 

 

技术分享
  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 }
生成订单的servlet

 

 

订单显示功能  &  查看历史订单

 

 

技术分享
  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 }
订单显示 和查看历史订单的dao层

 

 

 

技术分享
 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 }
分页显示订单和查看历史订单的servlet

 

 

 

技术分享
  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">北大青鸟网上书城 &copy; 版权所有</div>135 136 137 138 </body>139 </html>
分页显示订单JSP

 

技术分享
  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">北大青鸟网上书城 &copy; 版权所有</div>137 138 139 140 </body>141 </html>
查看历史订单JSP

 

分页显示图书信息功能

 

技术分享
  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
分页显示图书servlet层的处理

 

技术分享
 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 }
图书显示JSP

 

网上书城项目