本文通過(guò)兩個(gè)方法:(1)計(jì)算總的頁(yè)數(shù)。 (2)查詢指定頁(yè)數(shù)據(jù),實(shí)現(xiàn)簡(jiǎn)單的分頁(yè)效果。
思路:首先得在 DAO 對(duì)象中提供分頁(yè)查詢的方法,在控制層調(diào)用該方法查到指定頁(yè)的數(shù)據(jù),在表示層通過(guò) EL 表達(dá)式和 JSTL 將該頁(yè)數(shù)據(jù)顯示出來(lái)。
先給大家展示下效果圖:

題外話:該分頁(yè)顯示是用 “表示層-控制層-DAO層-數(shù)據(jù)庫(kù)”的設(shè)計(jì)思想實(shí)現(xiàn)的,有什么需要改進(jìn)的地方大家提出來(lái),共同學(xué)習(xí)進(jìn)步。廢話不多說(shuō)了,開(kāi)始進(jìn)入主題,詳細(xì)步驟如下所示:
1.DAO層-數(shù)據(jù)庫(kù)
JDBCUtils 類用于打開(kāi)和關(guān)閉數(shù)據(jù)庫(kù),核心代碼如下:
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ù)庫(kù)* @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 blocke.printStackTrace();}return conn;}/*** close 關(guān)閉數(shù)據(jù)庫(kù)* @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 blocke.printStackTrace();}}if(result != null){try {result.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}UserDao 類中的方法 getPage() 和方法 listUser() 分別用來(lái)計(jì)算總頁(yè)數(shù)和查詢指定頁(yè)的數(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ì)算總的頁(yè)數(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 blocke.printStackTrace();}finally{jdbc.close(conn, pstmt, result);}if(t1 != 0){t2=t2+1;}return t2;}/*** 查詢指定頁(yè)的數(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 blocke.printStackTrace();}finally{jdbc.close(conn, pstmt, result);}return list;}}User 類用于存儲(chǔ)查詢到的數(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 對(duì)象查詢數(shù)據(jù)并指派頁(yè)面顯示數(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.表示層
輸出頁(yè)面 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">圖書(shū)信息</h2><table align="center"><tr><td>書(shū)號(hào)</td><td>書(shū)名</td><td>庫(kù)存量</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" >首頁(yè)</a><a href="ListUser?pageNos=${pageNos-1 }">上一頁(yè)</a></c:if><c:if test="${pageNos <recordCount }"><a href="ListUser?pageNos=${pageNos+1 }">下一頁(yè)</a><a href="ListUser?pageNos=${recordCount }">末頁(yè)</a></c:if><form action="ListUser"><h4 align="center">共${recordCount}頁(yè)  <input type="text" value="${pageNos}" name="pageNos" size="1">頁(yè)<input type="submit" value="到達(dá)"></h4></form></body></html>以上所述是小編給大家介紹的Java Web 簡(jiǎn)單的分頁(yè)顯示實(shí)例代碼,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)武林網(wǎng)網(wǎng)站的支持!
新聞熱點(diǎn)
疑難解答
圖片精選