各位大哥,有没有jsp页面分页啊??? 以前用的是 ssh 做的 ,现在不让用ssh 。没有做过不知该怎么做,希望各位大侠帮帮忙!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 数据库中读取数据的分页吧 这个有点麻烦 我写过 不过光只有代码你不一定宁明白 建议你去下载尚学堂 马士兵的一段讲解BBS的视频 那个里面有讲解怎么分页的 好像李兴华的视频也有 ,我是看的马士兵视频写的代码verycd里面能下载到 不是一样的吗,那个jsp分页页面也就是你分页的一部分代码,中间附带几个分页的标签(pageForm),在其他的jsp中include不久可以了 http://www.family168.com/tutorial/jsp/html/jsp-ch-15.html 1: 我们需要下载page标签的jar包; pager-taglib.jar [样例代码]: http://jsptags.com/tags/navigation/pager/pager-taglib-2.0.war 解压war文件 在{..}\WEB-INF\lib\pager-taglib.jar2:把这个jar 拷贝到你的web工程的lib中;3: 3-1 该标签需要我们提供1个最关键的参数 ---》 总数据量 select count(*)的值 3-2 每页显示的记录数 3-3 页码的个数 3-4 你的这个应用的url 3-5 如果你的这个应用有参数的场合 你需要设置url的参数4:默认的场合查询数据库的开始索引 的参数名称为pager.offset5: 后台的处理 后台的action中 在request.getParameter("pager.offset"); 里得到查询数据库的开始索引 并计算查询的总数据量并将计算的结果保存在requset.setAttribute('totalpage'); 把相关的查询结果设置到requset.setAttribute('xxlist');6: 前台处理 在相应jsp页面上添加 <%@ taglib uri="http://jsptags.com/tags/navigation/pager" prefix="pg" %> 取得count(*)的值 <% Integer totalPage = (Integer)request.getAttribute("totalPage"); %> <pg:pager items="<%=totalPage%>" ----》count(*)值 index="center" (忽略) maxPageItems="5" 每页显示的多少行数据 这个参数和我们hibernate中 maxResult 是一致的 maxIndexPages="10" 显示的最大页码 isOffset="<%= true %>" (忽略) export="offset,currentPageNumber=pageNumber" (忽略) scope="request" (忽略) url="stdM.do"> 你的具体业务的url(忽略) <pg:param name="method" value="list"/> url 固定的参数设置可以有多个 数据的迭代 <c:forEach items="${stdList}" var="std"> <tr> <td>${std.id}</td> <td>${std.name}</td> <td>${std.classes.name}</td> <tr> </c:forEach> 如何显示页码的程序 <pg:index> 页码的标签 <pg:prev export="pageUrl" ifnull="<%= true %>"> 前一页的标签 <% if (pageUrl != null) { %> 第一页的时候没有上一页的判断 <a href="<%= pageUrl %>">[上一页]</a> <% } %> </pg:prev> <pg:pages> <% if (pageNumber == currentPageNumber) { %> 判断那个是当前页 当前页没有连接并变颜色 <font color=#A90A08><%= pageNumber %></font> <% } else { %> <a href="<%= pageUrl %>"><%= pageNumber %></a> <% } %> </pg:pages> <pg:next export="pageUrl" ifnull="<%= true %>"> 下一页的标签 <% if (pageUrl != null) { %> 最后一页的时候没有下一页的判断 <a href="<%= pageUrl %>">[下一页]</a></td> <% }%> </pg:next> </pg:index></pg:pager> 收尾 刚发的是ssh的,不好意思,没看清楚问题。现在这个事JSP的:===================================================================================TestPage.jsp<%@ page contentType="text/html; charset=gb2312" %><%@ page language="java" %><%@ page import="java.sql.*" %><%//驱动程序名,比较旧了,如果你用mysql5,自己改。String driverName="org.gjt.mm.mysql.Driver";String userName="root";//数据库用户名String userPasswd="";//密码String dbName="bookstore";//数据库名 String tableName="items"; //表名//连接字符串String url="jdbc:mysql://localhost/"+dbName+"?user="+userName+"&password="+userPasswd;Class.forName(driverName).newInstance();Connection connection=DriverManager.getConnection(url);Statement statement = connection.createStatement();//每页显示记录数int PageSize = 8;int StartRow = 0; //开始显示记录的编号int PageNo=0;//需要显示的页数int CounterStart=0;//每页页码的初始值int CounterEnd=0;//显示页码的最大值int RecordCount=0;//总记录数;int MaxPage=0;//总页数int PrevStart=0;//前一页int NextPage=0;//下一页int LastRec=0;int LastStartRecord=0;//最后一页开始显示记录的编号//获取需要显示的页数,由用户提交if(request.getParameter("PageNo")==null){ //如果为空,则表示第1页if(StartRow == 0){ PageNo = StartRow + 1; //设定为1}}else{PageNo = Integer.parseInt(request.getParameter("PageNo")); //获得用户提交的页数StartRow = (PageNo - 1) * PageSize; //获得开始显示的记录编号}//因为显示页码的数量是动态变化的,假如总共有一百页,则不可能同时显示100个链接。而是根据当前的页数显示//一定数量的页面链接//设置显示页码的初始值!!if(PageNo % PageSize == 0){ CounterStart = PageNo - (PageSize - 1);}else{ CounterStart = PageNo - (PageNo % PageSize) + 1;}CounterEnd = CounterStart + (PageSize - 1);%><html><head><title>分页显示记录</title><link rel="stylesheet" href="style.css" type="text/css"></head><%//获取总记录数ResultSet rs = statement.executeQuery("select count(*) from items" );rs.next();RecordCount = rs.getInt(1);rs = statement.executeQuery("SELECT image_url,author,price,item_id FROM items ORDER BY item_id DESC LIMIT " +StartRow+", "+PageSize);//获取总页数MaxPage = RecordCount % PageSize;if(RecordCount % PageSize == 0){MaxPage = RecordCount / PageSize;}else{ MaxPage = RecordCount/PageSize+1;}%><body class="UsePageBg"><table width="100%" border="0" class="InternalHeader"><tr> <td width="24%"><font size=4>分页显示记录</font></td> <td width="76%"> <font size=4><%="总共"+RecordCount+"条记录 - 当前页:"+PageNo+"/"+MaxPage %></font> </td></tr></table><br><table width="100%" border="0" class="NormalTableTwo"><tr> <td class="InternalHeader">记录序号</td> <td class="InternalHeader" >图像路径</td> <td class="InternalHeader" >作者</td> <td class="InternalHeader" >价格</td> <td class="InternalHeader" >图书编号</td></tr><%int i = 1;while (rs.next()) {int bil = i + (PageNo-1)*PageSize;%><tr> <td class="NormalFieldTwo" ><%=bil %></td> <td class="NormalFieldTwo" ><%=rs.getString(1)%></td> <td class="NormalFieldTwo" ><%=rs.getString(2)%></td> <td class="NormalFieldTwo" ><%=rs.getString(3)%></td> <td class="NormalFieldTwo" ><%=rs.getString(4)%></td></tr><%i++;}%></table>><br><table width="100%" border="0" class="InternalHeader"><tr> <td><div align="center"><% out.print("<font size=4>");//显示第一页或者前一页的链接//如果当前页不是第1页,则显示第一页和前一页的链接if(PageNo != 1){ PrevStart = PageNo - 1; out.print("<a href=TestPage.jsp?PageNo=1>第一页 </a>: "); out.print("<a href=TestPage.jsp?PageNo="+PrevStart+">前一页</a>");}out.print("["); //打印需要显示的页码 for(int c=CounterStart;c<=CounterEnd;c++){ if(c <MaxPage){ if(c == PageNo){ if(c %PageSize == 0){ out.print(c); }else{ out.print(c+" ,"); } }else if(c % PageSize == 0){ out.print("<a href=TestPage.jsp?PageNo="+c+">"+c+"</a>"); }else{ out.print("<a href=TestPage.jsp?PageNo="+c+">"+c+"</a> ,"); } }else{ if(PageNo == MaxPage){ out.print(c); break; }else{ out.print("<a href=TestPage.jsp?PageNo="+c+">"+c+"</a>"); break; }}}out.print("]");;if(PageNo < MaxPage){ //如果当前页不是最后一页,则显示下一页链接 NextPage = PageNo + 1; out.print("<a href=TestPage.jsp?PageNo="+NextPage+">下一页</a>");}//同时如果当前页不是最后一页,要显示最后一页的链接if(PageNo < MaxPage){ LastRec = RecordCount % PageSize; if(LastRec == 0){ LastStartRecord = RecordCount - PageSize; } else{ LastStartRecord = RecordCount - LastRec; } out.print(":"); out.print("<a href=TestPage.jsp?PageNo="+MaxPage+">最后一页</a>");}out.print("</font>");%></div></td></tr></table><%rs.close();statement.close(); connection.close();%></body></html> java学习交流群:20378027。欢迎大家加入。 急!文件上传乱码的奇怪问题 jsp树形菜单 web服务器,双网卡分别连公网和内网的问题 请热心人不吝赐教,如何在发送http请求之前,定制头部。 关于Beans语法 servlet获取form action的字符串问题~ 关于servlet重定向的奇怪问题 关于 ResultSet is closed 的问题... 各位高手看看,异怪的一件事 关于JSP HTTP Status 500 – Internal Server Error,求大神帮一下忙! 怎样在一行中迭代两个从action中获取不同的东东? 想请问一下用JSP开发一个网页贴图程序怎么弄?
verycd里面能下载到
[样例代码]: http://jsptags.com/tags/navigation/pager/pager-taglib-2.0.war 解压war文件 在{..}\WEB-INF\lib\pager-taglib.jar2:把这个jar 拷贝到你的web工程的lib中;
3: 3-1 该标签需要我们提供1个最关键的参数 ---》 总数据量 select count(*)的值
3-2 每页显示的记录数
3-3 页码的个数
3-4 你的这个应用的url
3-5 如果你的这个应用有参数的场合 你需要设置url的参数
4:默认的场合查询数据库的开始索引 的参数名称为pager.offset5:
后台的处理 后台的action中 在request.getParameter("pager.offset"); 里得到查询数据库的开始索引
并计算查询的总数据量并将计算的结果保存在requset.setAttribute('totalpage');
把相关的查询结果设置到requset.setAttribute('xxlist');6: 前台处理 在相应jsp页面上添加 <%@ taglib uri="http://jsptags.com/tags/navigation/pager" prefix="pg" %> 取得count(*)的值
<%
Integer totalPage = (Integer)request.getAttribute("totalPage");
%>
<pg:pager
items="<%=totalPage%>" ----》count(*)值
index="center" (忽略)
maxPageItems="5" 每页显示的多少行数据 这个参数和我们hibernate中 maxResult 是一致的
maxIndexPages="10" 显示的最大页码
isOffset="<%= true %>" (忽略)
export="offset,currentPageNumber=pageNumber" (忽略)
scope="request" (忽略)
url="stdM.do"> 你的具体业务的url(忽略)
<pg:param name="method" value="list"/> url 固定的参数设置可以有多个 数据的迭代 <c:forEach items="${stdList}" var="std">
<tr>
<td>${std.id}</td>
<td>${std.name}</td>
<td>${std.classes.name}</td>
<tr>
</c:forEach> 如何显示页码的程序
<pg:index> 页码的标签
<pg:prev export="pageUrl" ifnull="<%= true %>"> 前一页的标签
<% if (pageUrl != null) { %> 第一页的时候没有上一页的判断
<a href="<%= pageUrl %>">[上一页]</a>
<% } %>
</pg:prev> <pg:pages>
<% if (pageNumber == currentPageNumber) { %> 判断那个是当前页 当前页没有连接并变颜色
<font color=#A90A08><%= pageNumber %></font>
<% } else { %>
<a href="<%= pageUrl %>"><%= pageNumber %></a>
<% } %>
</pg:pages> <pg:next export="pageUrl" ifnull="<%= true %>"> 下一页的标签
<% if (pageUrl != null) { %> 最后一页的时候没有下一页的判断
<a href="<%= pageUrl %>">[下一页]</a></td>
<% }%>
</pg:next>
</pg:index>
</pg:pager> 收尾
TestPage.jsp<%@ page contentType="text/html; charset=gb2312" %>
<%@ page language="java" %>
<%@ page import="java.sql.*" %>
<%
//驱动程序名,比较旧了,如果你用mysql5,自己改。
String driverName="org.gjt.mm.mysql.Driver";
String userName="root";//数据库用户名
String userPasswd="";//密码String dbName="bookstore";//数据库名
String tableName="items"; //表名//连接字符串
String url="jdbc:mysql://localhost/"+dbName+"?user="+userName+"&password="+userPasswd;
Class.forName(driverName).newInstance();
Connection connection=DriverManager.getConnection(url);
Statement statement = connection.createStatement();//每页显示记录数
int PageSize = 8;
int StartRow = 0; //开始显示记录的编号
int PageNo=0;//需要显示的页数
int CounterStart=0;//每页页码的初始值
int CounterEnd=0;//显示页码的最大值
int RecordCount=0;//总记录数;
int MaxPage=0;//总页数
int PrevStart=0;//前一页
int NextPage=0;//下一页
int LastRec=0;
int LastStartRecord=0;//最后一页开始显示记录的编号//获取需要显示的页数,由用户提交
if(request.getParameter("PageNo")==null){ //如果为空,则表示第1页
if(StartRow == 0){
PageNo = StartRow + 1; //设定为1
}
}else{
PageNo = Integer.parseInt(request.getParameter("PageNo")); //获得用户提交的页数
StartRow = (PageNo - 1) * PageSize; //获得开始显示的记录编号
}//因为显示页码的数量是动态变化的,假如总共有一百页,则不可能同时显示100个链接。而是根据当前的页数显示
//一定数量的页面链接//设置显示页码的初始值!!
if(PageNo % PageSize == 0){
CounterStart = PageNo - (PageSize - 1);
}else{
CounterStart = PageNo - (PageNo % PageSize) + 1;
}CounterEnd = CounterStart + (PageSize - 1);
%><html>
<head>
<title>分页显示记录</title>
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<%//获取总记录数
ResultSet rs = statement.executeQuery("select count(*) from items" );
rs.next();
RecordCount = rs.getInt(1);rs = statement.executeQuery("SELECT image_url,author,price,item_id FROM items ORDER BY item_id DESC LIMIT "
+StartRow+", "+PageSize);//获取总页数
MaxPage = RecordCount % PageSize;
if(RecordCount % PageSize == 0){
MaxPage = RecordCount / PageSize;
}else{
MaxPage = RecordCount/PageSize+1;
}
%>
<body class="UsePageBg">
<table width="100%" border="0" class="InternalHeader">
<tr>
<td width="24%"><font size=4>分页显示记录</font></td>
<td width="76%">
<font size=4><%="总共"+RecordCount+"条记录 - 当前页:"+PageNo+"/"+MaxPage %></font>
</td>
</tr>
</table><br>
<table width="100%" border="0" class="NormalTableTwo">
<tr>
<td class="InternalHeader">记录序号</td>
<td class="InternalHeader" >图像路径</td>
<td class="InternalHeader" >作者</td>
<td class="InternalHeader" >价格</td>
<td class="InternalHeader" >图书编号</td>
</tr><%
int i = 1;
while (rs.next()) {
int bil = i + (PageNo-1)*PageSize;
%>
<tr>
<td class="NormalFieldTwo" ><%=bil %></td>
<td class="NormalFieldTwo" ><%=rs.getString(1)%></td>
<td class="NormalFieldTwo" ><%=rs.getString(2)%></td>
<td class="NormalFieldTwo" ><%=rs.getString(3)%></td>
<td class="NormalFieldTwo" ><%=rs.getString(4)%></td>
</tr>
<%
i++;
}%>
</table>
><br>
<table width="100%" border="0" class="InternalHeader">
<tr>
<td><div align="center">
<%
out.print("<font size=4>");
//显示第一页或者前一页的链接
//如果当前页不是第1页,则显示第一页和前一页的链接
if(PageNo != 1){
PrevStart = PageNo - 1;
out.print("<a href=TestPage.jsp?PageNo=1>第一页 </a>: ");
out.print("<a href=TestPage.jsp?PageNo="+PrevStart+">前一页</a>");
}
out.print("["); //打印需要显示的页码
for(int c=CounterStart;c<=CounterEnd;c++){
if(c <MaxPage){
if(c == PageNo){
if(c %PageSize == 0){
out.print(c);
}else{
out.print(c+" ,");
}
}else if(c % PageSize == 0){
out.print("<a href=TestPage.jsp?PageNo="+c+">"+c+"</a>");
}else{
out.print("<a href=TestPage.jsp?PageNo="+c+">"+c+"</a> ,");
}
}else{
if(PageNo == MaxPage){
out.print(c);
break;
}else{
out.print("<a href=TestPage.jsp?PageNo="+c+">"+c+"</a>");
break;
}
}
}out.print("]");;if(PageNo < MaxPage){ //如果当前页不是最后一页,则显示下一页链接
NextPage = PageNo + 1;
out.print("<a href=TestPage.jsp?PageNo="+NextPage+">下一页</a>");
}//同时如果当前页不是最后一页,要显示最后一页的链接
if(PageNo < MaxPage){
LastRec = RecordCount % PageSize;
if(LastRec == 0){
LastStartRecord = RecordCount - PageSize;
}
else{
LastStartRecord = RecordCount - LastRec;
} out.print(":");
out.print("<a href=TestPage.jsp?PageNo="+MaxPage+">最后一页</a>");
}
out.print("</font>");
%>
</div>
</td>
</tr>
</table>
<%
rs.close();
statement.close();
connection.close();
%>
</body>
</html>