jsp使用 分页专用工具

news2024/11/24 5:23:07

分页器,根据过来的参数计算当着页应当从哪一条记录开始显示,并且显示到哪。

PageUtils [pageSize=5, currIndex=1, totalCount=166, totalPage=34, startPosition=0]
PageUtils [pageSize=5, currIndex=5, totalCount=166, totalPage=34, startPosition=20]
PageUtils [pageSize=5, currIndex=34, totalCount=166, totalPage=34, startPosition=165]
PageUtils [pageSize=5, currIndex=1, totalCount=166, totalPage=34, startPosition=0]
PageUtils [pageSize=5, currIndex=9, totalCount=166, totalPage=34, startPosition=40]
PageUtils [pageSize=10, currIndex=9, totalCount=166, totalPage=17, startPosition=80]

package src;

public class TestPageUtils {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//假设一页显示5条,现在有166条
		int pageSize =  5;
		int totalCount = 166;
		PageUtils pageUtils= new PageUtils(pageSize, totalCount);
		
		System.out.println(pageUtils);
		
		pageUtils.setCurrIndex(5);
		System.out.println(pageUtils);
		
		pageUtils.setCurrIndex(35);
		System.out.println(pageUtils);
		
		pageUtils.setCurrIndex(-1);
		System.out.println(pageUtils);
		
		
		pageUtils.setCurrIndex(9);		
		System.out.println(pageUtils);
		
		pageUtils.setCurrIndex(9);
		pageUtils.setPageSize(10);
		System.out.println(pageUtils);
		

	}

}
package src;
/**
 * 
 * @lwd
  *  分页工具类
 *
 */
public class PageUtils {
	//相关成员变量
	
	// 页大小,每页显示多少条记录
	private int pageSize;
	
	//当前页
	private int currIndex;
	
	//总记录数
	private int totalCount;
	
	//总页数
	private int totalPage;
	
	
	//开始的记录开始的位置 
	private int startPosition;


	//一页显示多少条和一共有多少条记录
	public PageUtils(int pageSize, int totalCount) {		
		this.pageSize = pageSize;
		this.totalCount = totalCount;
		currIndex = 1;//默认显示第一页
		startPosition = 0;//默认从第一条记录开始显示
		
		int pages=totalCount/pageSize;
		totalPage=totalCount%pageSize==0?pages:pages+1;
	}


	public int getPageSize() {
		return pageSize;
	}


	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
		int pages=totalCount/pageSize;
		totalPage=totalCount%this.pageSize==0?pages:pages+1;	
		startPosition=(currIndex-1)*pageSize;
	}


	public int getCurrIndex() {
		return currIndex;
	}


	public void setCurrIndex(int currIndex) {
		if(currIndex<1)
			currIndex=1;
		else if(currIndex>totalPage)
			currIndex=totalPage;		
		this.currIndex = currIndex;
		
		startPosition=(currIndex-1)*pageSize;
		
	}


	public int getTotalPage() {
		return totalPage;
	}


	public int getStartPosition() {
		return startPosition;
	}


	@Override
	public String toString() {
		return "PageUtils [pageSize=" + pageSize + ", currIndex=" + currIndex + ", totalCount=" + totalCount
				+ ", totalPage=" + totalPage + ", startPosition=" + startPosition + "]";
	}
	
	
	
	

	
	 
	
	

}

JSP中调用。 

<%@page import="src.PageUtils"%>
<%@page import="java.text.SimpleDateFormat"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%> 
    
<%@ page import="
java.util.Date,
java.io.IOException,
java.io.PrintWriter,
java.sql.*
" %>

<%@ page import="src.User,src.Message"
 %>
 <%
 Date date= new Date();
 SimpleDateFormat df= new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
 
 %>   
 
 <%!
 	//留言表共有多少条记录
 	int getTotalCount() throws Exception{
	 
	 Class.forName("com.mysql.cj.jdbc.Driver");	 
	 Connection con = DriverManager.getConnection("jdbc:mysql://mysql.sqlpub.com:3306/huangjin","laocooon","fc12f7a5215e8e0a");	 
	 String sql = "SELECT COUNT(*) FROM message";	 
	 PreparedStatement pstmt = con.prepareStatement(sql); 
	 //5.执行sql语句,并且接收结果 
	 ResultSet rs = pstmt.executeQuery();
	 rs.next();
	 int res = rs.getInt(1);
	 
	 
	 rs.close();
	 pstmt.close();
	 con.close(); 
	 
	 return res;
 }
 
 %>
 
 <%
 
 //获取page
 String pages=request.getParameter("pages");
 if(pages==null)
	 pages = "1"; 
 
 int currIndex = Integer.parseInt(pages); 
 
  
 
 PageUtils pageUtils = new PageUtils(10,getTotalCount());//需要提供总记录数
 pageUtils.setCurrIndex(currIndex);
 out.println(pageUtils);
 
 %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<link href="./css/1102.css" rel="stylesheet" type="text/css" />
<title>访客留言板</title>

</head>
<body>
<p>访客留言板</p>
<p><%="使用的浏览器是:<span style='font-size:16px;'>"+request.getHeader("User-Agent")+"</span>" %></p>
<p><%="使用的ip是:"+request.getRemoteAddr() %></p>
<p><%="现在时间是:"+ df.format(date) %></p>
<p><a href=./index.jsp?#form>我要留言</a></p>
<p> 
 <% 
 //读取message表中的所有记录
 //1.导入jar包
 //2.注册驱动
 //Class.forName("com.mysql.jdbc.Driver");
 Class.forName("com.mysql.cj.jdbc.Driver");

 //3.获取连接
 Connection con = DriverManager.getConnection("jdbc:mysql://mysql.sqlpub.com:3306/huangjin","laocooon","fc12f7a5215e8e0a");

 //4.获取执行者对象
 String sql = "SELECT * FROM message ORDER BY id DESC LIMIT ?,?";  
 PreparedStatement pstmt = con.prepareStatement(sql);
 pstmt.setInt(1,pageUtils.getStartPosition());
 pstmt.setInt(2,pageUtils.getPageSize());
 //5.执行sql语句,并且接收结果 
 ResultSet rs = pstmt.executeQuery();
 int i=pageUtils.getStartPosition()+1;
 while(rs.next()){
	String author=rs.getString(3);
	String id=""+rs.getInt(1);
	String message=rs.getString(2);
	String posttime=rs.getString(4);
	out.println("<div class='div1'>");
	out.println("<p id='p1'>作者:" + author + "</p>");
	out.println("<p id='p2'>#" + i++ + "</p>");
	out.println("<p id='p3'>" + message + "</p>");
	out.println("<p id='p4'>发布日期:" + posttime + "</p>");
	out.println("<p id='p5'><a href='./index.jsp?id=" + id + "#form'>回复</a></p>    ");
	out.println("</div>");	
	out.println("<br><br> ");	
 } 
 
 rs.close();
 pstmt.close();
 con.close(); 
 %>
<br>
<div style="text-align: right;">
[一页<%=pageUtils.getPageSize() %>个]&nbsp;&nbsp;&nbsp;&nbsp;
<a href="index.jsp?pages=1">第一页</a>&nbsp;&nbsp;&nbsp;&nbsp;
<a href="index.jsp?pages=<%=pageUtils.getCurrIndex()-1%>">上一页</a>&nbsp;&nbsp;&nbsp;&nbsp;
<a href="index.jsp?pages=<%=pageUtils.getCurrIndex()+1%>">下一页</a>&nbsp;&nbsp;&nbsp;&nbsp;
<a href="index.jsp?pages=<%=pageUtils.getTotalPage()%>">最后页</a>&nbsp;&nbsp;&nbsp;&nbsp;
</div> 
<br>
<form action='doadd.jsp' method='get'>
<a id="form"> 用&nbsp;&nbsp;户&nbsp;&nbsp;名:</a>

<input type=text required name=you placeholder=请输入你的姓名 /><br><br>
 <%
 String id=request.getParameter("id");
 if(id==null){	
	out.println("留言信息:<textarea rows=4 cols=60 required name=text placeholder=留言处></textarea><br>");	
 }
 else{
	out.println("留言信息:<textarea rows=4 cols=60 required name=text placeholder=留言处>回复#"+ id +":</textarea><br>");
	 
 }
 %>
 <input type='submit'>&nbsp;&nbsp;&nbsp;&nbsp;<input type='reset'>
 

</form> 
</body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1297305.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MongoDB的删除文档、查询文档语句

本文主要介绍MongoDB的删除文档、查询文档命令语句。 目录 MongoDB删除文档MongoDB查询文档 MongoDB删除文档 MongoDB是一种基于文档的NoSQL数据库&#xff0c;它使用BSON格式存储文档。删除文档是MongoDB数据库中的常见操作之一。 下面是MongoDB删除文档的详细介绍和示例&am…

vscode创建python虚拟环境

一、创建虚拟环境 python -m venv vsvenv 二、激活虚拟环境 cd .\myvenv\Scripts.\Activate.ps1 如果出现下图所示&#xff1a; 1、使用管理员运行PowerShell 2、输入命令&#xff1a;Get-ExecutionPolicy 3、输入命令&#xff1a;Set-ExecutionPolicy RemoteSigned&…

react-photo-view 的介绍、安装、使用。

目录 基本介绍 安装 使用 基本介绍 react-photo-view 是一个基于 React 的图片查看器组件&#xff0c;用于在网页上展示和浏览图片。该组件提供了用户友好的界面和交互&#xff0c;可以轻松地在应用程序中集成并使用。 支持触摸手势&#xff0c;拖动/平移/物理效果滑动…

【数据结构第 6 章 ① 】- 图的定义和基本术语

目录 一、图的定义 二、图的基本术语 图是一种比线性表和树更为复杂的数据结构。在线性表中&#xff0c;数据元素之间仅有线性关系&#xff0c;每个数据元素只有一个直接前驱和一个直接后继&#xff1b;在树形结构中&#xff0c;数据元素之间有着明显的层次关系&#xff0c;并…

学生备考使用台灯到底好不好?公认好用的护眼台灯推荐

在现代生活中&#xff0c;许多学生的学习压力越来越大&#xff0c;面临的近视几率也越来越大&#xff0c;特别是初中生&#xff0c;眼睛发育还未完全&#xff0c;使用不恰当的灯光也会对眼睛造成损害&#xff0c;特别是护眼台灯。虽然护眼台灯在功能上能够提供充足、柔和的光线…

网络互连与常用设备

网络互连是为了将两个以上具有独立自治能力、同构或异构的计算机网络连接起来&#xff0c;实现数据流通&#xff0c;扩大资源共享的范围&#xff0c;或者容纳更多的用户。网络互连包括局域网与局域网的互连、局域网与广域网的互连、广域网与广域网的互连&#xff0c;这可以扩大…

线性回归算法-实战-房价预测

线性回归算法-实战-房价预测 本次使用线性回归的算法和knn算法进行对比 加载并处理数据对数据进行归一化处理数据拆分knn模型对象创建和训练线性回归建模和训练 加载并且处理数据 import numpy as np import pandas as pd from sklearn.neighbors import KNeighborsRegresso…

kennard-stone算法实现样本集划分(ks算法)

目录 一、 Kennard-Stone算法原理&#xff08;KS算法&#xff09; 二、Kennard-Stone算法作用 三、代码 四、对选出来的train样本使用T-SNE算法进行绘制 五、参考链接 一、 Kennard-Stone算法原理&#xff08;KS算法&#xff09; KS算法原理&#xff1a;把所有的样本都看…

UE4 .ini文件使用

在需要给配置文件的类中加上config标签&#xff0c;当然变量也要加 在项目的Config下&#xff0c;新建一个Default类的UCLASS中config等于的名字&#xff0c;这里结合上面截图就是DefaultTest 在下面写入 [/Script/项目名/类名] 然后写变量以及对应的值即可

机器学习-SVM(支持向量机)

推荐课程&#xff1a;【机器学习实战】第5期 支持向量机 |数据分析|机器学习|算法|菊安酱_哔哩哔哩_bilibili 赞美菊神ヾ ( ゜ⅴ゜)&#xff89; 一、什么是支持向量机&#xff1f; 支持向量机&#xff08;Support Vector Machine, SVM&#xff09;是一类按监督学习&#xff0…

python学习——对大疆御3E拍摄照片赋予坐标系并旋转

对大疆御3E拍摄照片赋予坐标系并旋转 问题描述 进行植被覆盖度验证时&#xff0c;需采集验证点的植被覆盖情况&#xff0c;但无人机拍摄的照片缺少坐标系&#xff0c;无法进行对比验证。 解决方案 赋予照片坐标系 在gdal中对影像赋予坐标系主要参数为仿射六参数&#xff1…

深度解析TCP协议:特点、应用场景及市面上常见软件案例

目录 引言 TCP的特点 TCP的应用场景 市面上使用TCP的软件案例 引言 TCP&#xff08;Transmission Control Protocol&#xff09;是计算机网络中一种基于连接的、可靠的传输层协议。它具有一系列独特的特点&#xff0c;适用于广泛的应用场景。本文将深入研究TCP的特点、应用…

VSCode SSH登录服务器 提示XHR failed

设置->搜索“代理” 把图中的√去掉 重启 即可

全面覆盖,无所不包:C++ 编程必备指南 | 开源日报 No.99

fffaraz/awesome-cpp Stars: 51.0k License: MIT 这个项目是一个精心策划的 C(或者 C) 框架、库、资源和其他有趣东西的列表。它收集了各种标准库&#xff0c;如 STL 容器和算法&#xff1b;不同领域的框架&#xff0c;比如人工智能、异步事件循环等&#xff1b;以及一系列功…

【Linux】cat 命令使用

cat 命令 cat&#xff08;英文全拼&#xff1a;concatenate&#xff09;命令用于连接文件并打印到标准输出设备上。 可以使用cat连接多个文件、创建新文件、将内容附加到现有文件、查看文件内容以及重定向终端或文件中的输出。 cat可用于在不同选项的帮助下格式化文件的输出…

应用商店ASO优化提升APP排名的6大策略

ASO优化基操你了解多少&#xff1f; ASO优化对于APP推广运营来说是必不可少的一个方法。在当今竞争激烈的应用程序市场中&#xff0c;ASO&#xff08;App Store Optimization&#xff09;优化已成为提升APP排名和曝光度的关键因素。 一、ASO优化的重要性 ASO优化有助于提高AP…

如何为 3D 模型制作纹理的最佳方法

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 您可以通过不同的方式为 3D 模型创建 3D 纹理。下面我们将介绍为 3D …

UML图的各种类型以及软件设计师考试考察的方式

UML建模 前言 常见的UML的类型 UML 比前两题是更难的&#xff08;略高&#xff0c;但是学会就可以了。前两题是&#xff1a;数据流图&#xff0c;数据库的设计&#xff09;&#xff0c;因为UML图有很多类型&#xff1a;用例图&#xff0c;类图与对象图&#xff0c;顺序图&…

免费网页抓取工具大全【附下载和工具使用教程】

在当今信息爆炸的时代&#xff0c;获取准确而丰富的数据对于企业决策和个人研究至关重要。而网页抓取工具作为一种高效获取互联网数据的方式&#xff0c;正逐渐成为大家解决数据需求的得力助手。本文将深入探讨网页抓取工具的种类&#xff0c;并为大家提供简单实用的页面采集教…

springboot3 liquibase SQL执行失败自动回滚,及自动打tag

一&#xff1a; 自动执行回滚&#xff0c; 已执行成功的忽略&#xff0c;新sql执行失败则执行新sql文件中的回滚sql pom.xml <dependency> <groupId>org.liquibase</groupId> <artifactId>liquibase-core</artifactId> <version>4.25.0&…