driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test?allowMultiQueries=true&useUnicode=true&characterEncoding=utf8
user=LF
password=LF
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 + "]";
} }
package cn.zr.testpage.service;

import java.util.List;

import cn.zr.testpage.entity.User;
import cn.zr.testpage.utils.Page; public interface UserService { /**
* 获取总数量
* @return 返回总数
*/
int getAmount(); /**
* 获取当前页的数据
* @param page
* @return 返回前页的数据
*/
List<User> getUserInfo(Page page); }
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);
} }
package cn.zr.testpage.dao;

import java.util.List;

import cn.zr.testpage.entity.User;
import cn.zr.testpage.utils.Page; public interface UserDao { /**
* 获取总数量
* @return 返回总数
*/
int getAmount(); /**
* 获取当前页的数据
* @param page
* @return 返回前页的数据
*/
List<User> getUserInfo(Page page); }
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;
} /**
* 获取当前页的数据
* @param page
* @return 返回前页的数据
*/
@Override
public List<User> getUserInfo(Page page) { connection = JdbcUtils.getConnection();
//基于MySQL的函数的分页
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;
} }
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);
// 创建page对象
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); } }
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;
} }
package cn.zr.testpage.utils;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
*
* @author lf
*
*/
public class JdbcUtils { // 获取数据库连接
public static Connection getConnection() {
String url="jdbc:mysql://localhost:3306/test?allowMultiQueries=true&useUnicode=true&amp;characterEncoding=utf8";
String user="LF";
String password ="LF";
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;
}
}
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;
} /****
*
* @param currentpage
* @param total
* @param pagesize
*/
public void setCurrentpage(int currentpage,int total,int pagesize) {
//如果整除表示正好分N页,如果不能整除在N页的基础上+1页
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;
} //计算start 1----0 2 ------ 5
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;
} /****
*
* @param total 总记录数
* @param currentpage 当前页
* @param pagesize 每页显示多少条
*/
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; //2点判断
this.lpage = currentpage-leftcount; //正常情况下的起点
this.rpage = currentpage+rightcount; //正常情况下的终点 //页差=总页数和结束页的差
int topdiv = this.last-rpage; //判断是否大于最大页数 /***
* 起点页
* 1、页差<0 起点页=起点页+页差值
* 2、页差>=0 起点和终点判断
*/
this.lpage=topdiv<0? this.lpage+topdiv:this.lpage; /***
* 结束页
* 1、起点页<=0 结束页=|起点页|+1
* 2、起点页>0 结束页
*/
this.rpage=this.lpage<=0? this.rpage+(this.lpage*-1)+1: this.rpage; /***
* 当起点页<=0 让起点页为第一页
* 否则不管
*/
this.lpage=this.lpage<=0? 1:this.lpage; /***
* 如果结束页>总页数 结束页=总页数
* 否则不管
*/
this.rpage=this.rpage>last? this.last:this.rpage;
} public int getStart() {
return start;
} }
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();
}
}
}
<%@ 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>

Java 实现分页功能的更多相关文章

  1. java实现分页功能的类

    package smn.util; public class Pager { private int pageNow; private int pageSize=4; private int tota ...

  2. java ssm框架实现分页功能 (oracle)

    java web 实现分页功能 使用框架:ssm 数据库:oracle 话说 oracle 的分页查询比 mysql 复杂多了,在这里简单谈一下: 查询 前十条数据: SELECT * FROM( S ...

  3. Java Web -【分页功能】详解

    分页简介 分页功能在网页中是非常常见的一个功能,其作用也就是将数据分割成多个页面来进行显示. 使用场景: 当取到的数据量达到一定的时候,就需要使用分页来进行数据分割. 当我们不使用分页功能的时候,会面 ...

  4. 第83节:Java中的学生管理系统分页功能

    第83节:Java中的学生管理系统分页功能 分页功能一般可以做成两种,一种是物理分页,另一种是逻辑分页.这两种功能是有各自的特点的,物理分页是查询的时候,对数据库进行访问,只是查一页数据就进行返回,其 ...

  5. Java Web(十) 分页功能

    分页 分页的使用非常普遍,现在一步步的把分页功能实现出来,先看看已经写好的效果: 该页面的所有数据都存放在一个javaBean对象(PageBean)里,每次访问该页面时,Serlvet就会把page ...

  6. 【jQuery 分页】jQuery分页功能的实现

    自写的jQuery实现分页功能的分页组件: 功能效果如下: 分页组件就是上图中的三部分, 分别放在表格上部  和下部 . 其中, 1>>>页面的代码如下: product.jsp 其 ...

  7. spring和mybatis集成,自动生成model、mapper,增加mybatis分页功能

    软件简介 Spring是一个流行的控制反转(IoC)和面向切面(AOP)的容器框架,在java webapp开发中使用广泛.http://projects.spring.io/spring-frame ...

  8. Android学习随笔--ListView的分页功能

    第一次写博客,可能格式,排版什么的会非常不美观,不过我主要是为了记录自己的Android学习之路,为了以后能有些东西回顾.既然是为了学习,那我肯定会吸收各位大大们的知道经验,有不足的地方请指出. 通过 ...

  9. 基于SSM框架的简易的分页功能——包含maven项目的搭建

    新人第一次发帖,有什么不对的地方请多多指教~~ 分页这个功能经常会被使用到,我之前学习的时候找了很多资源,可都看不懂(笨死算了),最后还是在朋友帮助下做出了这个分页.我现在把我所能想到的知识 做了一个 ...

随机推荐

  1. (六)js常见四大排序

    今天突然想回顾一下四大排序,虽然说在实战中没有用到,但是想回顾一下四大排序的思想   var arr = [23, 34, 11, 22, 19, 18];   1.冒泡排序: 冒泡排序的思路分析: ...

  2. [QT][待解决问题]对话框ui载入卡顿问题

    电脑运行环境:win7 + qt-opensource-windows-x86-mingw530-5.8.0源码是 < Qt快速入门系列教程目录 > 第3篇 Qt5基础(三)Qt登录对话框 ...

  3. 【解题报告】[动态规划] - PID90 / 未出现的子串

    原题地址:http://www.rqnoj.cn/problem/90 解题思路:题目看起来不太像动态规划... 我用一个数组f[i][j]来表示在数组第i个元素的后面第一次出现j的位置,为-1则是没 ...

  4. HDU - 5728:PowMod (欧拉函数&指数循环节)

    Declare: k=∑ m i=1 φ(i∗n) mod 1000000007 k=∑i=1mφ(i∗n) mod 1000000007 n n is a square-free number. φ ...

  5. opencv之图像滤波

    均值滤波 均值滤波函数cv2.blur() import cv2 img = cv2.imread('01.jpg') blur = cv2.blur(img,(5,5)) cv2.imshow(&q ...

  6. HWOJ-字符串的逆序

    将一个字符串str的内容颠倒过来,并输出.str的长度不超过100个字符. 如:输入“I am a student”,输出“tneduts a ma I”. 输入参数: inputString:输入的 ...

  7. 区分/不区分大小写的比较,查找字符串在另一字符串中的位置,字符串开头是否包括另一字符串 hasPrefix

    NSString *str; // 使用stringWithFormat生成一格式化字符串 str = [NSString stringWithFormat:@"This is %@&quo ...

  8. [转]HTTP 协议中的 Transfer-Encoding

    本文作为我的博客「HTTP 相关」专题新的一篇,主要讨论 HTTP 协议中的 Transfer-Encoding.这个专题我会根据自己的理解,以尽量通俗的讲述,结合代码示例和实际场景来说明问题,欢迎大 ...

  9. 阿里云ubuntu12.04环境下配置Apache+PHP+PHPmyadmin+MYsql

    此教程中使用的相关IP等设置,在你的环境中要做相应修改. 使用之前更新apt-get,因为服务器基本上是一个裸系统 apt-get update;apt-get upgrade; 1 我们使用root ...

  10. java输出数组中出现的次数最多的那个及次数

    总结:理解每一个定义的变量 package com.aini; //一组数据,要求统计出最大值出现了多少次 public class Xd { public static void main(Stri ...