程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> 網上書城項目,javaweb網上書城項目

網上書城項目,javaweb網上書城項目

編輯:JAVA綜合教程

網上書城項目,javaweb網上書城項目


    實習就要結束了,最終要上交的是網上書城項目和一份文檔。接下來簡要介紹一下項目。

項目是根據三層架構來寫,數據訪問層(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>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>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> 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

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved