zoukankan      html  css  js  c++  java
  • 网上书城项目

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

    项目是根据三层架构来写,数据访问层(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
  • 相关阅读:
    Entity Framework 出现 "此 ObjectContext 实例已释放,不可再用于需要连接的操作" 的错误
    JS 页面加载触发事件 document.ready和window.onload的区别
    C# 控制台程序实现 Ctrl + V 粘贴功能
    网站推广必备的16个营销工具
    C# 如何捕获键盘按钮和组合键以及KeyPress/KeyDown事件之间的区别 (附KeyChar/KeyCode值)
    jQuery问题集锦
    zend studio打开文件提示unsupported character encoding
    简单的Jquery焦点图切换效果
    HTML实体符号代码速查表
    心得感悟
  • 原文地址:https://www.cnblogs.com/mengxiao/p/5827409.html
Copyright © 2011-2022 走看看