Java Web 簡單的分頁顯示實(shí)例代碼
本文通過兩個方法:(1)計(jì)算總的頁數(shù)。 (2)查詢指定頁數(shù)據(jù),實(shí)現(xiàn)簡單的分頁效果。
思路:首先得在 DAO 對象中提供分頁查詢的方法,在控制層調(diào)用該方法查到指定頁的數(shù)據(jù),在表示層通過 EL 表達(dá)式和 JSTL 將該頁數(shù)據(jù)顯示出來。
先給大家展示下效果圖:
題外話:該分頁顯示是用 “表示層-控制層-DAO層-數(shù)據(jù)庫”的設(shè)計(jì)思想實(shí)現(xiàn)的,有什么需要改進(jìn)的地方大家提出來,共同學(xué)習(xí)進(jìn)步。廢話不多說了,開始進(jìn)入主題,詳細(xì)步驟如下所示:
1.DAO層-數(shù)據(jù)庫
JDBCUtils 類用于打開和關(guān)閉數(shù)據(jù)庫,核心代碼如下:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class JDBCUtils { private Connection conn=null; private PreparedStatement pstmt=null; /** * connect 連接數(shù)據(jù)庫 * @return */ public Connection connect(){ String user="root"; String password="1234"; String driverClass = "com.mysql.jdbc.Driver"; String jdbcUrl = "jdbc:mysql://localhost:3306/book"; try { Class.forName(driverClass); conn = DriverManager.getConnection(jdbcUrl, user, password); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return conn; } /** * close 關(guān)閉數(shù)據(jù)庫 * @param conn * @param pstmt * @param resu */ public void close(Connection conn,PreparedStatement pstmt,ResultSet result){ if(conn != null){ try { conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block } } if(pstmt != null){ try { pstmt.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(result != null){ try { result.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
UserDao 類中的方法 getPage() 和方法 listUser() 分別用來計(jì)算總頁數(shù)和查詢指定頁的數(shù)據(jù),核心代碼如下:
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.db.JDBCUtils; public class UserDao { /** * 計(jì)算總的頁數(shù) * @return */ public int getPage(){ int recordCount=0,t1=0,t2=0; PreparedStatement pstmt=null; ResultSet result=null; JDBCUtils jdbc=new JDBCUtils(); Connection conn=jdbc.connect(); String sql="select count(*) from books"; try { pstmt=conn.prepareStatement(sql); result=pstmt.executeQuery(); result.next(); recordCount=result.getInt(1); t1=recordCount%5; t2=recordCount/5; } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ jdbc.close(conn, pstmt, result); } if(t1 != 0){ t2=t2+1; } return t2; } /** * 查詢指定頁的數(shù)據(jù) * @param pageNo * @return */ public List<User> listUser(int pageNo){ PreparedStatement pstmt=null; ResultSet result=null; List<User> list=new ArrayList<User>(); int pageSize=5; int page=(pageNo-1)*5; JDBCUtils jdbc=new JDBCUtils(); Connection conn=jdbc.connect(); String sql="select * from books order by id limit ?,?"; try { pstmt=conn.prepareStatement(sql); pstmt.setInt(1, page); pstmt.setInt(2, pageSize); result=pstmt.executeQuery(); while(result.next()){ User user=new User(); user.setId(result.getInt(1)); user.setName(result.getString(2)); user.setNumber(result.getString(3)); list.add(user); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ jdbc.close(conn, pstmt, result); } return list; } }
User 類用于存儲查詢到的數(shù)據(jù),核心代碼如下:
public class User { private int id; private String name; private String number; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getNumber() { return number; } public void setNumber(String number) { this.number = number; } }
2.控制層
ListUser 類內(nèi)部調(diào)用 UserDao 對象查詢數(shù)據(jù)并指派頁面顯示數(shù)據(jù),核心代碼如下:
import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.dao.User; import com.dao.UserDao; public class ListUser extends HttpServlet { public ListUser() { super(); } public void destroy() { super.destroy(); // Just puts "destroy" string in log // Put your code here } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setCharacterEncoding("utf-8"); int pageNo = 1; UserDao userdao=new UserDao(); List<User> lists=new ArrayList<User>(); String pageno=request.getParameter("pageNos"); if(pageno != null){ pageNo=Integer.parseInt(pageno); } lists=userdao.listUser(pageNo); int recordCount=userdao.getPage(); request.setAttribute("recordCount", userdao.getPage()); request.setAttribute("listss", lists); request.setAttribute("pageNos", pageNo); request.getRequestDispatcher("userlist.jsp").forward(request, response); } public void init() throws ServletException { // Put your code here } }
3.表示層
輸出頁面 userlist.jsp ,使用 EL 和 JSTL 輸出查詢結(jié)果,核心代碼如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%> <% 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>My JSP 'userlist.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> <style type="text/css"> th,td{width: 150px;border: 2px solid gray;text-align: center;} body{text-align: center;} a{text-decoration: none;} table {border-collapse: collapse;} </style> </head> <body> <h2 align="center">圖書信息</h2> <table align="center"> <tr><td>書號</td><td>書名</td><td>庫存量</td></tr> </table> <table align="center"> <c:forEach items="${listss}" var="person"> <tr> <td class="hidden-480">${person.id}</td> <td class="hidden-480">${person.name }</td> <td class="hidden-480">${person.number }</td> </tr> </c:forEach> </table> <br> <c:if test="${pageNos>1 }"> <a href="ListUser?pageNos=1" >首頁</a> <a href="ListUser?pageNos=${pageNos-1 }">上一頁</a> </c:if> <c:if test="${pageNos <recordCount }"> <a href="ListUser?pageNos=${pageNos+1 }">下一頁</a> <a href="ListUser?pageNos=${recordCount }">末頁</a> </c:if> <form action="ListUser"> <h4 align="center">共${recordCount}頁   <input type="text" value="${pageNos}" name="pageNos" size="1">頁 <input type="submit" value="到達(dá)"> </h4> </form> </body> </html>
以上所述是小編給大家介紹的Java Web 簡單的分頁顯示實(shí)例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
Dapr在Java中的服務(wù)調(diào)用實(shí)戰(zhàn)過程詳解
這篇文章主要為大家介紹了Dapr在Java中的服務(wù)調(diào)用實(shí)戰(zhàn)過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06SpringBoot+Vue項(xiàng)目部署上線的實(shí)現(xiàn)示例
本文主要介紹了SpringBoot+Vue項(xiàng)目部署上線的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-02-02SpringBoot+Security 發(fā)送短信驗(yàn)證碼的實(shí)現(xiàn)
這篇文章主要介紹了SpringBoot+Security 發(fā)送短信驗(yàn)證碼的實(shí)現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-05-05Java文件斷點(diǎn)續(xù)傳實(shí)現(xiàn)原理解析
這篇文章主要介紹了Java文件斷點(diǎn)續(xù)傳實(shí)現(xiàn)原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05Java使用C3P0數(shù)據(jù)源鏈接數(shù)據(jù)庫
這篇文章主要為大家詳細(xì)介紹了Java使用C3P0數(shù)據(jù)源鏈接數(shù)據(jù)庫,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08springboot實(shí)現(xiàn)郵箱發(fā)送(激活碼)功能的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用springboot實(shí)現(xiàn)郵箱發(fā)送(激活碼)功能,文中的示例代碼簡潔易懂,有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-10-10LRU算法及Apache?LRUMap源碼實(shí)例解析
這篇文章主要給大家介紹了關(guān)于LRU算法及Apache?LRUMap源碼解析的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2021-11-11