ssh 分页

public class PageBean {

    private List<User> 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 void init(){
        this.isFirstPage = isFirstPage;
        this.isLastPage = isLastPage;
        this.hasPreviousPage = hasPreviousPage;
        this.hasNextPage = hasNextPage;
    }
    /**
     * 计算总页数  静态方法
     * @param pageSize  每页的记录数
     * @param allRow  总记录数
     * @return 总页数
     */
    public static int countTatalPage(final int pageSize,final int allRow){
    int toalPage = allRow % pageSize == 0 ? allRow/pageSize : allRow/pageSize + 1;
    return toalPage;
    }
    /**
     * 计算当前页开始的记录
     * @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;
    }

    public List<User> getList() {
        return list;
    }
    public void setList(List<User> 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 boolean isFirstPage() {
        return isFirstPage;
    }
    public void setFirstPage(boolean isFirstPage) {
        this.isFirstPage = isFirstPage;
    }
    public boolean isLastPage() {
        return isLastPage;
    }
    public void setLastPage(boolean isLastPage) {
        this.isLastPage = isLastPage;
    }
    public boolean isHasPreviousPage() {
        return hasPreviousPage;
    }
    public void setHasPreviousPage(boolean hasPreviousPage) {
        this.hasPreviousPage = hasPreviousPage;
    }
    public boolean isHasNextPage() {
        return hasNextPage;
    }
    public void setHasNextPage(boolean hasNextPage) {
        this.hasNextPage = hasNextPage;
    }
    

Dao 及实现

public interface MemberDao {

    /**
     * 分页查询
     * @param hql  查询条件
     * @param offset  开始记录
     * @param length  一次查询几条记录
     * @return 查询的记录集合
     */
    public List<User> queryForPage(final String hql,final int offset,final int length);
    /**
     * 查询所有的记录数
     * @param hql 查询条件
     * @return 总记录数
     */
    public int getAllRowCount(String hql);
}

@Component("memberDao")
public class MemberDaoImpl extends BaseDAO implements MemberDao{

    /**
     * 查询所有的记录数
     * @param hql 查询条件
     * @return 总记录数
     */
    public int getAllRowCount(String hql) {
        return this.getHibernateTemplate().find(hql).size();
    }
    /**
     * 分页查询
     * @param hql  查询条件
     * @param offset  开始记录
     * @param length  一次查询几条记录
     * @return 查询的记录集合
     */
    @SuppressWarnings("unchecked")
    public List<User> queryForPage(final String hql, final int offset, final int length) {
    Session session = this.hibernateTemplate.getSessionFactory().openSession();
    Query q = session.createQuery(hql);
    q.setFirstResult(offset);
    q.setMaxResults(length);
    List<User> list = q.list();
    System.out.println(list.size());
    session.close();
    return list;
    }
}

service及实现层

public interface UserService {

    /**
     * 分页查询
     * @param pageSize  每页显示多少记录
     * @param currentPage 当前页
     * @return 封装了分页信息的bean
     */
    public PageBean queryForPage(int pageSize,int page);
}

@Service("userService")
public class UserServiceImpl implements  UserService{

    private MemberDao  memberDao;
    /**
     * 分页查询
     * @param pageSize  每页显示多少记录
     * @param currentPage 当前页
     * @return 封装了分页信息的bean
     */
    public PageBean queryForPage(int pageSize, int page) {
        final String hql = "from User user order by user.id"; //查询语句
        int allRow = memberDao.getAllRowCount(hql);  //总记录数
        int totalPage = PageBean.countTatalPage(pageSize, allRow); //总页数
        final int offset = PageBean.countOffset(pageSize, page); //当前页开始记录
        final int length = pageSize; // 每页记录数
        final int currentPage = PageBean.countCurrentPage(page); // 当前页
        List list = memberDao.queryForPage(hql, offset, length); //
        //把分页信息保存到Bean当中
        PageBean pageBean  = new PageBean();
        pageBean.setPageSize(pageSize);
        pageBean.setCurrentPage(currentPage);
        pageBean.setAllRow(allRow);
        pageBean.setTotalPage(totalPage);
        pageBean.setList(list);
        pageBean.init();
        return pageBean;
    }

    public MemberDao getMemberDao() {
        return memberDao;
    }
    @Resource
    public void setMemberDao(MemberDao memberDao) {
        this.memberDao = memberDao;
    }

}

前台页面

<table>
           <s:iterator value="pageBean">
        <tr >
         <td colspan="3" align="center" bgcolor="">
             共<s:property value="allRow"/>条记录           共<s:property value="totalPage"/>页       当前第<s:property value="currentPage"/>页
         <s:if test="%{currentPage == 1}">
                   第一页  上一页
         </s:if>
         <!-- currentPage为当前页 -->
         <s:else>
           <a href="listUser2.action?page=1&pageSize=<s:property value="%{pageSize}" />">第一页</a>
           <a href="listUser2.action?page=<s:property value="%{currentPage-1}"/>&pageSize=<s:property value="%{pageSize}" />">上一页</a>
         </s:else>

         <s:if test="%{currentPage != totalPage}">
             <a href="listUser2.action?page=<s:property value="%{currentPage+1}" />&pageSize=<s:property value="%{pageSize}" />">下一页</a>
             <a href="listUser2.action?page=<s:property value="totalPage"/>&pageSize=<s:property value="%{pageSize}" />">最后一页</a>
         </s:if>
         <s:else>
             下一页  最后一页
         </s:else>
         页面大小<select name="pageSize" id="pageSize" onchange="window.location.href=this.options[selectedIndex].value">
                            <option value="listUser2.action?pageSize=5" >5</option>
                            <s:if test="pageSize==10">
                                <option value="listUser2.action?pageSize=10"  selected="selected">10</option>
                                <option value="listUser2.action?pageSize=15"  >15</option>
                            </s:if>
                            <s:else>
                                <option value="listUser2.action?pageSize=10" >10</option>
                                <s:if test="pageSize==15">
                                    <option value="listUser2.action?pageSize=15"   selected="selected">15</option>
                                </s:if>
                                <s:else>
                                    <option value="listUser2.action?pageSize=15" >15</option>
                                </s:else>
                            </s:else>
                        </select>
         </td>
        </tr>
        </s:iterator>
    </table>

时间: 2024-10-20 00:46:01

ssh 分页的相关文章

代码规范案例(ssh分页)

1.首先我们先新建立一个接口MemberDao.java,把所需要用到的方法列出来: package cn.zbvc.dao; import java.util.List; import cn.zbvc.bean.User; public interface MemberDao { /**  * 分页查询  * @param hql  查询条件  * @param offset  开始记录  * @param length  一次查询几条记录  * @return 查询的记录集合  */ pub

SSH分页查询操作实例

使用的框架是struts2+spring3+hibernate4,需要特别注意两点,其一是保证三层的松耦合,我看到有文章在Service层中向Dao传递HQL语句,其实是不对的:二是,新版hibernate在查询COUNT(*)返回记录数量时,类型改为了Long型,需要做特殊处理. 首先要做一个PageBean对象: public class PageBean { //Result List @SuppressWarnings("rawtypes") private List list

jsp include参数传送接收与应用

先看一个简单的应用,在a.jsp中写如下代码 <html> <head></head> <body> <div> <jsp:include page="name.jsp"> <jsp:param name="name" value="xy" /> </jsp:include> </div>这就将名为name,值为xy的参数传送到name.j

ssh整合问题总结--使用HibernateTemplate实现数据分页展示

在进行大量的数据展示时,必须要使用分页查询,第一次使用在SSH框架整合中使用分页查询,遇到了一些问题,下面以我练习的项目为例详细介绍,如何在Spring+hibernate(+action)的环境下完成数据的分页查询. 在utils包下新建一个pageBean(这个实体类用于封装当前页面的数据集合,以及和page相关的参数): public class PageBean<T> { private int page;//当前页数 private int totalCount;//总记录数 pri

在SSH项目中实现分页效果

在实现分页的时候,我使用的是数据库下面的User表,实现的效果是通过分页查询 能够将表中的数据分页显示,点击相关的按钮实现:首页.上一页.下一页.末页的显示 1新建一个dynamic web project项目 ,导入SSH项目所需要的jar antlr-2.7.7.jar c3p0-0.9.5.2.jar classmate-1.3.0.jar com.springsource.org.aopalliance-1.0.0.jar com.springsource.org.apache.comm

使用SSH实现分页的详细demo(附带数据库,MYSQl和Oracle)

原文:使用SSH实现分页的详细demo(附带数据库,MYSQl和Oracle) 源代码下载地址:http://www.zuidaima.com/share/1550463697128448.htm 详细的Struts2+hibernate+spring的分页demo,还附带数据库,支持mysql和oracle 源码截图

学习SSH时的练习demo,实现分页和登录等简单功能

原文:学习SSH时的练习demo,实现分页和登录等简单功能 源代码下载地址:http://www.zuidaima.com/share/1550463779310592.htm 学习SSH时的练习demo,实现分页和登录等简单功能,适合初学者来练习使用..

SSH自定义分页标签

本文参考文章:http://blog.csdn.net/qjyong/article/details/3240303 一.标签处理类: package cn.conris.sys.form; import java.io.IOException; import java.util.Enumeration; import javax.servlet.http.HttpServletRequest; import javax.servlet.jsp.JspException; import java

实例:SSh结合Easyui实现Datagrid的分页显示(JAVA版)

近日学习Easyui,发现非常好用,界面很美观.将学习的心得在此写下,这篇博客写SSh结合Easyui实现Datagrid的分页显示,其他的例如添加.修改.删除.批量删除等功能将在后面的博客一一写来. 首先看一下要实现的效果:当每页显示5行数据: 当每页显示10行数据,效果如下: 具体步骤: 1.下载Easyui,并搭建环境.可参照博客 http://blog.csdn.net/lhq13400526230/article/details/9148299 2.搭建SSH工程,整个工程的目录结构如