java分页 jar_Javaweb 实现分页功能

该博客详细介绍了如何在JavaWeb应用中实现分页功能。通过`User`实体类、`UserService`接口及其实现类、`UserDao`接口及其实现类,以及一个名为`ListServlet`的servlet来获取并展示分页数据。使用了JDBCUtils工具类连接数据库,通过LIMIT SQL语句实现分页查询。此外,博客提到了需要两个jar包:jstl-1.2.jar和mysql-connector-java-5.1.29.jar。
摘要由CSDN通过智能技术生成

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 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 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 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 getUserInfo(Page page) {

connection = JdbcUtils.getConnection();

//基于MySQL的函数的分页

String sql = "SELECT 姓名,年龄,爱好 FROM USERINFO LIMIT ?,?";

// 创建集合

List list = new ArrayList();

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 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&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

}

//上一页

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();

}

}

}

用户信息
姓名年龄爱好
${user.name }${user.age }${user.hobby }

web.xml

xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

list

com.ltjs.servlet.ListServlet

list

/list

各位需要俩个jar包:

1、jstl-1.2.jar  2、mysql-connector-java-5.1.29.jar

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值