今天看了很多人写的分页程序,刚绝都太繁杂了。刚绝能不能再写简单一点 ,所以就花了一个多小时写了个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有了这些你就可以了。你可以修改一下数据库,然后运行一下就能看到效果