各位大哥: 本人现在想把数据显示到页面上,要用到分页技术,网上没找到合适的,而我手头上的分页技术效率低,谁有经典的jsp分页方法,最好能用Java写成一个方法,然后控制,最好是通用的,拿过来就能用。如能发到我的邮箱就更好了:
[email protected],谢谢各位!!
[email protected],谢谢各位!!
解决方案 »
- 请教一个关于文件上传的问题
- svn: Can't move 'C:\Users\happying\workspace\tfb-web\WebContent\vision\js\bof\ch
- 请教:java中如何获得文件的路径???
- 请教一个javabean值传递的问题!
- 请问:Servlet如何调用Web services操作?
- #在servlet中想实现停顿几秒钟的效果该怎么办?
- 过年了,散分了。小弟给各位IT精英拜年了,希望大家人财双收!
- 有什么好好方法把HTML中的TABLE存入数据库中
- 如何从JSP中向javascript 的函数中传字符型参数?
- web项目权限控制放在session里面会有什么隐患吗
- FineReport通过权限控制数据访问方案
- [Struts] Cannot find ActionMappings or ActionFormBeans collection
if (request.getParameter("page") == null){
page=1; //默认为1
}else{
if (Integer.parseInt(request.getParameter("page")) < 1){
page=1;
}else{
int temp = 数据的count;
int tempPg; if (temp%每页显示的条数 != 0){
tempPg = temp/每页显示的条数 + 1;
}else{
tempPg = temp/每页显示的条数;
} if (Integer.parseInt(request.getParameter("page")) > tempPg){
page = tempPg;
}else{
page = Integer.parseInt(request.getParameter("page"));
}
}
}//SQL相关int rowBegin=0;
if (page >= 1){
rowBegin = (page-1) * 每页显示的条数;
}String sql = "select top 每页显示的条数 * from 表 where ID not in (select top "+rowBegin +" ID from 表)"
if (request.getParameter("page") == null){
page=1; //默认为1
}else{
if (Integer.parseInt(request.getParameter("page")) < 1){
page=1;
}else{
int temp = 数据的count;
int tempPg; if (temp%每页显示的条数 != 0){
tempPg = temp/每页显示的条数 + 1;
}else{
tempPg = temp/每页显示的条数;
} if (Integer.parseInt(request.getParameter("page")) > tempPg){
page = tempPg;
}else{
page = Integer.parseInt(request.getParameter("page"));
}
}
}
//SQL相关 int rowBegin=0;
if (page >= 1){
rowBegin = (page-1) * 每页显示的条数;
} String sql = "select top 每页显示的条数 * from 表 where ID not in (select top "+rowBegin +" ID from 表)"
<%@ page import="java.util.*"%>
<%@ page import="cn.tang.dao.impl.*"%>
<%@page import="cn.tang.dao.*"%>
<%@page import="cn.tang.entity.*"%>
<%
TopicDao topicDao = new TopicDaoImpl();
UserDao userDao = new UserDaoImpl();
ReplyDao replyDao = new ReplyDaoImpl();
BoardDao boardDao = new BoardDaoImpl(); int p = Integer.parseInt(request.getParameter("page"));
int boardId = Integer.parseInt(request.getParameter("boardId"));
List list = topicDao.findListTopic(p, boardId); //取得该板块主题
Board board = boardDao.findBoard(boardId); //取得板块信息
int prep = p;
int nextp = p;
if (list.size() == 20)
nextp = p + 1;
if (p > 1)
prep = p - 1;
%>
<html>
<head>
<title>帖子列表</title>
<link href="css/style.css" rel="stylesheet" type="text/css" />
</head> <body>
<div id="Wholer">
<div id="Header">
<div class="logo">
<br>
<img src="image/logo.gif" />
</div>
<%
if(session.getAttribute("user")==null){
%>
<div class="h">
您尚未:
<a href="login.jsp">登陆</a> |
<a href="reg.jsp">注册</a> |
</div>
<%
}else {
User loginUser=(User)session.getAttribute("user");
%>
<div class="h">
您好:<%=loginUser.getUName() %> |
<a href="manage/doLogout.jsp">登出</a> |
</div>
<%} %>
</div>
<div id="Bodyer">
<div id="div">
>>
<b><a href="index.jsp">论坛首页 </a> </b>>>
<b><%=board.getBoardName()%></b>
</div>
<div id="div">
<a href="post.jsp?boardId=<%=boardId %>"><img src="image/post.gif" border="0"></a>
<br>
<a href="list.jsp?page=<%=p-1 %>&boardId=<%=boardId %>">上一页</a> |
<a href="list.jsp?page=<%=p+1 %>&boardId=<%=boardId %>">下一页</a>
</div>
<div>
<table width="100%" cellpadding="0" cellspacing="0">
<tr>
<td colspan="4" class="h">
</td>
</tr>
<tr class="tr2" align="center">
<td colspan="2">
文章
</td>
<td width="5%">
作者
</td>
<td width="5%">
回复
</td>
</tr>
<%
for (int i = 0; i < list.size(); i++) {
Topic topic = (Topic) list.get(i);
User user = userDao.findUser(topic.getUid());
%>
<tr class="tr1">
<td width="5%" id="td">
<img src="image/topic.gif" width="18" height="21">
</td>
<td>
<a href="detail.jsp?page=1&topicId=<%=topic.getTopicId()%>"><%=topic.getTitle()%></a>
</td>
<td id="td"><%=user.getUName()%></td>
<td id="td"><%=replyDao.findCountReply(topic.getTopicId())%></td>
</tr>
<%
}
%>
</table>
</div>
</div>
<div id="Footer">
<!-- 声明 -->
<br />
<center class="gray">
版权所有
</center>
</div>
</div>
</body>
</html>
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);
//如果当前页是第一页,则灰色首页和上一页代码
if (PageNo == 1) {
NextPage = PageNo + 1;
out.print("<font face=宋体 size=2> 首页 </font>");
out.print("<font face=宋体 size=2> 上一页 </font>");
out.print("<a href=testpage.jsp?PageNo=" + NextPage
+ "><font face=宋体 size=2> 下一页 </font></a>");
out.print("<a href=testpage.jsp?PageNo=" + MaxPage
+ "><font face=宋体 size=2> 末页 </font></a>");
} else if (PageNo == MaxPage) {
PrevStart = PageNo - 1;
out
.print("<a href=testpage.jsp?PageNo=1><font face=宋体 size=2>首页</font></a>");
out.print("<a href=testpage.jsp?PageNo=" + PrevStart
+ "><font face=宋体 size=2> 上一页 </font></a>");
out.print("<font face=宋体 size=2> 下一页 </font>");
out.print("<font face=宋体 size=2> 末页 </font>");
} else {
PrevStart = PageNo - 1;
NextPage = PageNo + 1;
out
.print("<a href=testpage.jsp?PageNo=1><font face=宋体 size=2> 首页 </font></a>");
out.print("<a href=testpage.jsp?PageNo=" + PrevStart
+ "><font face=宋体 size=2> 上一页 </font></a>");
out.print("<a href=testpage.jsp?PageNo=" + NextPage
+ "><font face=宋体 size=2> 下一页 </font></a>");
out.print("<a href=testpage.jsp?PageNo=" + MaxPage
+ "><font face=宋体 size=2> 末页 </font></a>");
}
如果要求数据要时时更新的话
那分页就把语句写在SQL中,读出来就行
如果要求不是时时更新可以全部读取出来放在Session中
然后用一个类来分页,意思就是传入得到的所有数据
返回的是第几页的数据~
如果你想要,我这有有个自己写的用session保存所有数据然后分页的代码
对读出来的数据要求不是那么严谨的话
这个方法还不错,可以减少查询数据的操作~
totalPage = (count + pageSize - 1) / pageSize,
楼主可以下载下来改成 mvc 版的:关键是里边的分页思想比较不错,很通用
Struts标记 和HIBERNATE 中都有自带分页的!!
自己去看吧!这是很经典的!
可以减少java代吗,提高开发速度。