JavaWeb:網上書店的案例 之 翻頁操作


流程:

首先瀏覽器把請求發給 JSP(index.jsp),index.jsp 實際上調用的是 BookServlet 的 getBooks() 方法。然后到了 Servlet ,這個Servlet 需要獲取請求參數:maxPrice, minPrice, pageNo,把請求參數封裝為 CriteriaBook 對象。如果沒有傳這三個參數,它們是有默認值的。然后調用 BookService 的getPage() 方法,要把 CriteriaBook 傳進來,BookService 再來調 BookDao 的 getPage() 這個方法,然后再在  BookServlet 中把我得到的 page 放到請求域里面,再做一個 forward 去 books.jsp 頁面就可以顯示了。

index.jsp 代碼:

1 <%
2     response.sendRedirect(request.getContextPath() + "/bookServlet?method=getBooks");
3 %>

BookServlet 關鍵代碼:

 1     private BookService bookService = new BookService();
 2     protected void getBooks(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 3         //獲取請求參數
 4         String pageNoStr = request.getParameter("pageNo");
 5         String minPriceStr = request.getParameter("minPrice");
 6         String maxPriceStr = request.getParameter("maxPrice");
 7         
 8         //如果沒有請求參數,設其為默認值
 9         int pageNo = 1;
10         int minPrice= 0;
11         int maxPrice = Integer.MAX_VALUE;
12         //轉型
13         try {
14             pageNo = Integer.parseInt(pageNoStr);
15         } catch (NumberFormatException e) {}
16         
17         try {
18             minPrice = Integer.parseInt(minPriceStr);
19         } catch (NumberFormatException e) {}
20         
21         try {
22             maxPrice = Integer.parseInt(maxPriceStr);
23         } catch (NumberFormatException e) {}
24         
25         //將請求參數封裝為 CriticalBook 對象
26         CriteriaBook criteriaBook = new CriteriaBook(minPrice, maxPrice, pageNo);
27         Page<Book> page = bookService.getPage(criteriaBook);
28         //把得到的 page 放入請求域里
29         request.setAttribute("bookpage", page);
30         //頁面的轉發
31         request.getRequestDispatcher("/WEB-INF/pages/books.jsp").forward(request, response);
32     }

BookService 關鍵代碼:

1     private BookDAO bookDAO = new BookDAOImpl();
2     
3     public Page<Book> getPage(CriteriaBook criteriaBook){
4         return bookDAO.getPage(criteriaBook);
5     }

books.jsp 關鍵代碼:

 1 <html>
 2 <head>
 3 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 4 <title>Insert title here</title>
 5 <script type="text/javascript" src="script/jquery-1.7.2.min.js"></script>
 6 <script type="text/javascript">
 7 
 8         $(function(){
 9             //如果 id 為 pageNo 的text 里發生改變的話  
10             $("#pageNo").change(function(){ 
11                 //獲取text 里的這個 值  
12                 var pageNoVal = $(this).val();
13                 //去掉前后空格
14                 pageNoVal = $.trim(pageNoVal);
15                 
16                 //判斷輸入的是否是合法的數字 1、2、3 之類的 
17                 var reg = /^\d+$/g;
18                 var flag = false;
19                 var pageNoVal2 = 0;
20                 if(reg.test(pageNoVal)){
21                     //判斷輸入的頁碼是否在正確范圍內
22                     pageNoVal2 = parseInt(pageNoVal);
23                     if(pageNoVal2 >= 1 && pageNoVal2 <= parseInt("${bookpage.totalPageNumber}")){
24                         flag = true;
25                     }
26                 }
27                 if(!flag){
28                     alert("輸入的頁數不合法");
29                     //判斷輸入不合法后,將 text 置空
30                     $(this).val("");
31                     return;
32                 }
33                 //頁面跳轉
34                 var href = "bookServlet?method=getBooks&pageNo=" + pageNoVal2 + "&" + $(":hidden").serialize();
35                 window.location.href = href;
36             });
37             
38         })
39 </script>
40 <%@ include file="/commans/selectCondition.jsp" %>
41 </head>
42 <body>
43     <center>
53         <form action="bookServlet?method=getBooks" method="post">
54             Price:<input type="text" size="1" name="minPrice"/>-
55             <input type="text" size="1" name="maxPrice"/>
56             <input type="submit" value="Submit"/>
57         </form>
58         <br><br>
59         <table cellpadding="10">
60                 <c:forEach items="${bookpage.list}" var="book">
61                     <tr>
62                         <td>
63                             <a href="">${book.title }</a> 
64                             <br>
65                             ${book.author }
66                         </td>
67                         <td>${book.price }</td>
68                         <td><a href="">加入購物車</a></td>
69                     </tr>
70                 </c:forEach>
71         </table>
72         <br><br>
73         共 ${bookpage.totalPageNumber } 頁
74         &nbsp;&nbsp;
75         當前第 ${bookpage.pageNo } 頁
76         &nbsp;&nbsp;
77         
78         <c:if test="${bookpage.hashPre }">
79             <a href="bookServlet?method=getBooks&pageNo=1">首頁</a>
80             &nbsp;&nbsp;
81             <a href="bookServlet?method=getBooks&pageNo=${bookpage.prePage }">上一頁</a>
82         </c:if>
83         &nbsp;&nbsp;
84         <c:if test="${bookpage.hashNext }">
85             <a href="bookServlet?method=getBooks&pageNo=${bookpage.nextPage }">下一頁</a>
86             &nbsp;&nbsp;
87             <a href="bookServlet?method=getBooks&pageNo=${bookpage.totalPageNumber }">末頁</a>
88         </c:if>
89         &nbsp;&nbsp;
90         轉到 <input type="text" size="1" id="pageNo"/>91     </center>
92 </body>
93 </html>

 

 over。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM