网上书城项目

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

项目是根据三层架构来写,数据访问层(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 stub
12         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 stub
19         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="<%=basePath%>">
12
13     <title>注册页面</title>
14
15 <link type="text/css" rel="stylesheet" href="css/style.css" />
16 <script type="text/javascript" src="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.jsp
31                 //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="<%=basePath%>">

    <title>登录界面</title>
    <link type="text/css" rel="stylesheet" href="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 = "<%=username %>"/><span>${error}</span></dd>
            <dt>密 码:  </dt>
            <dd><input class="input-text" type="password" name="password"   value = "<%=password%>"/></dd>
            <dt><input class = "input-text" type= "checkbox"  name = "remember"  value = "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="<%=basePath%>">
 32
 33     <title>购物车界面</title>
 34     <link type="text/css" rel="stylesheet" href="css/style.css" />
 35     <script type="text/javascript" src = "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="showbook.jsp">欢迎您:${username }</a></li>
 48                 <li><a href="orderlist.jsp">我的订单</a></li>
 49                 <li class="current"><a href="shopping.jsp">购物车</a></li>
 50                 <li><a href="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="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自增,可以自动生成oid
14     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 block
45             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 block
122             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 stub
149         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 block
222                 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中拿到oid
32        id.setOid((Integer)request.getSession().getAttribute("oid"));
33
34
35        //从session中拿到useranme
36        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              //从页面超链传来的 每页显示的数量count
46              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              //根据传来的参数 找到 当前页的数据集list
51               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             //从页面超链传来的 每页显示的数量count
77             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="<%=basePath%>">
 29 <link type="text/css" rel="stylesheet" href="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="BookServlet?op=list">欢迎您:${username }</a>
 41                     </li>
 42                     <li class="current"><a href="orderlist.jsp">我的订单</a>
 43                     </li>
 44                     <li><a href="shopping.jsp">购物车</a>
 45                     </li>
 46                     <li><a href="#">注销</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="${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="MyItemsServlet?op=list&count=5&curpage=1">首页</a>
 91
 92                 <c:choose>
 93                     <c:when test="curpage = 1">
 94                         <a href="#">上一页</a>
 95                     </c:when>
 96                     <c:otherwise>
 97                       <%if(curpage>1){ %>
 98                         <a href="MyItemsServlet?op=list&count=2&curpage=<%=curpage - 1%>">上一页</a>
 99
100                         <%} else{%>
101                         <a href="MyItemsServlet?op=list&count=2&curpage=<%=curpage%>">上一页</a>
102
103                         <%} %>
104                     </c:otherwise>
105                 </c:choose>
106
107                 <c:choose>
108                     <c:when test="curpage = pagenum">
109                         <a href="#">下一页</a>
110                     </c:when>
111                     <c:otherwise>
112
113                       <%if(curpage>=pagenum){ %>
114                         <a href="MyItemsServlet?op=list&count=2&curpage=<%=curpage%>">下一页</a>
115
116                         <%} else {%>
117                         <a href="MyItemsServlet?op=list&count=2&curpage=<%=curpage+1%>">下一页</a>
118
119                         <%} %>
120                     </c:otherwise>
121                 </c:choose>
122                 <a href="MyItemsServlet?op=list&count=2&curpage=<%=pagenum%>">尾页</a>
123
124
125             </div>
126             <div class="button">
127
128                     <a href = "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="<%=basePath%>">
 28 <link type="text/css" rel="stylesheet" href="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="BookServlet?op=list">欢迎您:${username }</a>
 40                     </li>
 41                     <li class="current"><a href="orderlist.jsp">我的订单</a>
 42                     </li>
 43                     <li><a href="shopping.html">购物车</a>
 44                     </li>
 45                     <li><a href="#">注销</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="${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="MyItemsServlet?op=find&count=5&curpage=1">首页</a>
 90
 91                 <c:choose>
 92                     <c:when test="curpage = 1">
 93                         <a href="#">上一页</a>
 94                     </c:when>
 95                     <c:otherwise>
 96                       <%if(curpage>1){ %>
 97                         <a href="MyItemsServlet?op=find&count=5&curpage=<%=curpage - 1%>">上一页</a>
 98
 99                         <%} else{%>
100                         <a href="MyItemsServlet?op=find&count=5&curpage=<%=curpage%>">上一页</a>
101
102                         <%} %>
103                     </c:otherwise>
104                 </c:choose>
105
106                 <c:choose>
107                     <c:when test="curpage = pagenum">
108                         <a href="#">下一页</a>
109                     </c:when>
110                     <c:otherwise>
111
112                       <%if(curpage>=pagenum){ %>
113                         <a href="MyItemsServlet?op=find&count=5&curpage=<%=curpage%>">下一页</a>
114
115                         <%} else {%>
116                         <a href="MyItemsServlet?op=find&count=5&curpage=<%=curpage+1%>">下一页</a>
117
118                         <%} %>
119                     </c:otherwise>
120                 </c:choose>
121                 <a href="MyItemsServlet?op=find&count=5&curpage=<%=pagenum%>">尾页</a>
122
123
124             </div>
125             <div class="button">
126                 <input class="input-gray" type="submit" name="submit"
127                     value="查看一个月前的订单" />
128                     <input class="input-gray" type="submit"
129                     name="submit" value="查看一个月前的订单" />
130                     <a href="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 block
107             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 stub
116         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 block
132             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           //从页面超链传来的 每页显示的数量count
36           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           //根据传来的参数 找到 当前页的数据集list
41            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

时间: 2024-10-21 23:40:49

网上书城项目的相关文章

网上书城项目总结(servlet_jsp+javaBean)

网上书城项目总结 1 项目大纲设计: 需求分析 系统设计 详细设计 权限设计 2 技术选型: Servlet+jsp+javaBean Listener+Filter+jstl+fileupload+c3p0+dbutils+mysql 3 开发顺序: 从dao层到service层再到web层 网上书城需求分析: 分别对管理员,普通用户,系统三个用户角色的各个功能的实现. 其中包括管理员对图书商城的后台图书以及图书的类别分类增删查改,以及订单的状态; 普通用户对于图书的选购,浏览,购物车的管理以

项目2——网上书城项目

这个项目是帮舍友做的毕设项目,舍友是个作家,写小说的,想做一个管理小说的系统,我就帮代劳了,如果做出来他看不上再花钱找别人那就不该我事了哈哈,我尽力给做的好一点吧,舍友需求还是挺简单的 首先进行需求分析 前台 1.用户模块: 注册 激活 登录 退出 2.分类模块: 查看所有分类 3.图书模块 查询所有图书 按分类查询图书 查询图书详细(按id查询) 4.购物车模块: 添加购物车条目 清空所有条目 删除指定条目 我的购物车(按用户查询购物车) 5.订单模块 生成订单 我的订单(按用户查询订单) 按

网上书城+源码

经过一段时间的Java Web基础知识的学习,为了将整个知识点串联起来,自己写了一个简单的网上书城小项目.整个项目架构比较简单,适合像我这种Java Web初学者来学习参考,项目名称web_bookstore,是基于servlet/jsp和html/css/js实现的. 整个工程代码已push到Git,详见地址:web_bookstore. 整体架构 该网上书城项目分为前台和后台两大部分,前台部分包括会员注册.会员登录.购买书籍.添加购物车.结算等功能,后台部分包括查看会员.查看商品.添加商品等

大项目之网上书城(二)——主页(上)

目录 大项目之网上书城(二)--主页(上) 1.主页 代码 效果图 2.head2.jsp 代码 效果图 3.二级页面的empty.jsp 代码 效果图 总结 WebContent图 大项目之网上书城(二)--主页(上) 实在是太复杂啦,弄了半天才调出来一个壳子.明天再继续吧... 1.主页 代码 值得一提的是,我把所以的路径都改成用${pageContext}来获取的了,这样就可以方便我在不同的地方复制粘贴同样的代码,能有同样的功效了.(甚至字体的url都改了23333) <%@ page l

大项目之网上书城(六)——个人页面和书页面Demo

目录 大项目之网上书城(六)--个人页面和书页面Demo 主要改动 1.user.jsp 代码 效果图 user.js 代码 3.shu.jsp 代码 效果图 4.其他小改动 LoginServlet LogoutServlet BookService XinShuMingServlet 5.新增 FindPageByIdServlet ShuImgByIdServlet 总结 大项目之网上书城(六)--个人页面和书页面Demo 主要改动 今天时间依旧不是很多,,主要是今天思路不够丰富.勉强给个

大项目之网上书城(九)——订单Demo

目录 大项目之网上书城(九)--订单Demo 主要改动 1.OrderServiceImpl 代码 2.OrderDaoImpl 代码 3.OrderitemDaoImpl 代码 4.orderitem_insert触发器 代码 5.DelOrderServlet 代码 6.NewOrderServlet 代码 7.PayForServlet 代码 8.shouhuo.jsp 代码 效果图 9.order.jsp 代码 效果图 总结 大项目之网上书城(九)--订单Demo 主要改动 加了创建订单

大项目之网上书城(十二)——完成啦

目录 大项目之网上书城(十二)--完成啦 主要改动 新增代码 1.addCategory.jsp 效果图 2.bookManager.jsp 效果图 3.userManager.jsp 效果图 4.error404.jsp 效果图 5.error500.jsp 效果图 6.errorelse.jsp 效果图 7.web.xml 8.addFenLeiServlet 9.bookDao里的addFenLei 总结 github页面 bookstoreZhang 大项目之网上书城(十二)--完成啦

【SSH网上商城项目实战27】域名空间的申请和项目的部署及发布

前面陆陆续续的完成了网上商城的一些基本功能,虽然还有很多地方有待完善,但是不影响项目的部署和发布,我们可以先来玩一把,这一节主要介绍下域名空间的申请以及项目的部署和发布流程. 1. 域名空间的申请 作为一个伟大的屌丝,肯定没钱买域名空间,很自然的想到去申请个免费的,现在免费的域名空间也很多,我在福佳jsp技术网上申请了一个试用期是15天的,大家也可以去申请个玩玩,反正作为学习,这已经足够了,当然,如果要长期的肯定要付费的.注册过程我截几个图,如下: 然后下一步,最后开通如下: 建议把上面这些信息

【SSH网上商城项目实战16】Hibernate的二级缓存处理首页的热门显示

网上商城首页都有热门商品,那么这些商品的点击率是很高的,当用户点击某个热门商品后需要进入商品的详细信息页面,就像淘宝里面那样.那么每次点击都要去后台查询一下该商品的详细信息,就会发送相应的sql语句,每次刷新一下详细页面也会发sql语句,这样的话,性能肯定会受到很大的影响.那么使用Hibernate的二级缓存就可以解决这个问题. 有些人可能会想,我们可以使用重定向,这样的话,在用户第一次访问的时候把信息查出来放到session中,以后每次用户刷新就可以去session中拿了,这样就不用去数据库中