前面写了Servlet(一)到(五),主要是在网上搜罗的视频、对分页这块还是不太清楚。于是有找到一些视频,重新学习了一下。主要是对分页的认识和设计思路。也是为了方便我以后回忆一下。。

一、分页常识

pageSize //每页有多少条记录 --用户设定

rowCount //一共有多少条记录 --从数据库中查的

pageIndex //当前查看的是第几页 --用户选择的

beginRow //从第几行开始查询 --计算得到 pageSize*(pageIndex-1)

pageCount //总共有多少页 --计算

  1. //栗子
  2. if(rowCount%pageSize==0){
  3. pageCount=rowCount/pageSize;
  4. }
  5. else{
  6. pageCount=rowCount/pageSize+1
  7. }

二、PageInfo 类

  1. public class PageInfo {
  2. private int pageSize; // 页面大小
  3. private int pageCount; // 页面总数
  4. private int pageIndex; // 当前页
  5. private int beginRow; // 开始页
  6. private int rowCount; // 总条数
  7.  
  8. private boolean hasNext; // 是否有后一页
  9. private boolean hasPre; // 是否有前一页
  10.  
  11. public int getPageSize() {
  12. return pageSize;
  13. }
  14.  
  15. public void setPageSize(int pageSize) {
  16. this.pageSize = pageSize;
  17. }
  18.  
  19. public int getPageCount() {
  20. return pageCount;
  21. }
  22.  
  23. public void setPageCount(int pageCount) {
  24. this.pageCount = pageCount;
  25. }
  26.  
  27. public int getPageIndex() {
  28. return pageIndex;
  29. }
  30.  
  31. public void setPageIndex(int pageIndex) {
  32. this.pageIndex = pageIndex;
  33. }
  34.  
  35. public int getBeginRow() {
  36. return beginRow;
  37. }
  38.  
  39. public void setBeginRow(int beginRow) {
  40. this.beginRow = beginRow;
  41. }
  42.  
  43. public int getRowCount() {
  44. return rowCount;
  45. }
  46.  
  47. public void setRowCount(int rowCount) {
  48. this.rowCount = rowCount;
  49. }
  50.  
  51. public boolean isHasNext() {
  52. return hasNext;
  53. }
  54.  
  55. public void setHasNext(boolean hasNext) {
  56. this.hasNext = hasNext;
  57. }
  58.  
  59. public boolean isHasPre() {
  60. return hasPre;
  61. }
  62.  
  63. public void setHasPre(boolean hasPre) {
  64. this.hasPre = hasPre;
  65. }
  66.  
  67. }

三、分页工具类

  1. public class PageUtil {
  2.  
  3. public static PageInfo getPageInfo(int pageSize, int rowCount, int pageIndex) {
  4. PageInfo p=new PageInfo();
  5. pageSize=getPageSize(pageSize);
  6. p.setPageSize(pageSize);
  7. p.setRowCount(rowCount);
  8. p.setPageCount(getPageCount(pageSize,rowCount));
  9. p.setBeginRow(getBeginRow(pageSize,pageIndex));
  10. p.setHasNext(isHasNext(pageIndex,getPageCount(pageSize,rowCount)));
  11. p.setHasPre(isHasPre(pageIndex));
  12. p.setPageIndex(pageIndex);
  13. return p;
  14. }
  15.  
  16. //判断当是否有前一页
  17. private static boolean isHasPre(int pageIndex) {
  18. if(pageIndex==1){
  19. return false;
  20. }
  21. else {
  22. return true;
  23. }
  24. }
  25.  
  26. //判断是不是有下一页
  27. private static boolean isHasNext(int pageIndex, int pageCount) {
  28. if(pageIndex==pageCount||pageCount==0){
  29. return false;
  30. }
  31. else{
  32. return true;
  33. }
  34. }
  35.  
  36. //计算从第几行开始查询
  37. private static int getBeginRow(int pageSize, int pageIndex) {
  38. return pageSize*(pageIndex-1);
  39. }
  40.  
  41. //计算页的总数
  42. private static int getPageCount(int pageSize, int rowCount) {
  43. if(rowCount%pageSize==0){
  44. return rowCount/pageSize;
  45. }
  46. else{
  47. return rowCount/pageSize+1;
  48. }
  49. }
  50.  
  51. //返回pageSize
  52. private static int getPageSize(int pageSize) {
  53. return pageSize==0?10:pageSize;
  54. }
  55.  
  56. }

四、页面

  1. <script type="text/javascript">
  2. function subForm(){
  3. //form1.action="AdminServlet?flag=manage";
  4. form1.submit();
  5. }
  6. </script>
  7.  
  8. <body>
  9.  
  10. <form action ="AdminServlet" method="post" name="form1">
  11. <input type="hidden" name=flag value="manage" />
  12. <table width=80% border=1 cellspacing=0s>
  13. <c:forEach var="u" items="${adminList}">
  14. <tr>
  15. <td>${u.id }</td>
  16. <td>${u.userName }</td>
  17. <td>${u.password }</td>
  18. <td>${u.note }</td>
  19. <td><a href="admin/admin_edit.jsp?id=${u.id }" >修改</a> | <a onclick="return confirm('确定要删除吗?')"
    href="AdminServlet?flag=del&id=${u.id }" >删除</a></td>
  20. </tr>
  21. </c:forEach>
  22. </table>
  23.  
  24. 共有 ${ pageInfo.rowCount} 条记录,当前第 ${ pageInfo.pageIndex} 页, 共 ${ pageInfo.pageCount}页
  25.  
  26. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
  27. <c:choose>
  28. <c:when test="${pageInfo.hasPre }">
  29. <a href="AdminServlet?flag=manage&pageIndex=1" >首页</a>
    <a href="AdminServlet?flag=manage&pageIndex=${pageInfo.pageIndex-1 }" >前一页 </a>
  30. </c:when>
  31. <c:otherwise>
  32. 首页 前一页
  33. </c:otherwise>
  34. </c:choose>
  35.  
  36. <c:choose>
  37. <c:when test="${pageInfo.hasNext }">
  38. <a href="AdminServlet?flag=manage&pageIndex=${pageInfo.pageIndex+1 }" >下一页</a>
    <a href="AdminServlet?flag=manage&pageIndex=${pageInfo.pageCount }" >尾页 </a>
  39. </c:when>
  40. <c:otherwise>
  41. 下一页 尾页
  42. </c:otherwise>
  43. </c:choose>
  44.  
  45. <a href="javascript:subForm()" >转到</a><input type="text" name="pageIndex" value=${pageInfo.pageIndex }>
  46.  
  47. </form>

五、控制层

  1. private void manage(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  2.  
  3. int pageSize=4;
  4. int rowCount=_dao.getUserCount();
  5.  
  6. String pageIndexStr=request.getParameter("pageIndex");
  7. int pageIndex=1;
  8. if(!StrUtil.isNullOrEmpty(pageIndexStr)){
  9. pageIndex=Integer.parseInt(pageIndexStr);
  10. }
  11.  
  12. PageInfo pageInfo=PageUtil.getPageInfo(pageSize,rowCount,pageIndex);
  13.  
  14. List<UserInfo> adminList=_dao.getUserList(pageInfo);
  15.  
  16. request.setAttribute("adminList", adminList);
  17. request.setAttribute("pageInfo", pageInfo);
  18.  
  19. request.getRequestDispatcher("/admin/admin_manage.jsp").forward(request, response);
  20. }

Java基础——Servlet(六)分页相关的更多相关文章

  1. Java实习生常规技术面试题每日十题Java基础(六)

    目录 1.在Java语言,怎么理解goto. 2.请描述一下Java 5有哪些新特性? 3.Java 6新特性有哪些. 4.Java 7 新特性有哪些. 5.Java 8 新特性有哪些. 6.描述Ja ...

  2. Java基础——Servlet

    什么是Servlet Servlet是Java Web的三大组件之一,它属于动态资源.Servlet的作用是处理请求,服务器会把接收到的请求交给Servlet来处理,在Servlet中通常需要: l  ...

  3. Java基础——Servlet(七)过滤器&监听器 相关

    一.过滤器简介 Filter 位于客户端和请求资源之间,请求的资源可以是 Servlet Jsp html (img,javascript,css)等.用于拦截浏览器发给服务器的请求(Request) ...

  4. Java基础——Servlet(一)

    在学习Servlet之前,需要首先学习一些关联性的知识. 一.动态网页程序 动态网页:它是网页中的偏功能性的部分也是最重要的部分.它不是我们平时所看见的页面特效,展示的效果.而是,一种交互行为.比如, ...

  5. Java基础——Servlet(八)文件上传下载

    一.简单的文件上传常见的组件Smartupload , Apache 的 commons FileUploadSmartupload上传的步骤: 1.初始化上传上下文 2.准备上传 3.保存文件 &l ...

  6. java基础(十六)----- equals()与hashCode()方法详解 —— 面试必问

    本文将详解 equals()与hashCode()方法 概述 java.lang.Object类中有两个非常重要的方法: public boolean equals(Object obj) publi ...

  7. Java基础——Servlet(五)

    哈哈哈...学习Servlet学了半个多月,因为中间有比较灰心的时候,有几天是啥都不学了的状态,看了好几部励志的电影.呃~还是得继续吧.本来计划是好好夯实这里的基础,结果在网找到了介绍比较全面的视频, ...

  8. Java基础--常用API--日期相关API

    一.java.util.Date 1.只用于显示系统时间,其大部分操作由Calendar代替. 格林威治时间(GMT):指的是1970年1月1日0时,不同地区有时间差. 默认输出格式:星期.月.日.时 ...

  9. Java基础--常用API--IO流相关API

    一.IO流 1.定义: IO流指的是Input/Output流,即输入流/输出流. 输入流:将外界信息写入程序,即从外界获取信息,属于读操作. 输出流:将程序数据发送给外界,即向外界传输数据,属于写操 ...

随机推荐

  1. Entity Framework 6 多对多增改操作指南

    问题描述 在很多系统中,存在多对多关系的维护.如下图: 这种多对多结构在数据库中大部分有三个数据表,其中两个主表,还有一个关联表,关联表至少两个字段,即左表主键.右表主键. 如上图,其中的Suppli ...

  2. Git错误日志--! [rejected]

    当出现下面错误时 ,是因为和仓库两端版本不一致时,常见于刚创建仓库时,中只有readme文件的情况.执行下面的运行完毕之后.再push到仓库即可 ! [rejected] master -> m ...

  3. Vim使用Vundle安装代码补全插件(YouCompleteMe)

    安装 Vundle 它的使用方法很简单,安装一个插件只需要在 ~/.vimrc 按照规则中添加 Plugin 的名称,某些需要添加路径,之后在 Vim 中使用:PluginInstall既可以自动化安 ...

  4. Python(28)---模块和包的基本概念

    一.模块 定义:在python中,一个 .py 文件就称为一个模块 使用模块的好处:最大的好处就是提高了代码的可维护性 分类(三种): python标准库 第三方模块 应用程序自定义模块 模块导入方法 ...

  5. redis常用命令(一)

    一.redis常见的数据操作命令 http://redisdoc.com/ 二.键(key) keys *: 查询所有的key. exists key:判断某个key是否存在. move key db ...

  6. Git基本命令学习

    Git是一个由林纳斯·托瓦兹为了更好地管理linux内核开发而创立的分布式版本控制/软件配置管理软件,如今已经超越CVS.SVN称为主流的版本控制器.许多著名的开源项目都用Git管理,比较火的托管服务 ...

  7. OwinHost

    新建ASP.NET MVC 项目. 引用包: install-package Microsoft.Owin.Host.SystemWeb 修改 public class Startup { publi ...

  8. C#基础篇三流程控制2

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace P01R ...

  9. vue实现城市列表选择

    成果展示 最后的成果就是下面所展示的内容,因为gif图没有做,只能截图所展示,接下来,会带着大家一步一步的完成下面功能,脚手架搭建和node安装在本次案例不会讲解,如果了解,可以在我的博客园找到有详细 ...

  10. dig命令详解

    dig命令是常用的域名查询工具,可以用来测试域名系统工作是否正常 语法 dig(选项)(参数) 选项 @<服务器地址>:指定进行域名解析的域名服务器: -b<ip地址>:当主机 ...