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

<%@ 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层代码:

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) {

e1.printStackTrace();

}

e.printStackTrace();

}

}

return list;

}

}



数据库连接代码

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、付费专栏及课程。

余额充值