springmvc中分页

此处为Page类

package com.howin.pojo;

import java.util.List;

public class Page<E> {
    // 结果集
    private List<E> list;

    // 查询记录总数
    private int totalRecords;

    // 每页多少条记录
    private int pageSize;

    // 第几页
    private int pageNo;
    
    /**
     * @return 总页数
     * */
    public int getTotalPages(){
        if ((totalRecords+pageSize-1)/pageSize==0) {
            return 1;
        } else {
            return (totalRecords+pageSize-1)/pageSize;
        }
        
    }
  
 计算当前页开始记录
    public int countOffset(int currentPage,int pageSize){
        int offset = pageSize*(currentPage-1);
        return offset;
    }
    
    /**
     * @return 首页
     * */
    public int getTopPageNo(){
        return 1;
    }
    
    /**
     * @return 上一页
     * */
    public int getPreviousPageNo(){
        if(pageNo<=1){
            return 1;
        }
        return pageNo-1;
    }
    
    /**
     * @return 下一页
     * */
    public int getNextPageNo(){
        if(pageNo>=getBottomPageNo()){
            return getBottomPageNo();
        }
        return pageNo+1;
    }
    
    /**
     * @return 尾页
     * */
    public int getBottomPageNo(){
        return getTotalPages();
    }
    
    
    public List<E> getList() {
        return list;
    }

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

    public int getTotalRecords() {
        return totalRecords;
    }

    public void setTotalRecords(int totalRecords) {
        this.totalRecords = totalRecords;
    }

    public int getPageSize() {
        return pageSize;
    }

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

    public int getPageNo() {
        return pageNo;
    }

    public void setPageNo(int pageNo) {
        this.pageNo = pageNo;
    }
}


在BizImpl层

@Override
    public Page queryallKnowledge(int currentPage,int pageSize) {
        Page page = new Page();        
        //总记录数
      int allRow= knowledgeDao.getAllrowCount();
        //当前页开始记录
        int offset = page.countOffset(currentPage,pageSize);  
        //分页查询结果集
        List<Knowledge> list =knowledgeDao.queryallKnowledge(offset, pageSize);

        page.setPageNo(currentPage);
        page.setPageSize(pageSize);
        page.setTotalRecords(allRow);
        page.setList(list);
        
        return page;
    }

在DaoImpl层

@Override
    public List<Knowledge> queryallKnowledge(int offset,int pageSize) {
        @SuppressWarnings("unchecked")
        Query query= sessionFactory.getCurrentSession().createQuery("from Knowledge");
        query.setFirstResult(offset);
        query.setMaxResults(pageSize);
        return query.list();
    }

在Controller层

// 根据用户ID查询知识
    @RequestMapping("/knowledgeList")
    public String queryKnowledgeByUserId(Map<String, Object> model, Integer userid, HttpServletRequest request,String pageNo) {
        List<Knowledge> knowledgeList = new ArrayList<Knowledge>();
        //定义Page类
                Page page;
                //pageNo是前台传过来的当前页,如果是第一次,默认显示第一页
                if(pageNo==null){
                    pageNo="1";
                }
                //根据当前页,每次查询5条
                page=knowledgeBiz.queryPageKonwledgeByUserId(userid,Integer.valueOf(pageNo),5);
                knowledgeList.addAll(page.getList());
        model.put("page", page);
        model.put("knowledgeList", knowledgeList);
        request.setAttribute("knowledgeListSize", knowledgeList.size());
        return "user/knowledgeList";
    }

在前台jsp中

<div id="btn_m">
            <a>共${page.totalRecords}条记录 共${page.totalPages}页 当前第${page.pageNo}页
                
                <a href="${pageContext.request.contextPath}/user/knowledgeList?pageNo=${page.getTopPageNo()}&&userid=${sessionScope.user.id}"><input type="button" name="fristPage" value="首页" class="btn btn-info"/></a>
                <c:choose>
                  <c:when test="${page.pageNo!=1}">
                    
                      <a href="${pageContext.request.contextPath}/user/knowledgeList?pageNo=${page.previousPageNo }&&userid=${sessionScope.user.id}"><input type="button" name="previousPage" value="上一页" class="btn btn-info"/></a>
                  </c:when>
                  <c:otherwise>
                    
                      <input type="button" disabled="disabled" name="previousPage" value="上一页" class="btn btn-info"/>
                    
                  </c:otherwise>
                </c:choose>
                <c:choose>
                  <c:when test="${page.pageNo != page.totalPages}">
                    <a href="${pageContext.request.contextPath}/user/knowledgeList?pageNo=${page.getNextPageNo() }&&userid=${sessionScope.user.id}"><input type="button" name="nextPage" value="下一页" class="btn btn-info"/></a>
                  </c:when>
                  <c:otherwise>
                    
                      <input type="button" disabled="disabled" name="nextPage" value="下一页" />
                    
                  </c:otherwise>
                </c:choose>
                
                <a href="${pageContext.request.contextPath}/user/knowledgeList?pageNo=${page.bottomPageNo }&&userid=${sessionScope.user.id}"><input type="button" name="lastPage" value="尾页" class="btn btn-info"/></a>
              <a id="ahref" href="#" οnclick="location.href='${pageContext.request.contextPath}/user/knowledgeList?pageNo='+document.getElementById('indexnum').value.trim()+'&&userid=${sessionScope.user.id}';"><input type="button" value="点此跳转" class="btn btn-info" id="btn"  οnclick="test()"/></a><input id="indexnum" type="text" />
            </div>

<script>
function test(){
var num=document.getElementById("indexnum").value.trim();
if(num==""){
    document.getElementById("indexnum").value="";
    alert("请输入内容!!");
    document.getElementById("ahref").οnclick="";
    window.location.reload();
}else if(isNaN(num)){
    document.getElementById("indexnum").value="";
    alert("只能输入数字!");
    document.getElementById("ahref").οnclick="";
    window.location.reload();
}else if(num>${page.totalPages}  || num<=0){
    document.getElementById("indexnum").value="";
    alert("请输入符合规范的页码!!");
    document.getElementById("ahref").οnclick="";
    window.location.reload();
}
}
</script>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章