今天看了很多人寫的分頁程式,剛絕都太繁雜了。剛絕能不能再寫簡單一點 ,所以就花了一個多小時寫了個jstl+EL+jsp的楓葉程式,代碼相當簡單,並且容易理解,也容易修改成自己的分頁程式。先把代碼貼出來看看:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%@include file="inner/jstl.jsp"%><%@include file="inner/DataSource.jsp"%><% if (request.getParameter("currentPage") == null) { pageContext.setAttribute("currentPage", new Integer(0)); } else { pageContext.setAttribute("currentPage", request .getParameter("currentPage")); }%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <title>Paging show</title></head> <body> <sql:query sql="select * from new_components" var="news"> </sql:query> <c:set var="resultNum"> <jsp:getProperty name="news" property="rowCount" /> </c:set> <c:set var="PerPageNum" value="5" /> <% int perPageNum = Integer.parseInt((String) pageContext .getAttribute("PerPageNum")); int resultNum = Integer.parseInt((String) pageContext .getAttribute("resultNum")); int pageNum = (int) (resultNum / perPageNum + 1); for (int i = 0; i <= pageNum; i++) { %> <a href="showDB.jsp?currentPage=<%=i%>">link<%=i%></a> <% } %> <div> <table id="cc" border="2"> <c:forEach var="new" items="${news.rows}" begin="${currentPage*PerPageNum}" end="${PerPageNum+currentPage*PerPageNum-1}"> <tr> <td> ${new.link} </td> <td> ${new.name} </td> </tr> </c:forEach> </table> </div> </body></html>
---------------------------------------------------
jstl.jsp頁面:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%><%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="functions"%><%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%><%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x"%>DataSource.jsp頁面:<sql:setDataSource url="jdbc:mysql://localhost:3306/news" driver="com.mysql.jdbc.Driver" user="***" password="****" />
下面我們來解釋一些變數:
假設你有26記錄,你希望每一頁顯示5,那麼你需要6頁
currentPage 就是標誌6裡面的任意一頁,這是通過超連結實現的。
resultNum 也就是所有的26條記錄
PerPageNum 希望每一頁顯示的記錄條數
Ok有了這些你就可以了。你可以修改一下資料庫,然後運行一下就能看到效果