对于ssh框架来说的话分页,主要的思想就是dao层完成对数据库的操作,service层对业务进行管理,action对页面进行管理。

分页需要的bean。

  1. import java.util.List;
  2. public class PageBean {
  3. private List list;
  4. private int allRow;// 总记录数
  5. private int totalPage;// 总页数
  6. private int currentPage;// 当前页
  7. private int pageSize;// 每页记录数
  8. private boolean isFirstPage;// 是否为第一页
  9. private boolean isLastPage;// 是否为最后一页
  10. private boolean hasPreviousPage;// 是否有前一页
  11. private boolean hasNextPage;// 是否有下一页
  12. public List getList() {
  13. return list;
  14. }
  15. public void setList(List list) {
  16. this.list = list;
  17. }
  18. public void setFirstPage(boolean isFirstPage) {
  19. this.isFirstPage = isFirstPage;
  20. }
  21. public void setLastPage(boolean isLastPage) {
  22. this.isLastPage = isLastPage;
  23. }
  24. public void setHasPreviousPage(boolean hasPreviousPage) {
  25. this.hasPreviousPage = hasPreviousPage;
  26. }
  27. public void setHasNextPage(boolean hasNextPage) {
  28. this.hasNextPage = hasNextPage;
  29. }
  30. public int getAllRow() {
  31. return allRow;
  32. }
  33. public void setAllRow(int allRow) {
  34. this.allRow = allRow;
  35. }
  36. public int getTotalPage() {
  37. return totalPage;
  38. }
  39. public void setTotalPage(int totalPage) {
  40. this.totalPage = totalPage;
  41. }
  42. public int getCurrentPage() {
  43. return currentPage;
  44. }
  45. public void setCurrentPage(int currentPage) {
  46. this.currentPage = currentPage;
  47. }
  48. public int getPageSize() {
  49. return pageSize;
  50. }
  51. public void setPageSize(int pageSize) {
  52. this.pageSize = pageSize;
  53. }
  54. //   /** *//**
  55. //    * 初始化分页信息
  56. //    */
  57. public void init() {
  58. this.isFirstPage = isFirstPage();
  59. this.isLastPage = isLastPage();
  60. this.hasPreviousPage = isHasPreviousPage();
  61. this.hasNextPage = isHasNextPage();
  62. }
  63. //   /** *//**
  64. //    * 以下判断页的信息,只需getter方法(is方法)即可
  65. //    * @return
  66. //    */
  67. //   
  68. public boolean isFirstPage() {
  69. return currentPage == 1;// 如是当前页是第1页
  70. }
  71. public boolean isLastPage() {
  72. return currentPage == totalPage;// 如果当前页是最后一页
  73. }
  74. public boolean isHasPreviousPage() {
  75. return currentPage != 1;// 只要当前页不是第1页
  76. }
  77. public boolean isHasNextPage() {
  78. return currentPage != totalPage;// 只要当前页不是最后1页
  79. } //  
  80. //  
  81. //   /** *//**
  82. //    * 计算总页数,静态方法,供外部直接通过类名调用
  83. //    * @param pageSize 每页记录数
  84. //    * @param allRow 总记录数
  85. //    * @return 总页数
  86. //    */
  87. public static int countTotalPage(final int pageSize, final int allRow) {
  88. int totalPage = allRow % pageSize == 0 ? allRow / pageSize : allRow
  89. / pageSize + 1;
  90. return totalPage;
  91. }
  92. //   /** *//**
  93. //     *这个方法的逻辑非常关键,如果不弄清的话,在dao层调用的时候会出现不必要的麻烦。
  94. //    * 计算当前页开始记录
  95. //    * @param pageSize 每页记录数
  96. //    * @param currentPage 当前第几页
  97. //    * @return 当前页开始记录号
  98. //    */
  99. public static int countOffset(final int pageSize, final int currentPage) {
  100. int offset = pageSize * (currentPage - 1);
  101. if(offset<=0){
  102. return offset = 0;
  103. }
  104. return offset;
  105. }
  106. //
  107. //   /** *//**
  108. //    * 计算当前页,若为0或者请求的URL中没有"?page=",则用1代替
  109. //    * @param page 传入的参数(可能为空,即0,则返回1)
  110. //    * @return 当前页
  111. //    */
  112. public static int countCurrentPage(int page) {
  113. final int curPage = (page == 0 ? 1 : page);
  114. return curPage;
  115. }
  116. }

dao层代码:

  1. package test;
  2. import java.sql.SQLException;
  3. import java.util.List;
  4. import org.hibernate.HibernateException;
  5. import org.hibernate.Query;
  6. import org.hibernate.Session;
  7. import org.springframework.orm.hibernate3.HibernateCallback;
  8. import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
  9. public class MemberDaoImpl extends HibernateDaoSupport implements MemberDao {
  10. /*    //实现的接口自己写就可以了 
  11.   
  12.   *//** *//**
  13.    * 分页查询
  14.    * @param hql 查询的条件
  15.    * @param offset 开始记录
  16.    * @param length 一次查询几条记录
  17.    * @return
  18.    *//*
  19. */
  20. public List queryForPage(final String hql, final int offset,
  21. final int length) {
  22. List list = getHibernateTemplate().executeFind(new HibernateCallback() {
  23. public Object doInHibernate(Session session) throws
  24. HibernateException, SQLException {
  25. Query query = session.createQuery(hql);
  26. query.setFirstResult(offset);
  27. query.setMaxResults(length);
  28. List list = query.list();
  29. return list;
  30. }
  31. });
  32. return list;
  33. }
  34. public int getAllRowCount(String hql) {
  35. return getHibernateTemplate().find(hql).size();
  36. }
  37. }

action:

  1. public class ListAction extends ActionSupport {
  2. // 通过applicationContext.xml配置文件注入memberService的值
  3. private FenyeService fenyeservice ;
  4. public void setFenyeService (FenyeService fenyeservice ) {
  5. this.fenyeservice = fenyeservice ;
  6. }
  7. public FenyeService  getFenyeService (FenyeService   fenyeservice ){
  8. return fenyeservice
  9. }
  10. private int page;// 第几页
  11. private PageBean pageBean;// 包含分布信息的bean
  12. public int getPage() {
  13. return page;
  14. }
  15. public void setPage(int page) {// 若URL中无此参数,会默认为第1页
  16. this.page = page;
  17. }
  18. public PageBean getPageBean() {
  19. return pageBean;
  20. }
  21. public void setPageBean(PageBean pageBean) {
  22. this.pageBean = pageBean;
  23. }
  24. @Override
  25. public String execute() throws Exception {
  26. // 分页的pageBean,参数pageSize表示每页显示记录数,page为当前页
  27. this.pageBean = fenyeservice .queryForPage(3, page);
  28. return SUCCESS;
  29. }
  30. }

jsp页面的话就是<s:iterator value="pagebean.list">迭代标签了.<s:property value="list内的名字">

差不多就这些了。如果还有什么疑问的话可以给我留言,我尽快给你答复.

转载于:https://blog.51cto.com/3504199/921056

ssh框架分页显示问题相关推荐

  1. Eclipse搭建SSH环境实现Struts2分页显示mysql数据库表中内容

    2019独角兽企业重金招聘Python工程师标准>>> 摘要 学习(Eclipse搭建SSH(Struts2+Spring3+Hibernate3)框架项目教程),尝试搭建ssh框架 ...

  2. 【基于SSH框架的个人博客系统06】头像文件上传与前后端分页机制

    注意:本项目为博主初学Web开发时所写,所使用的方法都比较笨,不符合主流开发方法.例如,包管理应该使用Maven进行管理而不是手动导入,对前端后端代码的架构也并不是很清晰.大家学习思想即可,可以不用浪 ...

  3. eclipse ssh mysql数据库_Eclipse搭建SSH环境实现Struts2分页显示mysql数据库表中内容...

    摘要 因运行后404错误,遂选择集成好SSH框架的MyEclipse开发工具: 最终实现了Struts2框架的分页查看学员信息,Spring3和Hibernate3的尝试宣告失败. 1.本项目的环境 ...

  4. SSh结合Easyui实现Datagrid的分页显示

    近日学习Easyui,发现非常好用,界面很美观.将学习的心得在此写下,这篇博客写SSh结合Easyui实现Datagrid的分页显示,其他的例如添加.修改.删除.批量删除等功能将在后面的博客一一写来. ...

  5. 项目分享:通过使用SSH框架的公司-学员关系管理系统(CRM)

    ---------------------------------------------------------------------------------------------- [版权申明 ...

  6. 基于SSH框架的学生考试系统(注意看文档目录)

    基于SSH框架的学生考试系统 (1).先看一下我的目录结构 (2).还有jsp文件目录 (3).代码:(对应文件目录) 1.1 package com.ischoolbar.programmer.ac ...

  7. [转载]SSH框架搭建详细图文教程

    什么是SSH? SSH对应 struts spring hibernatestruts 采用MVC模式,主要是作用于用户交互spring 采用IOC和AOP~作用比较抽象,是用于项目的松耦合hiber ...

  8. java web的ssh框架_JavaWeb_(SSH论坛)_二、框架整合

    基于SSH框架的小型论坛项目 一.项目入门 传送门 二.框架整合 传送门 三.用户模块 传送门 四.页面显示 传送门 五.帖子模块 传送门 六.点赞模块 传送门 七.辅助模块传送门 导入Jar包 导入 ...

  9. SSH框架中配置log4j的方法

    /*2011年8月29日 09:52:54 by Rush*/ SSH框架中使用log4j的方便之处 1. 动态的改变记录级别和策略,即修改log4j.properties,不需要重启Web应用,这需 ...

最新文章

  1. “AI+教育”:人工智能下个掘金点?
  2. 一文读懂生物医学领域的传感器
  3. node mysql批量写入_如何使用node.js在MySQL中进行批量插入
  4. 聊聊 Redis 使用场景
  5. VTK:网格之SubdivisionDemo
  6. linux编写周期性计划任务,linux任务计划及周期性任务计划
  7. 使用sharepoint自带的文本编辑器1
  8. Python实现蒙特卡罗方法仿真模拟求解圆周率Pi值
  9. 线性代数及其应用第一章总结
  10. 实验吧CTF web刷题
  11. 路由器硬改内存笔记1-理论
  12. MyEclipse更换背景豆沙绿
  13. PS如何制作火焰效果图特效步骤教程
  14. php获取手机本地,PHP通过API获取手机号码归属地
  15. 【转】SPARC处理器30年沉浮
  16. 讯飞社区android 源码,android 讯飞语音 demo
  17. PS 2019 Mac版 自学入门系列(二)——区域选中
  18. Vue中图片加载问题总结
  19. 源码包安装 httpd
  20. js将字符串转换为数字

热门文章

  1. c 语言 double 除法_这是我的C语言入门笔记
  2. 模糊神经网络_神经网络模型:当网络开始产生类似于人类思维的过程
  3. c++ 使用nacos_Nacos配置的多环境管理
  4. python文件合法模式组合_python设计模式之组合模式
  5. 在java中私有方法能被重载吗_我可以在Java中重载私有方法吗?
  6. git idea 本地历史版本回滚_如何为IDEA项目创建GitHub存储库和本地Git存储库
  7. php模块化安装教程,homestead安装php 扩展 教程
  8. change element 原始值_change-element
  9. 计算机一级ie浏览器和电子邮件,2016年职称计算机考试Internet基础知识:利用IE收发电子邮件...
  10. Linux系统 proc self,Linux内核源代码情形分析-特殊文件系统/proc-对/proc/self/cwd的访问...