Java 实现分页功能
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test?allowMultiQueries=true&useUnicode=true&characterEncoding=utf8
user=root
password=root
cn.zr.testpage.entity.User.java
package cn.zr.testpage.entity;
public class User {
private String name;
private int age;
private String hobby;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getHobby() {
return hobby;
}
public void setHobby(String hobby) {
this.hobby = hobby;
}
public User() {
}
public User(String name, int age, String hobby) {
this.name = name;
this.age = age;
this.hobby = hobby;
}
@Override
public String toString() {
return "User [name=" + name + ", age=" + age + ", hobby=" + hobby + "]";
}
}
cn.zr.testpage.service.UserService.java
package cn.zr.testpage.service;
import java.util.List;
import cn.zr.testpage.entity.User;
import cn.zr.testpage.utils.Page;
public interface UserService {
int getAmount();
List<User> getUserInfo(Page page);
}
cn.zr.testpage.service.impl.UserServiceImpl.java
package cn.zr.testpage.service.impl;
import java.util.List;
import cn.zr.testpage.dao.UserDao;
import cn.zr.testpage.dao.impl.UserDaoImpl;
import cn.zr.testpage.entity.User;
import cn.zr.testpage.service.UserService;
import cn.zr.testpage.utils.Page;
public class UserServiceImpl implements UserService {
private UserDao userDao;
{
userDao = new UserDaoImpl();
}
@Override
public int getAmount() {
return userDao.getAmount();
}
@Override
public List<User> getUserInfo(Page page) {
return userDao.getUserInfo(page);
}
}
cn.zr.testpage.dao.UserDao.java
package cn.zr.testpage.dao;
import java.util.List;
import cn.zr.testpage.entity.User;
import cn.zr.testpage.utils.Page;
public interface UserDao {
int getAmount();
List<User> getUserInfo(Page page);
}
cn.zr.testpage.dao.impl.UserDaoImpl.java
package cn.zr.testpage.dao.impl;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import cn.zr.testpage.dao.UserDao;
import cn.zr.testpage.entity.User;
import cn.zr.testpage.utils.JdbcUtils;
import cn.zr.testpage.utils.Page;
import cn.zr.testpage.utils.UserBasicalImpl;
public class UserDaoImpl extends UserBasicalImpl implements UserDao{
@Override
public int getAmount() {
connection = JdbcUtils.getConnection();
String sql = "SELECT COUNT(*) FROM USERINFO";
int count = 0;
try {
pStatement = connection.prepareStatement(sql);
rSet = pStatement.executeQuery();
if(rSet.next()){
count = rSet.getInt(1);
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
super.close();
}
return count;
}
@Override
public List<User> getUserInfo(Page page) {
connection = JdbcUtils.getConnection();
String sql = "SELECT 姓名,年龄,爱好 FROM USERINFO LIMIT ?,?";
List<User> list = new ArrayList<User>();
try {
pStatement = connection.prepareStatement(sql);
pStatement.setInt(1, page.getStart());
pStatement.setInt(2, page.getSize());
rSet = pStatement.executeQuery();
while(rSet.next()){
User user = new User();
user.setName(rSet.getString("姓名"));
user.setAge(rSet.getInt("年龄"));
user.setHobby(rSet.getString("爱好"));
list.add(user);
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
super.close();
}
return list;
}
}
cn.zr.testpage.servlet.ListServlet.java
package cn.zr.testpage.servlet;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.zr.testpage.entity.User;
import cn.zr.testpage.service.UserService;
import cn.zr.testpage.service.impl.UserServiceImpl;
import cn.zr.testpage.utils.BaseServlet;
import cn.zr.testpage.utils.Page;
public class ListServlet extends BaseServlet{
private static final long serialVersionUID = 1L;
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
System.out.println("...doGet...");
String curpage = req.getParameter("curpage");
UserService userService = new UserServiceImpl();
int count = userService.getAmount();
int currentpage = super.currentPage(curpage);
int currentpage = super.currentPage(curpage);
Page page = new Page(count, currentpage, pagesize);
List<User> users = userService.getUserInfo(page);
req.setAttribute("page", page);
req.setAttribute("users", users);
System.out.println(count);
System.out.println(users);
req.getRequestDispatcher("/WEB-INF/jsp/list.jsp").forward(req, resp);
}
}
cn.zr.testpage.utils.BaseServlet.java
package cn.zr.testpage.utils;
import javax.servlet.http.HttpServlet;
public class BaseServlet extends HttpServlet {
public int pagesize = 2;
public int currentPage(String cpage){
int currentpage = cpage!=null && !"".equals(cpage) && isint(cpage)? currentpage=Integer.parseInt(cpage):1;
return currentpage;
}
public boolean isint(String str){
boolean bo = true;
try {
Integer.parseInt(str);
} catch (Exception e) {
bo = false;
}
return bo;
}
}
cn.zr.testpage.utils.JdbcUtils.java
package cn.zr.testpage.utils;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class JdbcUtils {
public static Connection getConnection() {
String url="jdbc:mysql://localhost:3306/test?allowMultiQueries=true&useUnicode=true&characterEncoding=utf8";
String user="root";
String password ="root";
Connection connection = null;
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
connection = DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
}
cn.zr.testpage.utils.Page.java
package cn.zr.testpage.utils;
public class Page {
private int currentpage;
private int total;
private int size;
private int next;
private int last;
private int lpage;
private int rpage;
private int start;
public Page() {
super();
}
public int getCurrentpage() {
return currentpage;
}
public void setCurrentpage(int currentpage,int total,int pagesize) {
int totalPages = total%pagesize==0? total/pagesize : (total/pagesize)+1;
this.last = totalPages;
if(currentpage>totalPages){
this.currentpage = totalPages;
}else{
this.currentpage=currentpage;
}
if(currentpage<=0){
this.currentpage=1;
}
this.start = (this.currentpage-1)*pagesize;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
public int getNext() {
return currentpage<last? currentpage+1: last;
}
public int getUpper() {
return currentpage>1? currentpage-1: currentpage;
}
public int getLast() {
return last;
}
public void setLast(int last) {
this.last = total%size==0? total/size : (total/size)+1;
}
public int getLpage() {
return lpage;
}
public void setLpage(int lpage) {
this.lpage = lpage;
}
public int getRpage() {
return rpage;
}
public void setRpage(int rpage) {
this.rpage = rpage;
}
public Page(int total,int currentpage,int pagesize) {
this.total = total;
this.size=pagesize;
setCurrentpage(currentpage, total, pagesize);
int leftcount =5,
rightcount =4;
this.lpage =currentpage;
this.rpage =currentpage;
this.lpage = currentpage-leftcount;
this.rpage = currentpage+rightcount;
int topdiv = this.last-rpage;
this.lpage=topdiv<0? this.lpage+topdiv:this.lpage;
this.rpage=this.lpage<=0? this.rpage+(this.lpage*-1)+1: this.rpage;
this.lpage=this.lpage<=0? 1:this.lpage;
this.rpage=this.rpage>last? this.last:this.rpage;
}
public int getStart() {
return start;
}
}
cn.zr.testpage.utils.UserBasicalImpl.java
package cn.zr.testpage.utils;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class UserBasicalImpl {
protected Connection connection;
protected PreparedStatement pStatement;
protected ResultSet rSet;
public void close(){
try {
if (rSet!=null) {
rSet.close();
}
if (pStatement!=null) {
pStatement.close();
}
if (connection!=null) {
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
jsp/jstl/core
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>用户信息</title>
</head>
<body>
<table>
<tr>
<th>姓名</th>
<th>年龄</th>
<th>爱好</th>
</tr>
<c:forEach items="${users }" var="user" varStatus="userindex">
<tr>
<td>${user.name }</td>
<td>${user.age }</td>
<td>${user.hobby }</td>
</tr>
</c:forEach>
</table>
<div>
<a href="?curpage=1">首页</a>
<c:forEach begin="${page.lpage}" end="${page.rpage}" var="pageNum">
<a href="?curpage=${pageNum }">${pageNum }</a>
</c:forEach>
<a href="?curpage=${page.last }">尾页</a>
</div>
</body>
</html>