JSP仿百度分页,谷歌分页页码处理

本文详细介绍了如何使用Java语言结合jsp技术实现类似百度和谷歌的分页效果,包括分页参数设定、记录显示、分页信息展示及连接数据库等关键步骤。通过设置每页显示记录数、计算总页数、生成分页信息,实现了从第一页到最后一页的流畅过渡。此外,还提供了连接数据库的代码,确保了数据的准确性和实时性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

像百度一样的jsp分页效果,像goolge一样的分页效果!
根据设定参数一次取一页记录内容显示

jsp页面代码如下:


Java代码
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%@ page import="dao.*"%>
<%@ page import="bean.*"%>
<html>
<head>
</head>
<body>
<%
int pagesize = 10;//每页显示记录数
int liststep = 10;//最多显示分页页数
int pages = 1;//默认显示第一页
if (request.getParameter("pages") != null) {
pages = Integer.parseInt(request.getParameter("pages"));//分页页码变量
}
int count = PageDao.getmaxpagecount();//假设取出记录总数
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) { //当前页-(总显示的页列表数/2)
listbegin = 1;
}
int listend = pages + liststep / 2;//分页信息显示到第几页//当前页+(总显示的页列表数/2)
if (listend > pagescount) {
listend = pagescount + 1;
}
%>
<table align="center">
<tr>
<th>
图书编号
</th>
<th>
图书名称
</th>
<th>
出版社
</th>
<th>
作者
</th>
<th>
价格
</th>
</tr>
<%
List<Book> list = PageDao.getAllPageInfo(pages);
Iterator<Book> it = list.iterator();
while (it.hasNext()) {
Book b = it.next();
if (b.getId() % 2 == 0) {
out.println("<tr bgcolor='blue'>");
} else {
out.println("<tr bgcolor='red'>");
}
%>
<td><%=b.getId()%></td>
<td><%=b.getBookname()%></td>
<td><%=b.getBookpublish()%></td>
<td><%=b.getBookauthor()%></td>
<td><%=b.getBookprice()%></td>
<%
out.println("<tr bgcolor='red'>");
}
%>
</table>
<table align="center">
<tr>
<%
//<显示分页信息
//<显示上一页
if (pages > 1) {
out.println("<td><a href=?pages=" + (pages - 1)
+ ">上一页</a></td>");
}//>显示上一页
//<显示分页码
for (int i = listbegin; i < listend; i++) {
if (i != pages) {//如果i不等于当前页
out.println("<td><a href=?pages=" + i + ">[" + i
+ "]</a></td>");
} else {
out.println("<td>[" + i + "]</td>");
}
}//显示分页码>
//<显示下一页
if (pages != pagescount) {
out.println("<td><a href=?pages=" + (pages + 1)
+ ">下一页</a></td>");
}//>显示下一页
//>显示分页信息
%>
</tr>
</table>
</body>
</html>



Dao层代码:


Java代码
package dao;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import bean.Book;

public class PageDao {
public static int getmaxpagecount() {
int num = 0;
Connection conn = null;
Statement stm = null;
ResultSet rs = null;
try {
conn = ConnectionManager.getInstances();
stm = conn.createStatement();
rs = stm.executeQuery("select count(*) from book");
if (rs.next()) {
num = rs.getInt(1);
}
} catch (SQLException e) {
e.printStackTrace();
}
return num;
}

public static List<Book> getAllPageInfo(int curpage) {
List<Book> list = new ArrayList<Book>();
Connection conn = null;
Statement stm = null;
ResultSet rs = null;

try {
conn = ConnectionManager.getInstances();
conn.setAutoCommit(false);
stm = conn.createStatement();
rs = stm
.executeQuery(("select top 10 * from book where id not in (select top "
+ ((curpage - 1) * 10) + " id from book order by id)order by id"));
while (rs.next()) {
Book b = new Book();
b.setId(rs.getInt("id"));
b.setBookname(rs.getString("bookname"));
b.setBookpublish(rs.getString("bookpublish"));
b.setBookauthor(rs.getString("bookauthor"));
b.setBookprice(rs.getDouble("bookprice"));
list.add(b);
}
conn.commit();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
rs.close();
stm.close();
conn.close();
} catch (SQLException e) {
try {
conn.rollback();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
e.printStackTrace();
}
}
return list;
}
}



连接代码:




Java代码
package dao;
import java.sql.*;
public class ConnectionManager {

public static final String DRIVER="com.microsoft.jdbc.sqlserver.SQLServerDriver";
public static final String URL="jdbc:microsoft:sqlserver://127.0.0.1:1433;databasename=pagination";
public static final String UID="sa";
public static final String PWD="112233";

public static Connection getInstances(){
Connection conn=null;

try {
Class.forName(DRIVER);
conn=DriverManager.getConnection(URL,UID,PWD);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {

e.printStackTrace();
}
return conn;
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值