天猫京东哪个货真价实:Struts Spring Hibernate通用分页程序

来源:百度文库 编辑:偶看新闻 时间:2024/04/28 09:25:58
Struts+Spring+Hibernate通用分页程序

package com.myecsun.util.helper;
import org.hibernate.Query;
import java.util.List;
import org.hibernate.Criteria;

//读取一页数据的通用类
/**================================

 ===================================*/
public class Page {
   private List results;
   private int pageSize;
   private int page;

  public Page() {
  }
  public Page(Query query,int pageSize,int page){
    this.page=page;
    this.pageSize=pageSize;
    results=query.setFirstResult((page-1)*pageSize).setMaxResults(pageSize).list();
  }
  public Page(Criteria crit,int pageSize,int page){
    this.page=page;
    this.pageSize=pageSize;
    results=crit.setFirstResult((page-1)*pageSize).setMaxResults(pageSize).list();
  }
  public boolean isHaveNextPage(){
    return results.size()>pageSize;
  }
  public boolean isHavePreviousPage(){
    return page>0;
  }
  public List getResultsList(){
    return isHaveNextPage()?results.subList(0,pageSize-1):results;
  }
}
本类在DAO中的使用方法为:

  public Page getPosts(int pageSize, int page) {
    return new Page(this.getSession().getNamedQuery("getGroups"),pageSize,page);
  }

传入的参数分别为:一页显示数据的条数和当前页号

编写标签辅助类:

package com.myecsun.util.helper;

import javax.servlet.http.HttpServletRequest;

public class PageHelper {

  public PageHelper() {
  }

  public OldPage getPageInfo(HttpServletRequest request, int total) {
    try {
      OldPage page = new OldPage();
      int pageSize = 25;
      String pageno = request.getParameter("pageno");
      String totalcount = request.getParameter("totalcount");
      String totalpage = request.getParameter("totalpage");
      page.setPagesize(pageSize);
      if (pageno == null || totalcount == null || totalpage == null) {
        page.setPageno(1);
        page.setTotalcount(total);
        if (total % pageSize == 0) {
          page.setTotalpage(total / pageSize);
        }
        else {
          page.setTotalpage(total / pageSize + 1);
        }

      }
      else {
        page.setPageno(Integer.parseInt(pageno));
        page.setTotalcount(Integer.parseInt(totalcount));
        page.setTotalpage(Integer.parseInt(totalpage));
      }

      return page;
    }
    catch (NumberFormatException ex) {
      System.out.println("ex is :" + ex.toString());
      return null;
    }
  }

}
在标签中使用标签辅助类:

package com.myecsun.util.helper;

import java.io.*;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;

/**
 */
public class PageTag
    extends SimpleTagSupport {

  private OldPage page;
  private String action = null;
//  private String nodeID;

  public void setAction(String action) {
    this.action = action;
  }

  public String getAction() {
    return this.action;
  }

  public OldPage getPage() {
    return this.page;
  }

//  public String getNodeID() {
//    return nodeID;
//  }

  public void setPage(OldPage page) {
    this.page = page;
  }

//  public void setNodeID(String nodeID) {
//    this.nodeID = nodeID;
//  }

  public void doTag() throws JspException, IOException {
    JspWriter out = getJspContext().getOut();
    int totalpage = page.getTotalpage();
    int totalcount = page.getTotalcount();
    int pageno = page.getPageno();
    int addpageno = pageno + 1;
    int minpageno = pageno - 1;
    int pageStart;
    int pageEnd;

    if (pageno - 4 > 0) {
      pageStart = pageno - 3;
      if (totalpage > pageno + 4) {
        pageEnd = pageno + 4;
      }
      else {
        pageEnd = totalpage;
      }
    }
    else if("".equals(pageno)) {
      pageStart = 1;
      if (totalpage > 8) {
        pageEnd = 8;
      }
      else {
        pageEnd = totalpage;
      }
    }else{
      pageStart = 1;
      if (totalpage > 8) {
        pageEnd = 8;
      }
      else {
        pageEnd = totalpage;
      }
    }

    out.println("

");
    out.print("");
    out.println("");
    out.println("
共" + totalcount + "条," + totalpage + "页,当前是第"
                + pageno + "页
");
    if (pageno > 1) {
      out.println("                   + "&pageno=1" + "&totalpage=" + totalpage + "&totalcount="
                   + totalcount + "\">");
    }
    out.print("首页");
    out.println("
");
    if (pageno > 1) {
      out.println("");
    }
    out.print("上页");
    out.println("
");

    //显示页数序列。Ex:1 2,3,4、、、、
    for (int i = pageStart; i < pageEnd+1; i++) {
      out.println("");
      out.print("");
      out.print(i);
      out.print("
");
      out.println("
");

    }

    if (pageno < totalpage) {
   out.println("");
 }
    out.print("下页");
    out.println("
");
    if (pageno < totalpage) {
      out.println("");

    }
    out.print("末页");
    out.println("
");
    out.println("

");

  }
}
编写.tld描述文件:




  1.0
  MyTag
 
    page
    com.myecsun.util.helper.PageTag
    empty
   
      page
      true
      true
   

   
      action
      false
      true
   

   
      nodeID
      false
      true
   

 


在Action中使用:

int total = groupService.getCount();
      int page = pageHelper.getPageInfo(request, total).getPageno();
      int pageSize = pageHelper.getPageInfo(request, total).getPagesize();
      FastArrayList groups=new FastArrayList(groupService.getPosts(pageSize,page).getResultsList()); request.setAttribute("groups",groups);
      request.setAttribute("page", pageHelper.getPageInfo(request, total));
      return mapping.findForward("queryGroup");

在web.xml中配置taglib:

 
      /page
      /WEB-INF/mytld/page.tld
   

在网页中加入标签:

<%@taglib uri="/page" prefix="page"%>

<%@page import="com.myecsun.util.helper.OldPage"%>

" action="queryAction.html?method=queryGroup"/>