自我的SSH2实现数据库和界面的分页

简介:
自我运行的::::::
pageBean 类

package com.test;

import java.io.Serializable;
import java.util.List;

public  class PageBean    {
  
        
         private List list;  // 要返回的某一页的记录列表    

         private  int allRow;  // 总记录数    
         private  int totalPage;  // 总页数    
         private  int currentPage;  // 当前页    
         private  int pageSize;  // 每页记录数    

            
         private  boolean isFirstPage;  // 是否为第一页    
         private  boolean isLastPage;  // 是否为最后一页    
         private  boolean hasPreviousPage;  // 是否有前一页    
         private  boolean hasNextPage;  // 是否有下一页    

         public List getList() {    
                 return list;    
        }    

         public  void setList(List list) {    
                 this.list = list;    
        }    

         public  int getAllRow() {    
                 return allRow;    
        }    

         public  void setAllRow( int allRow) {    
                 this.allRow = allRow;    
        }    

         public  int getTotalPage() {    
                 return totalPage;    
        }    

         public  void setTotalPage( int totalPage) {    
                 this.totalPage = totalPage;    
        }    

         public  int getCurrentPage() {    
                 return currentPage;    
        }    

         public  void setCurrentPage( int currentPage) {    
                 this.currentPage = currentPage;    
        }    

         public  int getPageSize() {    
                 return pageSize;    
        }    

         public  void setPageSize( int pageSize) {    
                 this.pageSize = pageSize;    
        }    

         /** */ 
         /**    
         * 初始化分页信息    
         */
 
         public  void init() {    
                 this.isFirstPage = isFirstPage();    
                 this.isLastPage = isLastPage();    
                 this.hasPreviousPage = isHasPreviousPage();    
                 this.hasNextPage = isHasNextPage();    
        }    

         /** */ 
         /**    
         * 以下判断页的信息,只需getter方法(is方法)即可    
         *     
         * @return    
         */
 

         public  boolean isFirstPage() {            
                 return (currentPage == 1); // 如是当前页是第1页            
        }         
         public  boolean isLastPage() {            
return currentPage == totalPage;  //如果当前页是最后一页            
}         
         public  boolean isHasPreviousPage() {            
return currentPage != 1;  //只要当前页不是第1页            
}         
         public  boolean isHasNextPage() {            
return currentPage != totalPage;  //只要当前页不是最后1页            
}         
         /** */ 
         /**    
         * 计算总页数,静态方法,供外部直接通过类名调用    
         *     
         * @param pageSize    
         *                        每页记录数    
         * @param allRow    
         *                        总记录数    
         * @return 总页数    
         */
 
         public  static  int countTotalPage( final  int pageSize,  final  int allRow) {    
                 int totalPage = allRow % pageSize == 0 ? allRow / pageSize : allRow    
                                / pageSize + 1;    
                 return totalPage;    
        }    

         /** */ 
         /**    
         * 计算当前页开始记录    
         *     
         * @param pageSize    
         *                        每页记录数    
         * @param currentPage    
         *                        当前第几页    
         * @return 当前页开始记录号    
         */
 
         public  static  int countOffset( final  int pageSize,  final  int currentPage) {    
                 final  int offset = pageSize * (currentPage - 1);    
                 return offset;    
        }    

         /** */ 
         /**    
         * 计算当前页,若为0或者请求的URL中没有"?page=",则用1代替    
         *     
         * @param page    
         *                        传入的参数(可能为空,即0,则返回1)    
         * @return 当前页    
         */
 
         public  static  int countCurrentPage( int page) {    
                 final  int curPage = (page == 0 ? 1 : page);    
                 return curPage;    
        }    

}

Action相应的方法
public String showAll() throws Exception {
      String sql =  "from User user ";
       this.pagebean =loginServce.findAllByPage(pageSize, page,sql);
      ActionContext context=ActionContext.getContext();
      Map map=context.getSession();
      map.put( "pagebean", pagebean);
       return  "all";
}
  
//分页Dao类的分页方法

   public  List findAllByPage(String hql,  int  offset,  int  length) {
    Session session=sessionFactory.openSession();
    Query query=session.createQuery(hql);
  
    query.setFirstResult(offset);
    query.setMaxResults(length);
    List list=query.list();
    
   /*  for(int i=0;i<list.size();i++){
      LeaveMessage leaveMessage=(LeaveMessage)list.get(i);
      
      System.out.println("levaeMessage.leaveTime="+leaveMessage.getLeaveTime());
    }*/

   //  session.close();
     return  list;  
  }

  
   public  PageBean findAllByPage( int  pageSize,  int  page,String hql) {
                 // String hql="from Break breakInfo order by id desc"; 
            
      int  allRow= this .getAllRowCount(hql);
     
  
      int  totalPage=PageBean.countTotalPage(pageSize, allRow);    
      int  offset=PageBean.countOffset(pageSize, page); 
      if (offset<0)
     {
        offset=0;
     }
     
      final  int  length=pageSize;
      final  int  currentPage=PageBean.countCurrentPage(page);    
     List    list= this .findAllByPage(hql, offset, length);
     
     PageBean pageBean= new  PageBean();
     pageBean.setPageSize(pageSize);
     pageBean.setAllRow(allRow);
     pageBean.setCurrentPage(currentPage);
     pageBean.setTotalPage(totalPage);
     pageBean.setList(list);
     pageBean.init();  
      return  pageBean;
  }
  
   public  int  getAllRowCount(String hql) {
    Session session=sessionFactory.getCurrentSession();
    Query query=session.createQuery(hql);
    List list=query.list();
    session.close();
     return  list.size();
  }


相应的分页jsp页面

<
%@ page  language ="java"  import ="java.util.*"  pageEncoding ="UTF-8"% >
< %@ taglib  prefix ="c"  uri ="http://java.sun.com/jsp/jstl/core" % >
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

< !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >
< html >
     < head >
         < base href="<%=basePath% >">
        
         < title >My JSP 'index.jsp' starting page </title>
   < meta  http-equiv ="pragma"  content ="no-cache" >
   < meta  http-equiv ="cache-control"  content ="no-cache" >
   < meta  http-equiv ="expires"  content ="0" >        
   < meta  http-equiv ="keywords"  content ="keyword1,keyword2,keyword3" >
   < meta  http-equiv ="description"  content ="This is my page" >
  <!--
   < link  rel ="stylesheet"  type ="text/css"  href ="styles.css" >
  -->
     </head>
    
     < body >
< table  width ="619"  height ="294"  border ="1"  cellpadding ="0.05"  cellspacing ="0.05"  align ="center" >
         < tr  align ="center" >
             < td >密码 </td>
             < td >用户 </td>
      < td >操作 </td>
         </tr>
         < c:forEach  items ="${pagebean.list}"  var ="list"  >
         < tr >
             < td >${list.password}  </td>
             < td >${list.userName}  </td>
         < td > < a  href ="loginManagerControl!delet.action?id=${list.id}"  onclick ="return confirm('你确定要删除吗?')" >删除 </a>
         < a  href ="loginManagerControl!updateUI.action?id=${list.id}"  >修改 </a> 
                 < a  href ="loginManagerControl!datil.action?id=${list.id}"  >详细 </a> 
          </td>
         </tr>
      </c:forEach>
     
    
     </table>
      < center >
    共${ pagebean.allRow} 条记录
                共${pagebean.totalPage} 页
                当前第${pagebean.currentPage }页 < br />
                 < c:choose >
                 < c:when  test ="${pagebean.currentPage == 1}" >
                
             
                        第一页 上一页
                         </c:when>
          < c:otherwise >
                         < a  href ="loginManagerControl!showAll.action?page=1" >第一页 </a>
                         < a  href ="loginManagerControl!showAll.action?page=${pagebean.currentPage-1}" >上一页 </a>
              </c:otherwise>
                 </c:choose>
                
                 < c:choose >
                 < c:when  test ="${pagebean.currentPage != pagebean.totalPage}" >
         
                         < a  href ="loginManagerControl!showAll.action?page=${pagebean.currentPage+1}" >下一页 </a>
                         < a  href ="loginManagerControl!showAll.action?page=${pagebean.totalPage}" >最后一页 </a>
                 </c:when>
                 < c:otherwise >
                
                        下一页 最后一页
                 </c:otherwise>
                 </c:choose>
   </center>  
     </body>
</html>
















本文转自yunlielai51CTO博客,原文链接:http://blog.51cto.com/4925054/1118334 ,如需转载请自行联系原作者

相关文章
|
8月前
|
存储 NoSQL Redis
【Redis】利用Redis List实现数据库分页快速查询
【Redis】利用Redis List实现数据库分页快速查询
423 0
|
8月前
|
存储 缓存 NoSQL
利用Redis List实现数据库分页快速查询的有效方法
利用Redis List实现数据库分页快速查询的有效方法
|
监控 数据可视化 安全
Linux——怎样使用SSH服务实现远程UI界面本地显示
需求场景 最近几天需要实现软件的远程监控,但是实际场景又不能使用向日葵、VNC、AnyDesk、以及其他的监视软件,并且软件的整体设计也没有这块的数据上行设计。
586 0
|
5月前
|
存储 关系型数据库 MySQL
mysql数据库查询时用到的分页方法有哪些
【8月更文挑战第16天】在MySQL中,实现分页的主要方法包括:1)使用`LIMIT`子句,简单直接但随页数增加性能下降;2)通过子查询优化`LIMIT`分页,提高大页码时的查询效率;3)利用存储过程封装分页逻辑,便于复用但需额外维护;4)借助MySQL变量实现,可能提供更好的性能但实现较复杂。这些方法各有优缺点,可根据实际需求选择适用方案。
553 2
|
3月前
|
数据可视化 数据库 数据安全/隐私保护
在IDEA中如何用可视化界面操作数据库? 在idea中如何操作数据库? 在idea中如何像Navicat一样操作数据库?
文章介绍了如何在IDEA中使用可视化界面操作数据库,类似于Navicat,以提高数据库操作的效率和管理性。
92 1
在IDEA中如何用可视化界面操作数据库? 在idea中如何操作数据库? 在idea中如何像Navicat一样操作数据库?
|
5月前
|
存储 数据库连接 数据库
【Python】python员工信息管理系统(数据库版本)(GUI界面+数据库文件+源码)【独一无二】
【Python】python员工信息管理系统(数据库版本)(GUI界面+数据库文件+源码)【独一无二】
549 1
|
8月前
|
前端开发 数据库 Python
使用 Python 的 Web 框架(如 Django 或 Flask)来建立后端接口,用于处理用户的请求,从数据库中查找答案并返回给前端界面
【1月更文挑战第13天】使用 Python 的 Web 框架(如 Django 或 Flask)来建立后端接口,用于处理用户的请求,从数据库中查找答案并返回给前端界面
265 7
|
6月前
|
开发框架 前端开发 JavaScript
电商商品数据库的设计和功能界面的处理
电商商品数据库的设计和功能界面的处理
|
5月前
|
SQL 前端开发 Java
已知数据库中存在表tb_book2,通过在图书信息界面填写书本的基本信息,然后提交后写入数据库中的表格中。需要对提交的信息进行修改,信息填入不能为空,为空则则有提示。
该博客文章通过示例演示了如何使用JSP结合SQL Server数据库向表`tb_book2`中添加图书信息,包括信息填写、前端验证、JavaBean封装图书属性、使用`PreparedStatement`执行插入操作,并确保了提交的信息不能为空,否则会给出提示。
|
7月前
|
SQL 关系型数据库 MySQL
MySQL数据库——图形化界面工具(DataGrip),SQL(2)-DML(插入、修改和删除数据)
MySQL数据库——图形化界面工具(DataGrip),SQL(2)-DML(插入、修改和删除数据)
620 1