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

java web 簡單的分頁顯示,javaweb分頁顯示

編輯:JAVA綜合教程

java web 簡單的分頁顯示,javaweb分頁顯示


題外話:該分頁顯示是用 “表示層-控制層-DAO層-數據庫”的設計思想實現的,有什麼需要改進的地方大家提出來,共同學習進步。

思路:首先得在 DAO 對象中提供分頁查詢的方法,在控制層調用該方法查到指定頁的數據,在表示層通過 EL 表達式和 JSTL 將該頁數據顯示出來。

重點:兩個方法:(1)計算總的頁數。 (2)查詢指定頁數據。

 

1.DAO層-數據庫

JDBCUtils 類用於打開和關閉數據庫,核心代碼如下:

 1 import java.sql.Connection;
 2 import java.sql.DriverManager;
 3 import java.sql.PreparedStatement;
 4 import java.sql.ResultSet;
 5 import java.sql.SQLException;
 6 
 7 public class JDBCUtils {
 8     private Connection conn=null;
 9     private PreparedStatement pstmt=null; 
10     
11     
12     /**
13      * connect 連接數據庫
14      * @return
15      */
16     public Connection connect(){
17         String user="root";
18         String password="1234";
19         String driverClass = "com.mysql.jdbc.Driver";
20         String jdbcUrl = "jdbc:mysql://localhost:3306/book";
21         
22         try {
23             Class.forName(driverClass);
24             conn = DriverManager.getConnection(jdbcUrl, user, password);
25         } catch (Exception e) {
26             // TODO Auto-generated catch block
27             e.printStackTrace();
28         }
29         return conn;
30         
31     }
32     
33     /**
34      * close 關閉數據庫
35      * @param conn
36      * @param pstmt
37      * @param resu
38      */
39     public void close(Connection conn,PreparedStatement pstmt,ResultSet result){
40         if(conn != null){
41             try {
42                 conn.close();
43             } catch (SQLException e) {
44                 // TODO Auto-generated catch block
45             }
46         }
47         if(pstmt != null){
48             try {
49                 pstmt.close();
50             } catch (SQLException e) {
51                 // TODO Auto-generated catch block
52                 e.printStackTrace();
53             }
54         }
55         if(result != null){
56             try {
57                 result.close();
58             } catch (SQLException e) {
59                 // TODO Auto-generated catch block
60                 e.printStackTrace();
61             }
62         }
63     }
64 
65 }

UserDao 類中的方法 getPage() 和方法 listUser() 分別用來計算總頁數和查詢指定頁的數據,核心代碼如下:

 1 import java.sql.Connection;
 2 import java.sql.PreparedStatement;
 3 import java.sql.ResultSet;
 4 import java.sql.SQLException;
 5 import java.util.ArrayList;
 6 import java.util.List;
 7 
 8 import com.db.JDBCUtils;
 9 
10 public class UserDao {
11     /**
12      * 計算總的頁數
13      * @return
14      */
15     public int getPage(){
16         int recordCount=0,t1=0,t2=0;
17         PreparedStatement pstmt=null;
18         ResultSet result=null;
19         JDBCUtils jdbc=new JDBCUtils();
20         Connection conn=jdbc.connect();
21         String sql="select count(*) from books";
22         try {
23             pstmt=conn.prepareStatement(sql);
24             result=pstmt.executeQuery();
25             result.next();
26             recordCount=result.getInt(1);
27             t1=recordCount%5;
28             t2=recordCount/5;
29         } catch (Exception e) {
30             // TODO Auto-generated catch block
31             e.printStackTrace();
32         }finally{
33             jdbc.close(conn, pstmt, result);
34         }
35         if(t1 != 0){
36             t2=t2+1;
37         }
38         
39         return t2;
40     }
41     
42     /**
43      * 查詢指定頁的數據
44      * @param pageNo
45      * @return
46      */
47     public List<User> listUser(int pageNo){
48         PreparedStatement pstmt=null;
49         ResultSet result=null;
50         List<User> list=new ArrayList<User>();
51         int pageSize=5;
52         int page=(pageNo-1)*5;
53         JDBCUtils jdbc=new JDBCUtils();
54         Connection conn=jdbc.connect();
55         String sql="select * from books order by id limit ?,?";
56         try {
57             pstmt=conn.prepareStatement(sql);
58             pstmt.setInt(1, page);
59             pstmt.setInt(2, pageSize);
60             result=pstmt.executeQuery();
61             while(result.next()){
62                 User user=new User();
63                 user.setId(result.getInt(1));
64                 user.setName(result.getString(2));
65                 user.setNumber(result.getString(3));
66                 list.add(user);
67                 
68             }
69         } catch (Exception e) {
70             // TODO Auto-generated catch block
71             e.printStackTrace();
72         }finally{
73             jdbc.close(conn, pstmt, result);
74         }
75         return list;
76     }
77 
78 }

User 類用於存儲查詢到的數據,核心代碼如下:

 1 public class User {
 2     private int id;
 3     private String name;
 4     private String number;
 5     public int getId() {
 6         return id;
 7     }
 8     public void setId(int id) {
 9         this.id = id;
10     }
11     public String getName() {
12         return name;
13     }
14     public void setName(String name) {
15         this.name = name;
16     }
17     public String getNumber() {
18         return number;
19     }
20     public void setNumber(String number) {
21         this.number = number;
22     }
23 }

 

2.控制層

ListUser 類內部調用 UserDao 對象查詢數據並指派頁面顯示數據,核心代碼如下:

 1 import java.io.IOException;
 2 import java.io.PrintWriter;
 3 import java.util.ArrayList;
 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 import com.dao.User;
12 import com.dao.UserDao;
13 
14 public class ListUser extends HttpServlet {
15     public ListUser() {
16         super();
17     }
18 
19     public void destroy() {
20         super.destroy(); // Just puts "destroy" string in log
21         // Put your code here
22     }
23 
24     public void doGet(HttpServletRequest request, HttpServletResponse response)
25             throws ServletException, IOException {
26 
27         doPost(request, response);
28     }
29 
30     public void doPost(HttpServletRequest request, HttpServletResponse response)
31             throws ServletException, IOException {
32 
33         
34         response.setCharacterEncoding("utf-8");
35         int pageNo = 1;
36         UserDao userdao=new UserDao();
37         List<User> lists=new ArrayList<User>();
38         String pageno=request.getParameter("pageNos");
39         if(pageno != null){
40             pageNo=Integer.parseInt(pageno);
41         }
42         lists=userdao.listUser(pageNo);
43         int recordCount=userdao.getPage();
44         request.setAttribute("recordCount", userdao.getPage());
45         request.setAttribute("listss", lists);
46         request.setAttribute("pageNos", pageNo);
47         request.getRequestDispatcher("userlist.jsp").forward(request, response);
48     }
49 
50     public void init() throws ServletException {
51         // Put your code here
52     }
53 
54 }

 

3.表示層

輸出頁面 userlist.jsp ,使用 EL 和 JSTL 輸出查詢結果,核心代碼如下:

 1 <%@ page language="java" import="java.util.*"  pageEncoding="UTF-8"%>
 2 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
 3 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>  
 4 <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
 5 <%
 6 String path = request.getContextPath();
 7 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
 8 %>
 9 
10 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
11 <html>
12   <head>
13     <base href="<%=basePath%>">
14     
15     <title>My JSP 'userlist.jsp' starting page</title>
16     
17     <meta http-equiv="pragma" content="no-cache">
18     <meta http-equiv="cache-control" content="no-cache">
19     <meta http-equiv="expires" content="0">    
20     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
21     <meta http-equiv="description" content="This is my page">
22     <!--
23     <link rel="stylesheet" type="text/css" href="styles.css">
24     -->
25 <style type="text/css">
26 th,td{width: 150px;border: 2px solid gray;text-align: center;}
27 body{text-align: center;}
28 a{text-decoration: none;}
29 table {border-collapse: collapse;}
30 </style>
31   </head>
32   
33   <body>
34     <h2 align="center">圖書信息</h2>
35     <table align="center">
36         <tr><td>書號</td><td>書名</td><td>庫存量</td></tr>
37     </table>
38      <table align="center">
39          <c:forEach items="${listss}" var="person">
40          <tr>
41          <td class="hidden-480">${person.id}</td>
42          <td class="hidden-480">${person.name }</td>
43          <td class="hidden-480">${person.number }</td>
44          </tr>
45         </c:forEach>
46     </table>
47      <br>
48 
49      <c:if test="${pageNos>1 }">
50          <a href="ListUser?pageNos=1" >首頁</a>
51          <a href="ListUser?pageNos=${pageNos-1 }">上一頁</a>
52      </c:if>
53      
54       <c:if test="${pageNos <recordCount }">
55          <a href="ListUser?pageNos=${pageNos+1 }">下一頁</a>
56          <a href="ListUser?pageNos=${recordCount }">末頁</a>
57      </c:if>
58 
59     <form action="ListUser">
60     <h4 align="center">共${recordCount}頁 &nbsp
61     <input type="text" value="${pageNos}" name="pageNos" size="1">頁
62     <input type="submit" value="到達">
63     </h4>
64      </form>
65   </body>
66 </html>

 

4.效果圖

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