Java基础——Servlet(六)分页相关
前面写了Servlet(一)到(五),主要是在网上搜罗的视频、对分页这块还是不太清楚。于是有找到一些视频,重新学习了一下。主要是对分页的认识和设计思路。也是为了方便我以后回忆一下。。
一、分页常识
pageSize //每页有多少条记录 --用户设定
rowCount //一共有多少条记录 --从数据库中查的
pageIndex //当前查看的是第几页 --用户选择的
beginRow //从第几行开始查询 --计算得到 pageSize*(pageIndex-1)
pageCount //总共有多少页 --计算
- //栗子
- if(rowCount%pageSize==0){
- pageCount=rowCount/pageSize;
- }
- else{
- pageCount=rowCount/pageSize+1
- }
二、PageInfo 类
- public class PageInfo {
- private int pageSize; // 页面大小
- private int pageCount; // 页面总数
- private int pageIndex; // 当前页
- private int beginRow; // 开始页
- private int rowCount; // 总条数
- private boolean hasNext; // 是否有后一页
- private boolean hasPre; // 是否有前一页
- public int getPageSize() {
- return pageSize;
- }
- public void setPageSize(int pageSize) {
- this.pageSize = pageSize;
- }
- public int getPageCount() {
- return pageCount;
- }
- public void setPageCount(int pageCount) {
- this.pageCount = pageCount;
- }
- public int getPageIndex() {
- return pageIndex;
- }
- public void setPageIndex(int pageIndex) {
- this.pageIndex = pageIndex;
- }
- public int getBeginRow() {
- return beginRow;
- }
- public void setBeginRow(int beginRow) {
- this.beginRow = beginRow;
- }
- public int getRowCount() {
- return rowCount;
- }
- public void setRowCount(int rowCount) {
- this.rowCount = rowCount;
- }
- public boolean isHasNext() {
- return hasNext;
- }
- public void setHasNext(boolean hasNext) {
- this.hasNext = hasNext;
- }
- public boolean isHasPre() {
- return hasPre;
- }
- public void setHasPre(boolean hasPre) {
- this.hasPre = hasPre;
- }
- }
三、分页工具类
- public class PageUtil {
- public static PageInfo getPageInfo(int pageSize, int rowCount, int pageIndex) {
- PageInfo p=new PageInfo();
- pageSize=getPageSize(pageSize);
- p.setPageSize(pageSize);
- p.setRowCount(rowCount);
- p.setPageCount(getPageCount(pageSize,rowCount));
- p.setBeginRow(getBeginRow(pageSize,pageIndex));
- p.setHasNext(isHasNext(pageIndex,getPageCount(pageSize,rowCount)));
- p.setHasPre(isHasPre(pageIndex));
- p.setPageIndex(pageIndex);
- return p;
- }
- //判断当是否有前一页
- private static boolean isHasPre(int pageIndex) {
- if(pageIndex==1){
- return false;
- }
- else {
- return true;
- }
- }
- //判断是不是有下一页
- private static boolean isHasNext(int pageIndex, int pageCount) {
- if(pageIndex==pageCount||pageCount==0){
- return false;
- }
- else{
- return true;
- }
- }
- //计算从第几行开始查询
- private static int getBeginRow(int pageSize, int pageIndex) {
- return pageSize*(pageIndex-1);
- }
- //计算页的总数
- private static int getPageCount(int pageSize, int rowCount) {
- if(rowCount%pageSize==0){
- return rowCount/pageSize;
- }
- else{
- return rowCount/pageSize+1;
- }
- }
- //返回pageSize
- private static int getPageSize(int pageSize) {
- return pageSize==0?10:pageSize;
- }
- }
四、页面
- <script type="text/javascript">
- function subForm(){
- //form1.action="AdminServlet?flag=manage";
- form1.submit();
- }
- </script>
- <body>
- <form action ="AdminServlet" method="post" name="form1">
- <input type="hidden" name=flag value="manage" />
- <table width=80% border=1 cellspacing=0s>
- <c:forEach var="u" items="${adminList}">
- <tr>
- <td>${u.id }</td>
- <td>${u.userName }</td>
- <td>${u.password }</td>
- <td>${u.note }</td>
- <td><a href="admin/admin_edit.jsp?id=${u.id }" >修改</a> | <a onclick="return confirm('确定要删除吗?')"
href="AdminServlet?flag=del&id=${u.id }" >删除</a></td>- </tr>
- </c:forEach>
- </table>
- 共有 ${ pageInfo.rowCount} 条记录,当前第 ${ pageInfo.pageIndex} 页, 共 ${ pageInfo.pageCount}页
-
- <c:choose>
- <c:when test="${pageInfo.hasPre }">
- <a href="AdminServlet?flag=manage&pageIndex=1" >首页</a>
<a href="AdminServlet?flag=manage&pageIndex=${pageInfo.pageIndex-1 }" >前一页 </a>- </c:when>
- <c:otherwise>
- 首页 前一页
- </c:otherwise>
- </c:choose>
- <c:choose>
- <c:when test="${pageInfo.hasNext }">
- <a href="AdminServlet?flag=manage&pageIndex=${pageInfo.pageIndex+1 }" >下一页</a>
<a href="AdminServlet?flag=manage&pageIndex=${pageInfo.pageCount }" >尾页 </a>- </c:when>
- <c:otherwise>
- 下一页 尾页
- </c:otherwise>
- </c:choose>
- <a href="javascript:subForm()" >转到</a> 第 <input type="text" name="pageIndex" value=${pageInfo.pageIndex }> 页
- </form>
五、控制层
- private void manage(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- int pageSize=4;
- int rowCount=_dao.getUserCount();
- String pageIndexStr=request.getParameter("pageIndex");
- int pageIndex=1;
- if(!StrUtil.isNullOrEmpty(pageIndexStr)){
- pageIndex=Integer.parseInt(pageIndexStr);
- }
- PageInfo pageInfo=PageUtil.getPageInfo(pageSize,rowCount,pageIndex);
- List<UserInfo> adminList=_dao.getUserList(pageInfo);
- request.setAttribute("adminList", adminList);
- request.setAttribute("pageInfo", pageInfo);
- request.getRequestDispatcher("/admin/admin_manage.jsp").forward(request, response);
- }
Java基础——Servlet(六)分页相关的更多相关文章
- Java实习生常规技术面试题每日十题Java基础(六)
目录 1.在Java语言,怎么理解goto. 2.请描述一下Java 5有哪些新特性? 3.Java 6新特性有哪些. 4.Java 7 新特性有哪些. 5.Java 8 新特性有哪些. 6.描述Ja ...
- Java基础——Servlet
什么是Servlet Servlet是Java Web的三大组件之一,它属于动态资源.Servlet的作用是处理请求,服务器会把接收到的请求交给Servlet来处理,在Servlet中通常需要: l ...
- Java基础——Servlet(七)过滤器&监听器 相关
一.过滤器简介 Filter 位于客户端和请求资源之间,请求的资源可以是 Servlet Jsp html (img,javascript,css)等.用于拦截浏览器发给服务器的请求(Request) ...
- Java基础——Servlet(一)
在学习Servlet之前,需要首先学习一些关联性的知识. 一.动态网页程序 动态网页:它是网页中的偏功能性的部分也是最重要的部分.它不是我们平时所看见的页面特效,展示的效果.而是,一种交互行为.比如, ...
- Java基础——Servlet(八)文件上传下载
一.简单的文件上传常见的组件Smartupload , Apache 的 commons FileUploadSmartupload上传的步骤: 1.初始化上传上下文 2.准备上传 3.保存文件 &l ...
- java基础(十六)----- equals()与hashCode()方法详解 —— 面试必问
本文将详解 equals()与hashCode()方法 概述 java.lang.Object类中有两个非常重要的方法: public boolean equals(Object obj) publi ...
- Java基础——Servlet(五)
哈哈哈...学习Servlet学了半个多月,因为中间有比较灰心的时候,有几天是啥都不学了的状态,看了好几部励志的电影.呃~还是得继续吧.本来计划是好好夯实这里的基础,结果在网找到了介绍比较全面的视频, ...
- Java基础--常用API--日期相关API
一.java.util.Date 1.只用于显示系统时间,其大部分操作由Calendar代替. 格林威治时间(GMT):指的是1970年1月1日0时,不同地区有时间差. 默认输出格式:星期.月.日.时 ...
- Java基础--常用API--IO流相关API
一.IO流 1.定义: IO流指的是Input/Output流,即输入流/输出流. 输入流:将外界信息写入程序,即从外界获取信息,属于读操作. 输出流:将程序数据发送给外界,即向外界传输数据,属于写操 ...
随机推荐
- Entity Framework 6 多对多增改操作指南
问题描述 在很多系统中,存在多对多关系的维护.如下图: 这种多对多结构在数据库中大部分有三个数据表,其中两个主表,还有一个关联表,关联表至少两个字段,即左表主键.右表主键. 如上图,其中的Suppli ...
- Git错误日志--! [rejected]
当出现下面错误时 ,是因为和仓库两端版本不一致时,常见于刚创建仓库时,中只有readme文件的情况.执行下面的运行完毕之后.再push到仓库即可 ! [rejected] master -> m ...
- Vim使用Vundle安装代码补全插件(YouCompleteMe)
安装 Vundle 它的使用方法很简单,安装一个插件只需要在 ~/.vimrc 按照规则中添加 Plugin 的名称,某些需要添加路径,之后在 Vim 中使用:PluginInstall既可以自动化安 ...
- Python(28)---模块和包的基本概念
一.模块 定义:在python中,一个 .py 文件就称为一个模块 使用模块的好处:最大的好处就是提高了代码的可维护性 分类(三种): python标准库 第三方模块 应用程序自定义模块 模块导入方法 ...
- redis常用命令(一)
一.redis常见的数据操作命令 http://redisdoc.com/ 二.键(key) keys *: 查询所有的key. exists key:判断某个key是否存在. move key db ...
- Git基本命令学习
Git是一个由林纳斯·托瓦兹为了更好地管理linux内核开发而创立的分布式版本控制/软件配置管理软件,如今已经超越CVS.SVN称为主流的版本控制器.许多著名的开源项目都用Git管理,比较火的托管服务 ...
- OwinHost
新建ASP.NET MVC 项目. 引用包: install-package Microsoft.Owin.Host.SystemWeb 修改 public class Startup { publi ...
- C#基础篇三流程控制2
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace P01R ...
- vue实现城市列表选择
成果展示 最后的成果就是下面所展示的内容,因为gif图没有做,只能截图所展示,接下来,会带着大家一步一步的完成下面功能,脚手架搭建和node安装在本次案例不会讲解,如果了解,可以在我的博客园找到有详细 ...
- dig命令详解
dig命令是常用的域名查询工具,可以用来测试域名系统工作是否正常 语法 dig(选项)(参数) 选项 @<服务器地址>:指定进行域名解析的域名服务器: -b<ip地址>:当主机 ...