`

{转}ssh超实用分页实现

阅读更多

http://shiyangxt.cnblogs.com

下面是分页思想,一个初始化方法和一个分页实现方法:

分页的util类:

package com.sy.util;

import java.util.List;
@SuppressWarnings(
"unchecked")
public class Page {

    
private int pageSize;
    
private int totalPage; 
    
private int rowCount;
    
private int currentPage;
    
private int prePage; 
    
private int nextPage;
    
private boolean hasNextPage;
    
private boolean hasPreviousPage;
    
private List list;

    
public Page() {
        
this.pageSize=10;
    }

    
public int getPageSize() {
        
return pageSize;
    }

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

    
public int getTotalPage() {
        
return totalPage;
    }

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

    
public int getRowCount() {
        
return rowCount;
    }

    
public void setRowCount(int rowCount) {
        
this.rowCount = rowCount;
    }

    
public int getCurrentPage() {
        
return currentPage;
    }

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

    
public int getPrePage() {
        
return prePage;
    }

    
public void setPrePage(int prePage) {
        
this.prePage = prePage;
    }

    
public int getNextPage() {
        
return nextPage;
    }

    
public void setNextPage(int nextPage) {
        
this.nextPage = nextPage;
    }

    
public boolean isHasNextPage() {
        
return hasNextPage;
    }

    
public void setHasNextPage(boolean hasNextPage) {
        
this.hasNextPage = hasNextPage;
    }

    
public boolean isHasPreviousPage() {
        
return hasPreviousPage;
    }

    
public void setHasPreviousPage(boolean hasPreviousPage) {
        
this.hasPreviousPage = hasPreviousPage;
    }

    
public List getList() {
        
return list;
    }

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

}

 

分页的数据库操作和逻辑判断我把他单独用一个PageDaoImpl来实现:

/*
 * 施杨的分页daoimpl类 
 * 
*/
package com.sy.dao.impl;

import java.sql.SQLException;
import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.sy.dao.BaseDao;
import com.sy.util.Page;

@SuppressWarnings(
"unchecked")
public class PageDaoImpl extends HibernateDaoSupport {

    
private String hql;
    
public Page page;
    
public int start;
    
public BaseDao dao;
    
public void setDao(BaseDao dao) {
        
this.dao = dao;
    }

    
public void init(int start,String tableName){    // ͨ��init����ʵ����ij�ʼ��
       page = new Page();
       
this.hql = "from "+tableName;
       
this.start = start;
       setRowCount();
       setTotalPage();
       setCurrentPage();
       setPrePage();
       setNextPage();
       setPreOrNextBoolean();
    }

    
public int getRowCount(){
       List list 
= dao.find(hql);
       
if(list.isEmpty()){
        
return 0;
       }
       
return list.size();
    }

    
public Page getPage(){
       List list 
= (List)getHibernateTemplate().execute(new HibernateCallback(){
        
public Object doInHibernate(Session session) throws HibernateException, SQLException {
         Query query 
= session.createQuery(hql);
         query.setFirstResult(getStartIndex());
         query.setMaxResults(page.getPageSize());
         
return query.list();
        }   
       });
       page.setList(list);
       
return page;
    }
    
    
public void setPreOrNextBoolean() {
        
if (page.getCurrentPage() <= 1) {
            page.setHasPreviousPage(
false);
        } 
else {
            page.setHasPreviousPage(
true);
        }
        
if (page.getCurrentPage() >= page.getTotalPage()) {
            page.setHasNextPage(
false);
        } 
else {
            page.setHasNextPage(
true);
        }
    }

    
public void setCurrentPage() {
        
if (start < 1) {
            page.setCurrentPage(
1);
        }
        
if (start > page.getTotalPage()) {
            page.setCurrentPage(page.getTotalPage());
        }
        page.setCurrentPage(start);
    }

    
public void setPrePage() {
        page.setPrePage(page.getCurrentPage() 
- 1);
    }

    
public void setNextPage() {
        page.setNextPage(page.getCurrentPage() 
+ 1);
    }

    
public void setTotalPage() {
        
int rowCount = getRowCount();
        
int pageSize = page.getPageSize();
        
if (rowCount > pageSize) {
            
if (rowCount % pageSize == 0) {
                page.setTotalPage(rowCount 
/ pageSize);
            } 
else {
                page.setTotalPage(
1 + (rowCount / pageSize));
            }
        } 
else {
            page.setTotalPage(
1);
        }
    }

    
public void setRowCount() {
        page.setRowCount(getRowCount());
    }

    
public int getStartIndex() {
        
int startIndex = 0;
        
if (start < 0) {
            startIndex 
= 0;
        } 
else {
            
if (start > page.getTotalPage()) {
                startIndex 
= page.getPageSize() * (page.getTotalPage() - 1);
            } 
else {
                startIndex 
= page.getPageSize() * (start - 1);
            }
        }
        
return startIndex;
    }
}

 

然后是业务层接口,举例AdminService.java

 

//管理员service层接口
package com.sy.service;

import java.util.List;

import com.sy.util.Page;
import com.sy.vo.Admin;

public interface AdminService extends BaseService{

    
    
//分页初始化
    public void init(int pno);
//分页实现
    public Page getPage();
    
}

 

实现类AdminServiceImpl.java

 

//管理员service层实现类
package com.sy.service.impl;

import java.util.List;

import com.sy.dao.impl.AdminDaoImpl;
import com.sy.dao.impl.PageDaoImpl;
import com.sy.service.AdminService;
import com.sy.util.Page;
import com.sy.vo.Admin;

@SuppressWarnings(
"unchecked")
public class AdminServiceImpl extends BaseServiceImpl implements AdminService {

        .

    
public Page getPage() {
        
return Pdao.getPage();
    }
    
public void init(int pno) {
        String tableName
="Admin";
        Pdao.init(pno,tableName);
    }
}

 

 struts的action层AdminAction.java

 

//管理员action实现类
package com.sy.action;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;

import com.sy.form.AdminForm;
import com.sy.form.LoginForm;
import com.sy.service.AdminService;
import com.sy.util.MD5;
import com.sy.util.Page;
import com.sy.vo.Admin;
@SuppressWarnings(
"unchecked")
public class AdminAction extends BaseAction {

        .
//查看管理员
    public ActionForward listAdmins(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response) {
        AdminService as
=(AdminService)super.getBean("AdminService");
           
int pno = (new Integer(request.getParameter("pno"))).intValue();
           as.init(pno);
           Page myPage 
= as.getPage();
           List myList 
= as.getPage().getList(); 
           request.setAttribute(
"myPage", myPage);
           request.setAttribute(
"AdminList", myList);
           
return mapping.findForward("show");
           
    }
}

 

结构清晰,也很实用。

页面lookAdmin.jsp

 

<%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>
<html>
    
<head>
        
<meta http-equiv="Content-Language" content="zh-cn">
        
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        
<title>施杨SSH新闻发布</title>
    
</head>
    
<body>
        
<center>
            
<h3>
                查看管理员
            
</h3>
            
<br>
            
<href="./admin/addAdmin.jsp">添加管理员</a>
            
<br>
            
<href="./NewsPage2.do?pno=1">查看新闻</a>
            
<br>
            
<table border="2" width="600">
                
<tr>
                    
<td>
                        用户名
                    
</td>
                    
<td>
                        密码
                    
</td>
                    
<td>
                        操作
                    
</td>
                
</tr>
    
<c:forEach items="${requestScope['AdminList']}" var="admin">
            
<tr align="center">
              
<td width="20%" height="10"><c:out value="${admin.aname}" /></td>
              
<td width="20%" height="10"><c:out value="${admin.apassword}" /></td>
              
<td>
                
<href="./editAdmin.do?aid=<c:out value="${admin.aid}"/>">修改</a>
                
&nbsp;&nbsp;
                
<href="./deleteAdmin.do?aid=<c:out value="${admin.aid}"/>" onclick="javascript:return confirm('您确定删除吗?')">删除</a>
              
</td>
            
</tr>
    
</c:forEach>
    
</table>
    
<table align="center" width="500">
    
<tr>
       
<td align="center" colspan="10">
          
<logic:present name="myPage">
            
<html:link page="/AdminPage.do?pno=1">首页</html:link>
          
<logic:equal name="myPage" property="hasPreviousPage" value="false">上一页</logic:equal>
          
<logic:equal name="myPage" property="hasPreviousPage" value="true">
           
<href="./AdminPage.do?pno=<bean:write name="myPage" property="prePage"/>">上一页</a>
      
</logic:equal>
           
           每页
<bean:write name="myPage" property="pageSize"/>条记录
           共
<bean:write name="myPage" property="rowCount"/>条记录
                当前第(
<bean:write name="myPage" property="currentPage"/>/<bean:write name="myPage" property="totalPage"/>)页
        
<logic:equal name="myPage" property="hasNextPage" value="false">下一页</logic:equal>
        
<logic:equal name="myPage" property="hasNextPage" value="true">
         
<href="./AdminPage.do?pno=<bean:write name="myPage" property="nextPage"/>">下一页</a>
        
</logic:equal>
           
<href="./AdminPage.do?pno=<bean:write name='myPage' property='totalPage'/>">末页</a>
        
</logic:present>
      
</td>
      
</tr>
    
</table>
        
</center>
    
</body>
</html>
分享到:
评论

相关推荐

    Linux的命令集合

    9. **more** 和 **less**:分页查看文件内容,对于大文件更实用。 10. **find**:根据指定条件搜索文件,如按名称、大小、时间等。 11. **grep**:在文件中搜索特定字符串或模式。 12. **vi/vim**:强大的文本...

    LINUX必学的命令大全

    25. **ssh**:安全shell,远程登录并执行命令,实现安全的远程管理。 26. **cron**:定时任务调度,自动化日常任务执行。 27. **history**:查看命令历史,便于复用之前输入过的命令。 28. **alias**:创建别名,...

    linux常用命令大全.txt

    通过“tar”命令可以实现文件的打包和解压,这在传输和备份数据时尤为实用。“wget”命令能够从网络上下载文件,帮助用户获取远程服务器上的资源。“ssh”和“scp”命令分别用于远程登录和在本地计算机与远程计算机...

    命令整理-UNIX_Unixcommand_TheCommon_

    它可以实现文件的位置调整或名字更改。 8. **touch**:创建新文件或更新文件时间戳。常用来创建新文件或更新文件的时间信息。 9. **cat**:连接并打印文件内容。用于查看文件的基本内容。 10. **more**/**less**...

    linux命令完整版

    CHM文件“Linux命令”中可能还包含了一些高级命令、命令组合使用技巧、shell编程语法以及一些实用案例,这些都是Linux用户应该掌握的重要知识。通过深入学习和实践这些命令,你将能够更熟练地驾驭Linux操作系统,...

    linux常用命令大全

    Linux常用命令大全收录了100个基础且实用的指令,覆盖了文件和目录操作、文本处理、系统监控、网络管理以及用户管理等多个领域。以下是其中一些核心命令的详细解释: 1. `ls`命令用于列出当前目录下的文件和文件夹...

    Linux命令大集合

    - `more`/`less`: 分页浏览文件内容,比`cat`更适合大文件。 - `head`/`tail`: 查看文件开头或结尾的部分内容。 - `vi/vim`: 高级文本编辑器,支持命令模式和插入模式。 - `nano`: 更为用户友好的简单文本编辑器...

    linux必学命令

    本文将深入探讨“Linux必学命令”,帮助你快速掌握这些基础且实用的命令,提升你在Linux环境中的操作效率。 1. **ls**:列出目录内容。这个命令是最基本的,用于查看当前目录下的文件和子目录。 2. **cd**:切换...

    常用的60个Linux常用命令.zip

    本资料"常用的60个Linux常用命令.zip"汇总了Linux环境中最常用且实用的命令,旨在帮助初学者快速上手和提高工作效率。 1. **ls**:列出目录内容,常用于查看当前目录下的文件和子目录。 2. **cd**:改变工作目录,...

    Linux必学的60个命令v1.0.1.pdf

    这个名为"Linux必学的60个命令v1.0.1.pdf"的文档,很可能是对初学者或希望深化Linux技能的人员的一份实用指南。下面将详细介绍这60个命令中可能涵盖的一些关键知识点。 1. **ls**:列出目录内容,帮助用户查看当前...

Global site tag (gtag.js) - Google Analytics