转载请勿删除此消息
本文出处: http://blog.youkuaiyun.com/tolys/archive/2007/10/06/1813197.aspx
像百度一样的jsp分页效果,像goolge一样的分页效果!
根据设定参数一次取一页记录内容显示
代码如下:
<%
@ page language
=
"
java
"
pageEncoding
=
"
GB2312
"
%>
<%
String path
=
request.getContextPath();
String basePath
=
request.getScheme()
+
"
://
"
+
request.getServerName()
+
"
:
"
+
request.getServerPort()
+
path
+
"
/
"
;
%>

<!
DOCTYPE HTML PUBLIC
"
-//W3C//DTD HTML 4.01 Transitional//EN
"
>
<
html
>
<
head
>
<
base href
=
"
<%=basePath%>
"
>

<
title
>
仿BAIDU
&
GOOGLE 分页页码显示格式
</
title
>
<
meta http
-
equiv
=
"
pragma
"
content
=
"
no-cache
"
>
<
meta http
-
equiv
=
"
cache-control
"
content
=
"
no-cache
"
>
<
meta http
-
equiv
=
"
expires
"
content
=
"
0
"
>
<
meta http
-
equiv
=
"
keywords
"
content
=
"
keyword1,keyword2,keyword3
"
>
<
meta http
-
equiv
=
"
description
"
content
=
"
This is my page
"
>
<
style
>
<!--

body
...
{
.p...{
PADDING-LEFT: 18px; FONT-SIZE: 14px; WORD-SPACING: 4px
}
}
-->
</
style
>
</
head
>

<
body
>
<
div
class
=
"
p
"
>
<%
int
pagesize
=
10
;
//
每页显示记录数
int
liststep
=
20
;
//
最多显示分页页数
int
pages
=
1
;
//
默认显示第一页

if
(request.getParameter(
"
pages
"
)
!=
null
)
...
{
pages = Integer.parseInt(request.getParameter("pages"));//分页页码变量
}
//
sql="select count(*) from table";
//
取出记录总数,把*换成记录名性能更加
int
count
=
305
;
//
假设取出记录总数
int
pagescount
=
(
int
) Math.ceil((
double
) count
/
pagesize);
//
求总页数,ceil(num)取整不小于num

if
(pagescount
<
pages)
...
{
pages = pagescount;//如果分页变量大总页数,则将分页变量设计为总页数
}

if
(pages
<
1
)
...
{
pages = 1;//如果分页变量小于1,则将分页变量设为1
}
int
listbegin
=
(pages
-
(
int
) Math.ceil((
double
) liststep
/
2
));
//
从第几页开始显示分页信息

if
(listbegin
<
1
)
...
{
listbegin = 1;
}
int
listend
=
pages
+
liststep
/
2
;
//
分页信息显示到第几页

if
(listend
>
pagescount)
...
{
listend = pagescount + 1;
}

//
显示数据部分
int
recordbegin
=
(pages
-
1
)
*
pagesize;
//
起始记录
int
recordend
=
0
;
recordend
=
recordbegin
+
pagesize;
//
最后一页记录显示处理

if
(pages
==
pagescount)
...
{
recordend = (int) (recordbegin + pagesize * (count % pagesize) * 0.1);
}
//
Connection conn = null;
//
要测试显示数据请自己链接数据库
//
PreparedStatement stmt = null;
//
String strSql = "select * from usertable limit recordbegin,pagesize";
//
取出分页记录,SQL因数据库而异!
//
stmt = conn.prepareStatement(strSql);
//
ResultSet rs = stmt.executeQuery();
//
while(rs.next())){
//
response.getWriter().println(""+rs.getString("userId")+"<br>");
//
显示取出的数据
//
}

for
(
int
i
=
recordbegin; i
<
recordend; i
++
)
...
{
response.getWriter().println("record " + i + "<br>");
}

//
显示数据部分
//
<显示分页信息
//
<显示上一页

if
(pages
>
1
)
...
{
response.getWriter().println(
"<a href=?pages=" + (pages - 1) + ">上一页</a>");
}
//
>显示上一页
//
<显示分页码

for
(
int
i
=
listbegin; i
<
listend; i
++
)
...
{
if (i != pages) ...{//如果i不等于当前页
response.getWriter().println(
"<a href=?pages=" + i + ">[" + i + "]</a>");
} else ...{
response.getWriter().println("[" + i + "]");
}
}
//
显示分页码>
//
<显示下一页

if
(pages
!=
pagescount)
...
{
response.getWriter().println(
"<a href=?pages=" + (pages + 1) + ">下一页</a>");
}
//
>显示下一页
//
>显示分页信息
%>
</
div
>
</
body
>
</
html
>
本文介绍了一种使用JSP实现类似百度和谷歌分页效果的方法。通过设置参数来分页显示记录,包括每页记录数、分页显示的最大页码数等,并提供了完整的JSP代码示例。
1665

被折叠的 条评论
为什么被折叠?



