那位牛人做过 Struts+Hibernate 的分页,要有 1 2 3 4 5 6 像这样显示的,有好思路或者代码的贴出来参考下,或者直接发到我邮箱,不慎感激。[email protected]

解决方案 »

  1.   


    package com.gdp2008_admin.util;/**
     * 分页类
     * @author 黄根发(chinahgf)
     * 2007-05-08
     */import java.util.ArrayList;
    import java.util.List;import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpSession;public class Page {
    private int pageSize; //一页显示的记录数
    private int pageCount;  //总页数
    private boolean isLastPage; //是否是最后一页
    private boolean hasNextPage; //是否有下一页
    private boolean hasPreviousPage; //是否有上一页
    private List showList; //待显示的数据集合
    private int pageShowNumber; //待显示的页面
    private static List resultList; //总记录
    private int resultListCount; //总记录数量


    /**
     * 构造方法
     */
    public Page(int pageSize){
    this.pageSize=pageSize; //设置一页的记录数
    showList=new ArrayList(); //初始
    this.hasNextPage=true; //初始
    this.hasPreviousPage=true; //初始
    this.pageShowNumber=1;
    }

    /**
     * 设置记录集
     * @return void
     */
    private void setResultList(List resultList){
    if(resultList!=null){
    this.resultList=resultList;
    }
    }

    /**
     * 设置总页数
     * @return void
     */
    private void setResultListCount(){
    this.pageCount=this.resultList.size()/this.pageSize;
    if(this.resultList.size()%this.pageSize!=0){
    this.pageCount+=1;
    }
    }

    /**
     * 设置显示页面信息
     * @return void
     */
    private void setShowInfo(List resultList,String pageShow,HttpServletRequest request){
    HttpSession session=request.getSession();
    if(this.pageCount<=1){ //如果只有一页
    this.hasNextPage=false;
    this.hasPreviousPage=false;
    }
    if(pageShow==null||pageShow.equals("")){
    this.pageShowNumber=1; //如果是第一次
    if(session.getAttribute("page")!=null){
    this.pageShowNumber=Integer.parseInt(session.getAttribute("page").toString());
    }
    this.hasPreviousPage=false;
    }else{
    this.pageShowNumber=Integer.parseInt(pageShow);
    if(this.pageShowNumber<=1){ //如果为首页
    this.pageShowNumber=1;
    this.hasPreviousPage=false;
    }else if(this.pageShowNumber>=this.pageCount){ //如果为尾页
    this.pageShowNumber=this.pageCount;
    this.hasNextPage=false;
    }else{
    this.hasNextPage=true;
    this.hasPreviousPage=true;
    }
    }
    session.setAttribute("page", this.pageShowNumber);
    }

    /**
     * 设置要显示的记录集
     * @return 要显示的记录集List
     */
    private List getResultList(){
    int pageFirst=pageShowNumber*pageSize-pageSize;
    if(this.resultList.size()!=0){
    for(int i=pageFirst;i<pageFirst+pageSize&&i<this.resultList.size();i++){
    showList.add(this.resultList.get(i));
    }
    return showList;
    }
    return null;
    }






    /**
     * 返回待显示的记录集
     * @return 待显示的记录集List
     */
    public List getPageList(List resultList,String pageShow,HttpServletRequest request){
    this.setResultList(resultList);
    this.setResultListCount();
    this.setShowInfo(resultList,pageShow,request);
    return this.getResultList();
    }

    /**
     * 返回是否有下一页
     * @return 是否有下一页boolean
     */
    public boolean getHasNextPage(){
    return this.hasNextPage;
    }
    /**
     * 返回是否有上一页
     * @return 是否有上一页boolean
     */
    public boolean getHasPreviousPage(){
    return this.hasPreviousPage;
    }
    /**
     * 返回总页数
     * @return 总页数int
     */
    public int getPageCount(){
    return this.pageCount;
    }
    /**
     * 返回正显示的页面
     * @return 正显示的页面int
     */
    public int getPageShowNumber(){
    return this.pageShowNumber;
    }
    /**
     * 返回总记录数量
     * @return 总记录数量int
     */
    public int getResultListCount(){
    return this.resultList.size();
    }
    }
    package com.gdp2008_admin.util;
    /**
     * 自定义分页标签
     * @author 黄根发(chinahgf)
     * 2007-5-8
     */
    import java.io.IOException;import javax.servlet.jsp.JspException;
    import javax.servlet.jsp.JspWriter;
    import javax.servlet.jsp.tagext.TagSupport;public class PageTag extends TagSupport { Page page; //分页对象
    String url; //显示路径
    public void setObjPage(Page objPage){
    this.page=objPage;
    }
    public void setUrl(String url){
    this.url=url;
    }

    public int doAfterBody() throws JspException {
    // TODO Auto-generated method stub
    return super.doAfterBody();
    } public int doEndTag() throws JspException {
    // TODO Auto-generated method stub
    return super.doEndTag();
    } public int doStartTag() throws JspException {
    JspWriter out=pageContext.getOut();
    try {
    out.print("<form method='POST' action='"+this.url+"' align='center'>");
    out.print("记录总数:<font color='#FF0000'>"+page.getResultListCount()+"</font>&nbsp &nbsp总页数:<font color='#FF0000'>"+page.getPageCount()+"</font>&nbsp &nbsp");
    out.print("当前页数:<font color='#FF0000'>"+page.getPageShowNumber()+"</font>&nbsp &nbsp");
    out.print("<a href='"+this.url+"?page=1'>【第一页】</a>&nbsp &nbsp");

    if(page.getHasPreviousPage()){
    out.print("<a href='"+this.url+"?page="+(page.getPageShowNumber()-1)+"'>【上一页】</a>&nbsp &nbsp");
    }else{
    out.print("【上一页】");
    }
    if(page.getHasNextPage()){
    out.print("<a href='"+this.url+"?page="+(page.getPageShowNumber()+1)+"'>【下一页】</a>&nbsp &nbsp");
    }else{
    out.print("下一页");
    }
    out.print("<a href='"+this.url+"?page="+page.getPageCount()+"'>【末页】</a>&nbsp &nbsp");// out.print("转到第:<input type='text' name='page' size='8'> 页");
    // out.print("<input type=submit value=GO name=cndok>");
    out.print("</form>");
    } catch (IOException e) {
    e.printStackTrace();
    }
    return super.doStartTag();
    }
    }
    testpage.tld<?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE taglib
      PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
      "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
    <taglib>
     <tlib-version>1.0</tlib-version>
     <jsp-version>1.2</jsp-version>
     <short-name>page</short-name>  
     <!--OutputTag-->  <tag>
        <name>page</name>
        <tag-class>com.gdp2008_admin.util.PageTag</tag-class>
        <body-content>jsp</body-content>
     
      <attribute> 
       <name>objPage</name>
       <required>true</required>
       <rtexprvalue>true</rtexprvalue>
      </attribute>
      
      <attribute>
       <name>url</name>
       <required>true</required>
       <rtexprvalue>true</rtexprvalue>
      </attribute>
      
      </tag>
    </taglib>
    <%@ taglib uri="/WEB-INF/testpage.tld" prefix="page"%>
    <page:page objPage="<%=showPage%>" url="<%=basePath+request.getRequestURI()%>"></page:page>
      

  2.   

    分页最好我感觉还是这个,楼主参考一下.
    http://download.csdn.net/source/883027