还可以进一步
提取出Page的接口并且根据此接口封装个标签这样前台使用更简单了

解决方案 »

  1.   

    private String pageTools()
    {
    StringBuffer sb =  new StringBuffer();


    if (this.getHasUp())
    {
    sb.append("<a href="+this.getRequestURIindex()+"?page="+this.getOnePage()+"&"+this.getUrl(this.request)+">首页</a>&nbsp;&nbsp;");
    sb.append("<a href="+this.getRequestURIindex()+"?page="+this.getUpPage()+"&"+this.getUrl(this.request)+">上一页</a>&nbsp;&nbsp;");
    }
    else
    sb.append("首页&nbsp;&nbsp;上一页&nbsp;&nbsp;");

    if (this.getHasNext())
    {
    sb.append("<a href="+this.getRequestURIindex()+"?page="+this.getNextPage()+"&"+this.getUrl(this.request)+">下一页</a>&nbsp;&nbsp;");
    sb.append("<a href="+this.getRequestURIindex()+"?page="+this.getTPage()+"&"+this.getUrl(this.request)+">尾页</a>&nbsp;&nbsp;");
    }
    else
    sb.append("下一页&nbsp;&nbsp;尾页");

    return sb.toString();
    }

    private String listPage()
    {
    StringBuffer sb =  new StringBuffer();
    sb.append("<SELECT name=page>");
    for (int i=1;i<=Integer.parseInt(this.getTPage());i++)
    {
    if (Integer.parseInt(this.getCurPage()) == i)
    sb.append("<OPTION value="+i+" selected>");
    else
    sb.append("<OPTION value="+i+">");
     
    sb.append(i)
      .append("</OPTION>");
    }
    sb.append("</SELECT>");
    sb.append("<input name=tj type=submit value=go>");

    return sb.toString();
    }
    //产生[1][2][3][4]的分页效果
    private String showPage()
    {

    int m = 0;
    StringBuffer sb = new StringBuffer();
    int totalPage = Integer.parseInt(this.getTPage());
    int p = (Integer.parseInt(this.getCurPage())-1)/this.getSize();


    if (totalPage <= this.getSize())
    {
    for (int i=1;i<=totalPage;i++)
    {
    sb.append("[ <a href="+this.getRequestURIindex()+"?page="+i+"&"+this.getUrl(this.request)+">"+i+"</a> ]");
    sb.append("&nbsp");
    }
    }
    else
    {
    if ((p*this.getSize())>0)
    {
    sb.append("[ <a href="+this.getRequestURIindex()+"?page="+(Integer.parseInt(this.getCurPage())-1)+"&"+this.getUrl(this.request)+"><</a> ]");
    sb.append("&nbsp;");
    sb.append("[ <a href="+this.getRequestURIindex()+"?page="+(Integer.parseInt(this.getCurPage())-this.getSize())+"&"+this.getUrl(this.request)+"><<</a> ]");
    sb.append("&nbsp;");
    }
    //System.out.println("mmmm="+(p*size+size));
    //循环(1..5,6..10)
    for (int k=(p*this.getSize()+1);k<=(p*this.getSize()+this.getSize());k++)
    {
    m = k;
    sb.append("[ <a href="+this.getRequestURIindex()+"?page="+k+"&"+this.getUrl(this.request)+">"+k+"</a> ]");
    sb.append("&nbsp");
    if (k == totalPage)
    break;
    }
    //如果页数小于总页数,则表示还有下页]
    //System.out.println("mmmm="+m);
    if (m < totalPage)
    {
    sb.append("[ <a href="+this.getRequestURIindex()+"?page="+(m+1)+"&"+this.getUrl(this.request)+">>></a> ]");
    sb.append("&nbsp;");
    sb.append("[ <a href="+this.getRequestURIindex()+"?page="+(Integer.parseInt(this.getCurPage())+1)+"&"+this.getUrl(this.request)+">></a> ]");
    }
    }
    return sb.toString();
    }

    //得到连接后面的参数
    private String getUrl(HttpServletRequest request) {
            String url = "";
            Enumeration param = request.getParameterNames();        while (param.hasMoreElements()) {
                String pname = param.nextElement().toString();
                //equalsIgnoreCase忽律大小写
                if (!pname.equalsIgnoreCase("page") && !pname.equalsIgnoreCase("tj"))
                    url += pname + "=" + request.getParameter(pname) + "&";        }
            if (url.endsWith("&")) {
                url = url.substring(0, url.lastIndexOf("&"));
            }
            return url;
        }

    //得到隐含表单的参数,自动生成<input type='hidden'>
    private String getHiddenParam()
    {
    StringBuffer sb = new StringBuffer();

    String strUrl = this.getUrl(request);
    if ((strUrl != null) || (strUrl.equals("")))
    {
    //表示只有一个参数
    if (strUrl.indexOf("&") < 0)
    {
    //System.out.println("strUlr"+strUrl.indexOf("="));
    sb.append("<input type=hidden name="+strUrl.substring(0,strUrl.indexOf("="))+" value="+strUrl.substring(strUrl.indexOf("=")+1)+">");
    }
    else
    {
    //多个参数,因为strurl得到参数中有一个page为隐含参数,所以要-1的算法
    //System.out.println("paraUrl====>"+strUrl.split("&").length);
    String[] strArray = new String[strUrl.split("&").length-1];
    strArray = strUrl.split("&");
    //System.out.println("paraUrl====>>"+strArray.length);
    //循环累加参数
    for (int i=0;i<=strArray.length-1;i++)
    {
    String paramName = strArray[i];
    //System.out.println("paraUrl====>>>"+paramName);
    sb.append("<input type=hidden name="+paramName.substring(0,paramName.indexOf("="))+" value="+paramName.substring(paramName.indexOf("=")+1)+">\n");
    }
    }
    //System.out.println("paraUrl===="+sb.toString());
    }

    return sb.toString();
    }
      

  2.   

    分享一个通用数据库分页方案
    http://community.csdn.net/Expert/TopicView3.asp?id=5044512
      

  3.   

    我的java群:10815536 开源系列