jsp使用 分页专用工具

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

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;}@Overridepublic 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;}%><%//获取pageString 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.mzph.cn/news/207981.shtml

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

相关文章

5.10 Windows驱动开发:摘除InlineHook内核钩子

在笔者上一篇文章《内核层InlineHook挂钩函数》中介绍了通过替换函数头部代码的方式实现Hook挂钩&#xff0c;对于ARK工具来说实现扫描与摘除InlineHook钩子也是最基本的功能&#xff0c;此类功能的实现一般可在应用层进行&#xff0c;而驱动层只需要保留一个读写字节的函数即可…

得帆云助力容百科技构建CRM系统,实现LTC全流程管理

宁波容百新能源科技股份有限公司 宁波容百新能源科技股份有限公司&#xff08;以下简称“容百科技”&#xff09;于2014年9月建立&#xff0c;是高科技新能源材料行业的跨国型集团公司。专业从事锂电池正极材料的研发、生产和销售&#xff0c;于2019年登陆上交所科创板&#x…

Python 数据分析:日期型数据的玩转之道

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 在数据分析的领域中&#xff0c;处理日期型数据是至关重要的一环。Python 提供了丰富的工具和库&#xff0c;使得对日期进行分析、处理、可视化变得更加轻松。本文将深入探讨 Python 中如何玩转日期型数据&#…

解读链上经济“一等公民”:加密AI代理的优势和前沿应用

机器人正在成为加密经济的“一等公民”&#xff0c;最近的案例就能印证这一趋势。 搜索者&#xff08;Searchers&#xff09;部署像Jaredfromsubway.eth这样的机器人&#xff0c;利用真人用户对便利的渴望在DEX抢先交易。Banana Gun和Maestro允许真人用户通过Telegram的便利进…

力扣每日一题day31[101. 对称二叉树]

给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true示例 2&#xff1a; 输入&#xff1a;root [1,2,2,null,3,null,3] 输出&#xff1a;fals 思路 对于二叉树是否对称&#xff…

二分查找算法

文章目录 二分查找二分的实战讲解二分查找普通二分模版 在排序数组中查找元素的第一个和最后一个位置万能二分模版 总结 二分查找 什么是二分查找:就是定义左右2个指针(此指针非真指针)取中间值 通过一次次取中间值找到要找到的数 二分的实战讲解 二分查找 题目:地址 题目解析…

测试文档---智力冲刺

文章目录 项目背景测试计划UI测试接口测试手工测试 测试总结 项目背景 项目描述&#xff1a;“智力冲刺”是一款网页小游戏&#xff0c;就像我们平时看到的网页游戏一样&#xff0c;前端页面负责展示游戏效果&#xff0c;后端服务器来实现游戏的逻辑。在我们的“智力冲刺”游戏…

postman做接口自动化测试

接口是用来连接服务端和客户端&#xff0c;一般返回的数据都是json。 get和post请求的区别&#xff1a; 1. get请求比post请求安全 2. get请求参数有长度限制&#xff0c;post请求没有 3. get请求没有body&#xff0c;参数都是放在url里面&#xff0c;而post请求是放在body…

大华DSS S2-045 OGNL表达式注入漏洞复现

0x01 产品简介 大华DSS安防监控系统平台是一款集视频、报警、存储、管理于一体的综合安防解决方案。该平台支持多种接入方式,包括网络视频、模拟视频、数字视频、IP电话、对讲机等。此外,该平台还支持多种报警方式,包括移动侦测、区域入侵、越线报警、人员聚集等。 0x02 漏…

元宇宙:重塑游戏行业体验下一个前沿

游戏行业在其整个历史中经历了显著的转变&#xff0c;从超级马里奥的像素化冒险发展到Red Dead Redemption等游戏中迷人的开放世界体验。随着时间的推移&#xff0c;游戏不断突破数字领域所能达到的极限。然而&#xff0c;被称为元宇宙的突破性演变将彻底改变游戏行业&#xff…

PO模式在selenium自动化测试框架有什么好处

PO模式是在UI自动化测试过程当中使用非常频繁的一种设计模式&#xff0c;使用这种模式后&#xff0c;可以有效的提升代码的复用能力&#xff0c;并且让自动化测试代码维护起来更加方便。 PO模式的全称叫page object model&#xff08;POM&#xff09;&#xff0c;有时候叫做 p…

网工内推 | 外企、合资公司急招网工,国内外旅游,健身年卡

01 深圳市耐施菲信息科技有限公司 招聘岗位&#xff1a;网络工程师 职责描述&#xff1a; 1、负责项目的计划、实施、过程管控、项目验收等工作&#xff1b; 2、负责大型项目设备实施、安装调试等售后维护工作&#xff1b; 3、分析、设计网络拓扑结构、配置H3C、华为等交换机…

dll动态链接库【C#】

1说明&#xff1a; 在C#中&#xff0c;dll是添加 【类库】生成的。 2添加C#的dll&#xff1a; &#xff08;1&#xff09;在VS中新建一个Windows应用程序项目&#xff0c;并命名为TransferDll。 &#xff08;2&#xff09;打开Windows窗体设计器&#xff0c;从工具箱中为窗体…

Gemini:新一代AI产品的惊人功能和革命性影响

目录 1 前言2 视频分析与交互能力3 策划推理能力4 教育领域的应用能力5 科学领域的论文解读能力6 结语 1 前言 Google最新推出的AI产品Gemini引发了广泛关注&#xff0c;其30分钟的介绍和演示视频展示了令人惊艳的功能。Gemini以其惊人的艺术创作能力脱颖而出&#xff0c;通过…

TCP一对一聊天

客户端 import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.IOException; import java.io…

python-04(入门基础篇4——lists相关的部分语法)

python-04&#xff08;入门基础篇4——lists相关的部分语法&#xff09; 1. 前言1.1 python入门1.2 参考官网 2. 关于索引和切片3. 在列表追加元素3.1 支持拼接3.2 使用list.append() 方法在列表末尾添加新项 4. 列表是可变类型4.1 更改其中某元素内容4.2 使用切片更改列表大小…

cesium学习记录

有段时间自学了cesium&#xff0c;这里记录一下自学过程&#xff0c;希望在所需之时查阅~~ 1、cesium源码获取与Index页面介绍 官网网址 www.cesiumjs.org 源代码下载&#xff1a;Platform-Dowmloads 在index.html右击open with Live server开启本地服务 点击Documentation…

VMware安装OpenEuler(安装界面)

本文中使用的OpenEuler版本&#xff1a;22.03 LTS SP2 VMware&#xff1a;17.0.0 一、下载镜像 根据CPU和场景&#xff0c;按需下载 https://www.openeuler.org/zh/download/?versionopenEuler%2022.03%20LTS%20SP2 二、初始化VmWare 三、配置操作系统 四、安装操作系统 …

Nginx漏洞修复

1、漏洞 去掉在请求响应头中存在的信息 Server: nginx X-Content-Type-Options: nosniff X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1;modeblock 修复方法 在Nginx的配置文件中的 server 标签内增加一下配置 server_tokens off; add_header X-Frame-Options SAMEORIGIN; …

Python绘制几种常见的时序分析图

时间序列数据是一种按照时间顺序排列的观测值集合&#xff0c;每个观测值对应于一个特定的时间点。这种数据在许多领域中都具有重要的应用价值&#xff0c;如金融、经济、气候科学等。通过分析时间序列数据&#xff0c;可以帮助我们掌握潜在的模式、发现趋势和季节性波动等重要…