geminihr 2013-03-01
本文出处:http://blog.csdn.net/tolys/archive/2007/10/06/1813197.aspx
像百度一样的jsp分页效果,像goolge一样的分页效果!
根据设定参数一次取一页记录内容显示
代码如下:
<%@pagelanguage="java"pageEncoding="GB2312"%>
<%
Stringpath=request.getContextPath();
StringbasePath=request.getScheme()+"://"
+request.getServerName()+":"+request.getServerPort()
+path+"/";
%>
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
<html>
<head>
<basehref="<%=basePath%>">
<title>仿BAIDU&GOOGLE分页页码显示格式</title>
<metahttp-equiv="pragma"content="no-cache">
<metahttp-equiv="cache-control"content="no-cache">
<metahttp-equiv="expires"content="0">
<metahttp-equiv="keywords"content="keyword1,keyword2,keyword3">
<metahttp-equiv="description"content="Thisismypage">
<style>
<!--
body{
.p{
PADDING-LEFT:18px;FONT-SIZE:14px;WORD-SPACING:4px
}
}
-->
</style>
</head>
<body>
<divclass="p">
<%
intpagesize=10;//每页显示记录数
intliststep=20;//最多显示分页页数
intpages=1;//默认显示第一页
if(request.getParameter("pages")!=null){
pages=Integer.parseInt(request.getParameter("pages"));//分页页码变量
}
//sql="selectcount(*)fromtable";//取出记录总数,把*换成记录名性能更加
intcount=305;//假设取出记录总数
intpagescount=(int)Math.ceil((double)count/pagesize);//求总页数,ceil(num)取整不小于num
if(pagescount<pages){
pages=pagescount;//如果分页变量大总页数,则将分页变量设计为总页数
}
if(pages<1){
pages=1;//如果分页变量小于1,则将分页变量设为1
}
intlistbegin=(pages-(int)Math.ceil((double)liststep/2));//从第几页开始显示分页信息
if(listbegin<1){
listbegin=1;
}
intlistend=pages+liststep/2;//分页信息显示到第几页
if(listend>pagescount){
listend=pagescount+1;
}
//显示数据部分
intrecordbegin=(pages-1)*pagesize;//起始记录
intrecordend=0;
recordend=recordbegin+pagesize;
//最后一页记录显示处理
//if(pages==pagescount){
//recordend=(int)(recordbegin+pagesize*(count%pagesize)*0.1);
//}
if(pages==pagescount&&count%pagesize!=0){//感谢shixiangkun在博客中提出问题
recordend=(int)(recordbegin+(count%pagesize));
}
//Connectionconn=null;//要测试显示数据请自己链接数据库
//PreparedStatementstmt=null;
//StringstrSql="select*fromusertablelimitrecordbegin,pagesize";//取出分页记录,SQL因数据库而异!
//stmt=conn.prepareStatement(strSql);
//ResultSetrs=stmt.executeQuery();
//while(rs.next())){
//response.getWriter().println(""+rs.getString("userId")+"<br>");//显示取出的数据
//}
for(inti=recordbegin;i<recordend;i++){
response.getWriter().println("record"+i+"<br>");
}
//显示数据部分
//<显示分页信息
//<显示上一页
if(pages>1){
response.getWriter().println(
"<ahref=?pages="+(pages-1)+">上一页</a>");
}//>显示上一页
//<显示分页码
for(inti=listbegin;i<listend;i++){
if(i!=pages){//如果i不等于当前页
response.getWriter().println(
"<ahref=?pages="+i+">["+i+"]</a>");
}else{
response.getWriter().println("["+i+"]");
}
}//显示分页码>
//<显示下一页
if(pages!=pagescount){
response.getWriter().println(
"<ahref=?pages="+(pages+1)+">下一页</a>");
}//>显示下一页
//>显示分页信息
%>
</div>
</body>
</html>