Jsp分页原代码,及用法

类别:Java 点击:0 评论:0 推荐:

Jsp分页原代码,及用法

1.定义一个分页的Tag Bean,以便用户在Jsp页中使用自定义标签,用户在使用时可以相应的描述

 

package BSC.tree;

 

import javax.servlet.jsp.*;

import javax.servlet.jsp.tagext.*;

import javax.servlet.jsp.tagext.TagSupport;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionServlet;

import java.sql.*;

import BSC.pool.*;

import java.util.*;

//import java.util.regex.Pattern;

import pubBean.Patten;

import BSC.tree.pagetag.*;

/**

 * @author 丁小龙(DingXiaolong)

 * @version 1.1

 * @deprecated 能够通过SQL语句产生一个GRID并且可通过相应的CSS设置相应的属性

 * @param strSQL 需要执行的查询SQL语句

 * @param pageSize Grid每一页所生的记录行数(Row)

 * @param action  当点分页素引号码所要跳转的页面名称,必须是使用本标志页面的名称

 * @param style 整个Grid的CSS的CLASS的设置

 * @param ctrPageBeanSessionNM 内部使用

 * @param pageTileBeanSessionNM 未使用,暂保留

 * @param databeanNM 存储Grid所有数据集合,如果和ScriptTag对应的标志类合用时候,必须与其name使用相同值

 * @param loginIndexSessionNM 存储物理数据与逻辑数据的索引对应的集合名称,如果和ScriptTag对应的标志类合用时候,必须与其loginIndexSessionNM使用相同值

 * @param caption Grid表头标题,各列(Col)的标题用逗号(",")隔开,且数量必须和SQL语句所列出的字段一致

 * @param isHidden Grid各列是否显示(0--显示,1--为不显示),各列(Col)是否显示值用逗号(",")隔开,且数量必须和SQL语句所列出的字段一致

 * @param trStyle Grid各行的CSS设置值

 * @param tableWidth  Grid表的宽度,可以是绝对值的表达方式,也可以是相对值的表达方式

 * @param tdWidth Grid各列(col)之宽度,各列(Col)宽度用逗号(",")隔开,且数量必须和SQL语句所列出的字段一致

 * @param database 在Sturts-config中设置的datasource key名

 */

 

public class PageScriptTag

    extends BodyTagSupport {

 

  private String strSQL;

  private String pageSize = "1";

  private String action;

  private String style;

  private String currentSize = "1";

  private String ctrPageBeanSessionNM;

  private String pageTileBeanSessionNM;

  private String displayCol;

  private String logicIndex;

  private String databeanNM;

  private String loginIndexSessionNM;

  private String caption;

  private String isHidden;

  protected static int scope = 2;

  private String trStyle;

  private String headTrStyle;

  private String headTdStyle;

  private String tdStyle;

  private String tableWidth;

  private String tdWidth;

  private String urlPara;

  private String oddTrStyle; //Grid 奇行css的class设置

  private String evenTrStyle;

  private String database;//Grid 奇行css的class设置

  public PageScriptTag() {

  }

 

  public String getAction() {

    return action;

  }

 

  public String getCtrPageBeanSessionNM() {

    return ctrPageBeanSessionNM;

  }

 

  public String getCurrentSize() {

    return currentSize;

  }

 

  public String getDisplayCol() {

    return displayCol;

  }

 

  public String getPageSize() {

    return pageSize;

  }

 

  public String getPageTileBeanSessionNM() {

    return pageTileBeanSessionNM;

  }

 

  public String getStrSQL() {

    return strSQL;

  }

 

  public String getStyle() {

    return style;

  }

 

  public void setStyle(String style) {

    this.style = style;

  }

 

  public void setStrSQL(String strSQL) {

    this.strSQL = strSQL;

  }

 

  public void setPageTileBeanSessionNM(String pageTileBeanSessionNM) {

    this.pageTileBeanSessionNM = pageTileBeanSessionNM;

  }

 

  public void setPageSize(String pageSize) {

    this.pageSize = pageSize;

  }

 

  public void setDisplayCol(String displayCol) {

    this.displayCol = displayCol;

  }

 

  public void setCurrentSize(String currentSize) {

    this.currentSize = currentSize;

  }

 

  public void setCtrPageBeanSessionNM(String ctrPageBeanSessionNM) {

    this.ctrPageBeanSessionNM = ctrPageBeanSessionNM;

  }

 

  public void setAction(String action) {

    this.action = action;

  }

 

  public int doEndTag() throws javax.servlet.jsp.JspException {

    /**@todo Override this javax.servlet.jsp.tagext.BodyTagSupport method*/

    System.out.println("In Class PageScriptTag's doEndTag");

    System.out.println("The scope is "+this.scope);

    Connection conn=null;

  //本类可以参考本人发表的 “定义自己的Connection Pool”

    PoolBean datasource=null;

 

    try {

              //初始化数据库连接

             //得到数据库开始,用户可以使用自己的连接池类 datasource=(PoolBean)pageContext.getAttribute(this.getDatabase(),3);

              if(datasource==null){

                 DB_Operate db_oper=new DB_Operate();

                 datasource=db_oper.getDataSource(this.getDatabase());

              }

              conn=datasource.getConnection();

       //得到数据库结束

              Patten strP=new Patten();

 

              if (getStrSQL() != null) {

                strP.compile("<");

                String[] strsqlarr = strP.split(getStrSQL());

                String tmpstr="";

                String strLink="";

                for(int strI=0;strI<strsqlarr.length;strI++)

                {

                   tmpstr+=strLink+strsqlarr[strI];

                   strLink="<";

                }

                this.setStrSQL(tmpstr);

             }

 

 

      System.out.println(this.getStrSQL());

 

 

      PageDataBean databean = (PageDataBean)this.pageContext.getAttribute(

          getDatabeanNM(), scope);

      if (databean == null) {

        databean = new PageDataBean(this.getStrSQL(), conn);

      }

      else {

        if (databean.getIsFlg().equals("0")) {

            databean.setStrSQL(this.getStrSQL());

            databean.init(conn);

            System.out.println("Initialing the PageDataBean.........");

            databean.setIsFlg("1");

         }

      }

 

      int colCount = (new Integer(databean.getColCount())).intValue();

      JspWriter out = this.pageContext.getOut();

      String tmpDis = this.getDisplayCol();

      //Patten类参考我发表的 “java正则表达式”

      Patten p = new Patten();

      p.compile(",");

 

 

      String ctrPageBeanNM;

      if (this.getCtrPageBeanSessionNM() == null) {

        ctrPageBeanNM = "CTRPAGE";

 

      }

      else {

        ctrPageBeanNM = getCtrPageBeanSessionNM();

 

      }

      CtrPageBean ctrpge = (CtrPageBean) pageContext.getAttribute(ctrPageBeanNM,

          scope);

 

      Vector datas = databean.getDataList();

      Hashtable dataarry = databean.getDataArray();

 

      if (ctrpge == null) {

 

        ctrpge = new CtrPageBean(datas.size() + "", getPageSize());

 

      }

 

      String tmpLoginIndexSessionNM = "";

      if (this.getLoginIndexSessionNM() == null) {

        tmpLoginIndexSessionNM = "tmpLoginIndexSessionNM";

      }

      else {

        tmpLoginIndexSessionNM = this.getLoginIndexSessionNM();

 

        //返回的资料库本栏位开始的位置

      }

      int colcapstar = databean.getColnameindex().size() - colCount;

      //初始化是否要隐藏

      String tmpIsHidden = this.getIsHidden();

      String[] tmpIsHiddenArray = p.split(tmpIsHidden);

      for (int hidindex = colcapstar;

           hidindex < tmpIsHiddenArray.length + colcapstar; hidindex++) {

        databean.getIsHiddenArray().put( (String) databean.getColnameindex().

                                        elementAt(hidindex),

                                        tmpIsHiddenArray[hidindex - colcapstar]);

      }

 

      //初始化Grid的标题

      String tmpCaption = this.getCaption();

      String[] tmpCaptionArr = p.split(tmpCaption);

 

      for (int capindex = colcapstar;

           capindex < tmpCaptionArr.length + colcapstar; capindex++) {

        databean.getCaptionArray().put( (String) databean.getColnameindex().

                                       elementAt(capindex),

                                       tmpCaptionArr[capindex - colcapstar]);

      }

      //初奴化Grid各col的宽度

      String tdwidflg="0";

 

      String tmpWidth=this.getTdWidth();

      if(tmpWidth!=null){

        String[] tmpWidthArr = p.split(tmpWidth);

        for (int widindex = colcapstar;

             widindex < tmpWidthArr.length + colcapstar; widindex++) {

          databean.getWidthArray().put( (String) databean.getColnameindex().

                                       elementAt(widindex),

                                       tmpWidthArr[widindex - colcapstar]);

        }

        tdwidflg="1";

      }

 

 

      String[] tmpLogicIndexs = null;

      Vector logicIndexs = (Vector) pageContext.getAttribute(

          tmpLoginIndexSessionNM, scope);

      if (logicIndexs == null) {

        logicIndexs = new Vector();

      }

      if (this.getLogicIndex() != null) {

        tmpLogicIndexs = p.split(this.getLogicIndex());

        if (tmpLogicIndexs.length != colCount) {

          int oldsize = logicIndexs.size();

          logicIndexs.removeAllElements();

          for (int i = 1; i <= colCount + oldsize; i++) {

            int tmp = i - 1;

            logicIndexs.addElement("" + tmp);

          }

 

        }

        else {

          for (int i = 1; i <= colCount; i++) {

            logicIndexs.addElement("" + tmpLogicIndexs[i - 1]);

          }

 

        }

      }

      else {

        int oldsize = logicIndexs.size();

        logicIndexs.removeAllElements();

        for (int i = 1; i <= colCount + oldsize; i++) {

          int tmp = i - 1;

          logicIndexs.addElement("" + tmp);

        }

 

      }

 

      Hashtable ScriptObj = new Hashtable();

      Hashtable CaptionObj = new Hashtable();

      Hashtable isHiddenObj = new Hashtable();

      Hashtable  widthObj= new Hashtable();

      Hashtable TDObj = new Hashtable();

      for (int i = 0; i < logicIndexs.size(); i++) {

        // int lgcIndex=new Integer((String)logicIndexs.elementAt(i)).intValue();

 

        String colkey =(String) databean.getColnameindex().elementAt(i);

        String lgcIndex = (String) logicIndexs.elementAt(i);

        CaptionObj.put(lgcIndex, databean.getCaptionArray().get(colkey));

        isHiddenObj.put(lgcIndex, databean.getIsHiddenArray().get(colkey));

        widthObj.put(lgcIndex,databean.getWidthArray().get(colkey));

 

        if (colkey.indexOf("Script,,,") == -1) {

 

          if (databean.getDataArray().get(colkey) != null) {

            ScriptObj.put(lgcIndex, databean.getDataArray().get(colkey));

            TDObj.put(lgcIndex, colkey);

          }

        }

        else {

          String strScript = (String) databean.getDataArray().get(colkey);

          Vector vecScript = new Vector();

 

          for (int k = 0; k < databean.getDataList().size(); k++) {

            vecScript.addElement(strScript);

          }

          ScriptObj.put(lgcIndex, vecScript);

          TDObj.put(lgcIndex, "Script___");

        }

      }

 

      ctrpge.setCurrent(getCurrentSize());

      int start = (ctrpge.getInteger(ctrpge.getCurrent()) - 1) *

          ctrpge.getInteger(ctrpge.getPageSize());

      int offset = (ctrpge.getInteger(ctrpge.getCurrent())) *

          ctrpge.getInteger(ctrpge.getPageSize());

 

      out.print("<table  border=\"0\" cellspacing=\"1\" ");

 

     if(this.getTableWidth()!=null){

        out.print(" width=\""+this.getTableWidth()+"\" ");

      }

      if (this.getStyle() != "") {

        out.print(" class=\"");

        out.print(style);

        out.print("\"");

      }

      out.println(">");

      out.print("<tr  ");

      if(this.getHeadTrStyle()!=null)

               out.println(" class=\""+this.getHeadTrStyle()+"\" >");

      for (int capindex = 0; capindex < CaptionObj.size(); capindex++) {

        out.print(" <td  align='center' ");

        if ( ( (String) isHiddenObj.get("" + capindex)).equals("1")) {

          out.print(" style=\"display:none\" ");

        }

        if(tdwidflg.equals("1")){

           out.print(" width=\""+(String)widthObj.get(""+capindex)+"\"");

        }

        if(this.getHeadTdStyle()!=null)

               out.print(" class=\""+this.getHeadTdStyle()+"\" >");

 

        out.println(">");

        out.println( (String) CaptionObj.get("" + capindex));

        out.println(" </td>");

      }

      out.println("</tr>");

      int Rec_count = 0;

      for (int i = start, k = 0; i < offset && i < datas.size(); k++, i++) {

        String tdstyle = "td";

 

        out.println("<tr id='TmpGridID_" + k + "' style='cursor: hand'");

 

        out.print(" onMouseOver=\"f_onclick(this," + k + "," + ScriptObj.size() +

                  ")\" ");

        if(k%2==0&&this.getEvenTrStyle()!=null){

          out.print(" class=\"");

          out.print(this.getEvenTrStyle()+"\"");

        }

        if(k%2!=0&&this.getOddTrStyle()!=null){

          out.print(" class=\"");

          out.print(this.getOddTrStyle()+"\"");

        }

        if(this.getTrStyle()!=null&&this.getEvenTrStyle()==null&&k%2==0){

          out.print(" class=\"");

          out.print(this.getTrStyle()+"\"");

        }

        if(this.getTrStyle()!=null&&this.getOddTrStyle()==null&&k%2!=0){

          out.print(" class=\"");

          out.print(this.getTrStyle()+"\"");

        }

 

 

 

        out.print(" >");

        for (int j = 0; j < ScriptObj.size(); j++) {

          Vector tdvalues = (Vector) ScriptObj.get("" + j);

          String td_id = (String) TDObj.get("" + j);

 

          out.print(" <td  align='left'");

 

          out.print(" id='TD_" + td_id + "_" + i + "_" + j + "'");

 

          if ( ( (String) isHiddenObj.get("" + j)).equals("1")) {

            out.print(" style=\"display:none\" ");

          }

          if(this.getTdStyle()!=null){

            out.print(" class=\"");

            out.print(this.getTdStyle()+"\"");

          }

 

          out.println(">");

          String tdval = (String) tdvalues.elementAt(i);

          if (!td_id.equals("Script___")) {

            out.println("<input type='hidden' id='TDVal_" + td_id + "_" + k +

                        "' value='" + tdval + "'>");

 

          }

          out.println(tdval);

          out.println(" </td>");

        }

        out.println("</tr>");

        Rec_count++;

      }

      out.println("<input type='hidden' name='TmpGrid_RecordCount' value='" +

                  Rec_count + "' >");

 

      out.println("</table>");

      //输出分页检索的页码

      String hyperlink = null;

      if (ctrpge.getInteger(ctrpge.getMax()) > 1 && this.getAction() != null) {

 

        hyperlink = ( (HttpServletResponse) pageContext.getResponse()).

            encodeURL(this.getAction());

 

        if (hyperlink != null) {

          out.println("<br>");

          out.println

              (

              "<table  width='100%' border=\"0\" cellspacing=\"0\" cellpadding=\"0\"");

          /* if (style != "") {

                    out.println(" class=\"");

                    out.println(style);

                    out.println("\"");

                }*/

          out.print(">");

 

          out.println("<tr>");

 

          out.println(" <td align='center' width='10%'>");

          out.print("共" + ctrpge.getMax() + "页");

          out.print("当前为第" + ctrpge.getCurrent() + "页 ");

          out.println("页数检索:&nbsp;");

 

          out.print("<a href=\"");

          String propmt = "";

          if (this.getAction().indexOf('?') == -1) {

            propmt = "?";

          }

          out.print(hyperlink);

          out.print(propmt + "index=" + 1);

          out.print("\"");

          out.print(">");

          out.print("[第一页]");

          out.print("</a>");

          out.println("&nbsp;");

 

          out.print("<a href=\"");

          out.print(hyperlink);

          out.print(propmt + "index=" + ctrpge.getLast());

          if(this.getUrlPara()!=null){

             out.print("&"+this.getUrlPara());

           }

 

          out.print("\"");

          out.print(">");

          out.print("上一页");

          out.print("</a>");

          out.println("&nbsp;");

 

          int indexmax = ctrpge.getInteger(ctrpge.getMax());

          int indexcur = ctrpge.getInteger(ctrpge.getCurrent());

          int indexstart = indexcur - indexcur % 10 + 1;

          int indexoffect = indexcur - indexcur % 10 + 10;

          for (int mindex = indexstart;

               mindex <= indexoffect && mindex <= indexmax; mindex++) {

 

            out.print("<a href=\"");

            out.print(hyperlink);

            out.print(propmt + "index=" + mindex);

            if(this.getUrlPara()!=null){

              out.print("&"+this.getUrlPara());

            }

            out.print("\"");

            out.print(">");

            out.print(mindex);

            out.print("</a>");

 

            out.println("&nbsp;");

 

          }

 

          out.print("<a href=\"");

          out.print(hyperlink);

          out.print(propmt + "index=" + ctrpge.getNext());

          if(this.getUrlPara()!=null){

              out.print("&"+this.getUrlPara());

            }

 

          out.print("\"");

          out.print(">");

          out.print("下一页");

          out.print("</a>");

          out.println("&nbsp;");

 

          out.print("<a href=\"");

          out.print(hyperlink);

          out.print(propmt + "index=" + ctrpge.getMax());

          if(this.getUrlPara()!=null){

              out.print("&"+this.getUrlPara());

            }

 

          out.print("\"");

          out.print(">");

          out.print("[最末页]");

          out.print("</a>");

          out.println("&nbsp;");

 

          out.println("  </td>");

          out.println(" </tr>");

          out.println("</table>");

        }

 

      }

      pageContext.setAttribute(ctrPageBeanNM, ctrpge, scope);

      pageContext.setAttribute(tmpLoginIndexSessionNM, logicIndexs, scope);

 

    }

    catch (Exception e) {

      System.out.println("PageScriptTag Error:" + e.getMessage());

    }

    finally{

      try{

        if(conn!=null)

          conn.close();

      }catch(SQLException sqle){

        sqle.printStackTrace();

      }

    }

    return super.doEndTag();

  }

 

  public String getLogicIndex() {

    return logicIndex;

  }

 

  public void setLogicIndex(String logicIndex) {

    this.logicIndex = logicIndex;

  }

 

  public String getDatabeanNM() {

    return databeanNM;

  }

 

  public void setDatabeanNM(String databeanNM) {

    this.databeanNM = databeanNM;

  }

 

  public String getLoginIndexSessionNM() {

    return loginIndexSessionNM;

  }

 

  public void setLoginIndexSessionNM(String loginIndexSessionNM) {

    this.loginIndexSessionNM = loginIndexSessionNM;

  }

 

  public String getCaption() {

    return caption;

  }

 

  public void setCaption(String caption) {

    this.caption = caption;

  }

 

  public String getIsHidden() {

    return isHidden;

  }

 

  public void setIsHidden(String isHidden) {

    this.isHidden = isHidden;

  }

  public String getTrStyle() {

    return trStyle;

  }

  public void setTrStyle(String trStyle) {

    this.trStyle = trStyle;

  }

  public String getHeadTrStyle() {

    return headTrStyle;

  }

  public void setHeadTrStyle(String headTrStyle) {

    this.headTrStyle = headTrStyle;

  }

  public String getHeadTdStyle() {

    return headTdStyle;

  }

  public void setHeadTdStyle(String headTdStyle) {

    this.headTdStyle = headTdStyle;

  }

  public String getTdStyle() {

    return tdStyle;

  }

  public void setTdStyle(String tdStyle) {

    this.tdStyle = tdStyle;

  }

  public String getTableWidth() {

    return tableWidth;

  }

  public void setTableWidth(String tableWidth) {

    this.tableWidth = tableWidth;

  }

  public String getTdWidth() {

    return tdWidth;

  }

  public void setTdWidth(String tdWidth) {

    this.tdWidth = tdWidth;

  }

  public String getUrlPara() {

    return urlPara;

  }

  public void setUrlPara(String urlPara) {

    this.urlPara = urlPara;

  }

  public String getOddTrStyle() {

    return oddTrStyle;

  }

  public void setOddTrStyle(String oddTrStyle) {

    this.oddTrStyle = oddTrStyle;

  }

  public String getEvenTrStyle() {

    return evenTrStyle;

  }

  public void setEvenTrStyle(String evenTrStyle) {

    this.evenTrStyle = evenTrStyle;

  }

  public String getDatabase() {

    return database;

  }

  public void setDatabase(String database) {

    this.database = database;

  }

 

}

 

2.定义次Tag Bean,它是一个用呈现特殊html组件,如text,button等

package BSC.tree;

 

import javax.servlet.jsp.*;

import javax.servlet.jsp.tagext.*;

import javax.servlet.jsp.tagext.TagSupport;

import javax.servlet.http.HttpServletResponse;

import java.sql.*;

 

import java.util.*;

import pubBean.*;

import BSC.tree.pagetag.*;

 

public class ScriptTag

    extends BodyTagSupport {

  private String name;

  private String property;

  private String value;

  private String index;

  private String loginIndexSessionNM;

  private String caption;

  private String isHidden;

  protected static int scope = 2;

  private String width;

  public ScriptTag() {

  }

 

  public String getName() {

    return name;

  }

 

  public void setName(String name) {

    this.name = name;

  }

 

  public String getProperty() {

    return property;

  }

 

  public void setProperty(String property) {

    this.property = property;

  }

 

  public String getValue() {

    return value;

  }

 

  public void setValue(String value) {

    this.value = value;

  }

 

  public int doEndTag() throws javax.servlet.jsp.JspException {

    /**@todo Override this javax.servlet.jsp.tagext.BodyTagSupport method*/

    System.out.println("In Class ScriptTag 's doEndTag()");

    try {

 

      System.out.println("The scope is "+this.scope);

      PageDataBean databean = (PageDataBean)this.pageContext.getAttribute(this.

          getName(), scope);

      Vector logicIndexs = (Vector)this.pageContext.getAttribute(this.

          getLoginIndexSessionNM(), scope);

      if (databean == null) {

        System.out.println("Create the DataBean...");

        databean = new PageDataBean();

 

      }

      if (logicIndexs == null) {

        logicIndexs = new Vector();

      }

 

      logicIndexs.addElement(this.getIndex());

      databean.getColnameindex().addElement("Script,,," + this.getProperty());

      databean.getDataArray().put("Script,,," + this.getProperty(),

                                  this.getValue());

      databean.getCaptionArray().put("Script,,," + this.getProperty(),

                                     this.getCaption());

      databean.getIsHiddenArray().put("Script,,," + this.getProperty(),

                                      this.getIsHidden());

      databean.getWidthArray().put("Script,,,"+this.getProperty(),

                                   this.getWidth());

 

      pageContext.setAttribute(this.getName(), databean, scope);

      pageContext.setAttribute(this.getLoginIndexSessionNM(), logicIndexs,

                               scope);

 

    }

    catch (Exception e) {

      System.out.println("ScriptTag Error:" + e.getMessage());

    }

    return super.doEndTag();

  }

 

  public String getIndex() {

    return index;

  }

 

  public void setIndex(String index) {

    this.index = index;

  }

 

  public String getLoginIndexSessionNM() {

    return loginIndexSessionNM;

  }

 

  public void setLoginIndexSessionNM(String loginIndexSessionNM) {

    this.loginIndexSessionNM = loginIndexSessionNM;

  }

 

  public String getCaption() {

    return caption;

  }

 

  public void setCaption(String caption) {

    this.caption = caption;

  }

 

  public String getIsHidden() {

    return isHidden;

  }

 

  public void setIsHidden(String isHidden) {

    this.isHidden = isHidden;

  }

  public String getWidth() {

    return width;

  }

  public void setWidth(String width) {

    this.width = width;

  }

 

}

3.定义一个用于执行sql查询语句,并将相应的数保存到该Bean里面

package BSC.tree.pagetag;

import java.sql.*;

import java.util.*;

public class PageDataBean {

 

  private Vector dataList=new Vector();

  private String strSQL="";

  private String colCount="0";

  private java.util.Hashtable dataArray=new Hashtable();

  private java.util.Vector colnameindex=new Vector();

  private java.util.Hashtable captionArray=new Hashtable();

  private java.util.Hashtable isHiddenArray=new Hashtable();

  private String isFlg="0";

  private java.util.Hashtable widthArray=new Hashtable();

  public PageDataBean(String strSQL,Connection conn) {

    this.setStrSQL(strSQL);

 

    init(conn);

  }

  public PageDataBean(){

 

  }

  public Vector getDataList() {

    return dataList;

  }

   protected void setDataList(java.util.Vector dataList) {

    this.dataList = dataList;

  }

  public String getStrSQL() {

    return strSQL;

  }

  public void setStrSQL(String strSQL) {

    this.strSQL = strSQL;

  }

  public void init(Connection conn){

    try{

     // Statement stat=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);

      Statement stat=conn.createStatement();

      ResultSet rs=stat.executeQuery(this.getStrSQL());

      ResultSet tmrs=null;

      if(rs!=null){

         int colcount=rs.getMetaData().getColumnCount();

         this.setColCount(""+colcount);

 

         int reccount=0;

         while(rs.next()){

            reccount++;

            Vector rowDate=new Vector();

           for(int i=1;i<=colcount;i++){

              rowDate.addElement(notNull(rs.getString(i)));

           }

           this.getDataList().addElement(rowDate);

         }

         for(int i=1;i<=colcount;i++){

            this.getColnameindex().addElement(rs.getMetaData().getColumnName(i));

         }

         if(reccount!=0){

           for (int i = 1; i <= colcount; i++) {

 

             //rs.first();

             tmrs=stat.executeQuery(this.getStrSQL());

             Vector cols = new Vector();

             while (tmrs.next()) {

               cols.addElement(notNull(tmrs.getString(i)));

 

 

             }

             this.addNode(tmrs.getMetaData().getColumnName(i), cols);

             tmrs.close();

           }

         }

 

 

      }

 

    }catch(Exception e){

       System.out.print("PageDataBean Error: "+e.getMessage());

    }

  }

  public String getColCount() {

    return colCount;

  }

  protected void setColCount(String colCount) {

    this.colCount = colCount;

  }

  public java.util.Hashtable getDataArray() {

    return dataArray;

  }

  public void setDataArray(java.util.Hashtable dataArray) {

    this.dataArray = dataArray;

  }

  void addNode(String name,Object obj) throws IllegalArgumentException {

 

        synchronized (dataArray) {

 

            if (dataArray.containsKey(name))

                throw new IllegalArgumentException("Column name '" + name +

                                                   "' is not unique");

 

            dataArray.put(name, obj);

        }

 

    }

    void addCaptionNode(String name,String obj) throws IllegalArgumentException {

 

        synchronized (captionArray) {

 

            if (dataArray.containsKey(name))

                throw new IllegalArgumentException("Column name '" + name +

                                                   "' is not unique");

 

            captionArray.put(name, obj);

        }

 

    }

 

  public java.util.Vector getColnameindex() {

    return colnameindex;

  }

  public void setColnameindex(java.util.Vector colnameindex) {

    this.colnameindex = colnameindex;

  }

  public java.util.Hashtable getCaptionArray() {

    return captionArray;

  }

  public void setCaptionArray(java.util.Hashtable captionArray) {

    this.captionArray = captionArray;

  }

  public java.util.Hashtable getIsHiddenArray() {

    return isHiddenArray;

  }

  public void setIsHiddenArray(java.util.Hashtable isHiddenArray) {

    this.isHiddenArray = isHiddenArray;

  }

  public String getIsFlg() {

    return isFlg;

  }

  public void setIsFlg(String isFlg) {

    this.isFlg = isFlg;

  }

  public java.util.Hashtable getWidthArray() {

    return widthArray;

  }

  public void setWidthArray(java.util.Hashtable widthArray) {

    this.widthArray = widthArray;

  }

 

  /**

   * notNull

   *

   * @param aStr String

   */

  public String notNull(String aStr) {

    if(aStr!=null)

      return aStr.trim();

    else

      return "";

  }

 

}

4.定义一个主控类,用于保存分页Grid的页面信息

package BSC.tree.pagetag;

 

public class CtrPageBean {

 

  private String next="1";

  private String last="1";

  private String current="1";

  private String size="0";

  private String max="1";

  private String pageSize="0";

  public CtrPageBean(String size,String pageSize) {

 

    if(this.getInteger(size)!=0){

      if(this.getInteger(pageSize)<0)

        this.setPageSize(size);

      this.setSize(size);

      this.setPageSize(pageSize);

      if (this.getInteger(pageSize) > this.getInteger(size)) {

        this.setPageSize(size);

      }

      if (pageSize == "0")

        this.setPageSize("1");

      int leval = this.getInteger(getSize()) % this.getInteger(this.getPageSize());

      int maxv = 0;

      if (leval == 0) {

        maxv = this.getInteger(getSize()) / this.getInteger(this.getPageSize());

      }

      else {

        maxv = this.getInteger(getSize()) / this.getInteger(this.getPageSize()) +

            1;

      }

 

      this.setMax("" + maxv);

    }

 

  }

  public String getMax() {

    return max;

  }

  protected void setMax(String max) {

    this.max = max;

  }

  public String getNext() {

    return next;

  }

  public void setNext(String next) {

    this.next = next;

  }

  public String getLast() {

    return last;

  }

  public void setLast(String last) {

    this.last = last;

  }

  public String getCurrent() {

    return current;

  }

  public void setCurrent(String current) {

    this.current = current;

    if(this.getInteger(this.getCurrent())==this.getInteger(this.getMax())){

       this.setNext("1");

    }

    else{

       int cur=getInteger(this.current) + 1;

        this.setNext(""+cur);

    }

    if(this.getInteger(this.getCurrent())!=1){

      int lastv = getInteger(this.current) - 1;

      this.setLast(""+lastv);

    }

    else

      this.setLast("1");

 

 

  }

  public String getSize() {

    return size;

  }

  protected void setSize(String size) {

    this.size = size;

  }

  protected void init(String size){

 

  }

  public String getPageSize() {

    return pageSize;

  }

  public void setPageSize(String pageSize) {

    this.pageSize = pageSize;

  }

  public int getInteger(String val){

    Integer vals=new Integer(val);

    return vals.intValue();

  }

}

5.定义一个名叫page_table.tld的tld文件,并将其存放到\WEB-INF目录下内容

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">

<taglib>

  <tlibversion>1.0</tlibversion>

  <jspversion>1.1</jspversion>

  <shortname>PAGETABLE</shortname>

  <uri>helloworld</uri>

  <info>OUT TABLE</info>

   <tag>

    <name>ScriptTag</name>

    <tagclass>BSC.tree.ScriptTag</tagclass>

    <bodycontent>empty</bodycontent>

    <attribute>

      <name>name</name>

      <required>true</required>

      <rtexprvalue>true</rtexprvalue>

    </attribute>

    <attribute>

      <name>property</name>

      <required>true</required>

      <rtexprvalue>true</rtexprvalue>

    </attribute>

    <attribute>

      <name>value</name>

      <required>true</required>

      <rtexprvalue>true</rtexprvalue>

    </attribute>

    <attribute>

      <name>index</name>

      <required>true</required>

      <rtexprvalue>true</rtexprvalue>

    </attribute>

    <attribute>

      <name>loginIndexSessionNM</name>

      <required>true</required>

      <rtexprvalue>true</rtexprvalue>

    </attribute>

    <attribute>

      <name>caption</name>

      <required>true</required>

      <rtexprvalue>true</rtexprvalue>

    </attribute>

    <attribute>

      <name>isHidden</name>

      <required>true</required>

      <rtexprvalue>true</rtexprvalue>

    </attribute>

    <attribute>

      <name>width</name>

      <required>false</required>

      <rtexprvalue>true</rtexprvalue>

    </attribute>

     <!--attribute>

      <name>isFlush</name>

      <required>false</required>

      <rtexprvalue>true</rtexprvalue>

    </attribute-->

   </tag>

   <tag>

    <name>PageScriptTag</name>

    <tagclass>BSC.tree.PageScriptTag</tagclass>

    <bodycontent>empty</bodycontent>

    <attribute>

      <name>strSQL</name>

      <rtexprvalue>true</rtexprvalue>

    </attribute>

    <attribute>

      <name>pageSize</name>

      <rtexprvalue>true</rtexprvalue>

    </attribute>

    <attribute>

      <name>action</name>

      <rtexprvalue>true</rtexprvalue>

    </attribute>

    <attribute>

      <name>style</name>

      <rtexprvalue>true</rtexprvalue>

    </attribute>

    <attribute>

      <name>currentSize</name>

      <rtexprvalue>true</rtexprvalue>

    </attribute>

    <attribute>

      <name>ctrPageBeanSessionNM</name>

      <rtexprvalue>true</rtexprvalue>

    </attribute>

    <attribute>

      <name>pageTileBeanSessionNM</name>

      <rtexprvalue>true</rtexprvalue>

    </attribute>

    <attribute>

      <name>displayCol</name>

      <rtexprvalue>true</rtexprvalue>

    </attribute>

     <attribute>

      <name>loginIndexSessionNM</name>

      <required>true</required>

      <rtexprvalue>true</rtexprvalue>

    </attribute>

    <attribute>

      <name>logicIndex</name>

      <required>false</required>

      <rtexprvalue>true</rtexprvalue>

    </attribute>

    <attribute>

      <name>databeanNM</name>

      <required>true</required>

      <rtexprvalue>true</rtexprvalue>

    </attribute>

    <attribute>

      <name>caption</name>

      <required>true</required>

      <rtexprvalue>true</rtexprvalue>

    </attribute>

    <attribute>

      <name>isHidden</name>

      <required>true</required>

      <rtexprvalue>true</rtexprvalue>

    </attribute>

   

    <attribute>

      <name>trStyle</name>

      <required>false</required>

      <rtexprvalue>true</rtexprvalue>

    </attribute>

    <attribute>

      <name>tdStyle</name>

      <required>false</required>

      <rtexprvalue>true</rtexprvalue>

    </attribute>

    <attribute>

      <name>headTrStyle</name>

      <required>false</required>

      <rtexprvalue>true</rtexprvalue>

    </attribute>

    <attribute>

      <name>headTdStyle</name>

      <required>false</required>

      <rtexprvalue>true</rtexprvalue>

    </attribute>

    <attribute>

      <name>tableWidth</name>

      <required>false</required>

      <rtexprvalue>true</rtexprvalue>

    </attribute>

    <attribute>

      <name>tdWidth</name>

      <required>false</required>

      <rtexprvalue>true</rtexprvalue>

    </attribute>

    <attribute>

      <name>urlPara</name>

      <required>false</required>

      <rtexprvalue>true</rtexprvalue>

    </attribute>

    <attribute>

      <name>oddTrStyle</name>

      <required>false</required>

      <rtexprvalue>true</rtexprvalue>

    </attribute>

    <attribute>

      <name>evenTrStyle</name>

      <required>false</required>

      <rtexprvalue>true</rtexprvalue>

    </attribute>

    <attribute>

      <name>database</name>

      <required>true</required>

      <rtexprvalue>true</rtexprvalue>

    </attribute>

   </tag>

  

 

</taglib>

6.在jsp中使用,

<%@ page contentType="text/html; charset=Big5" %>

<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>

<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

<%@ taglib uri="/WEB-INF/page_table.tld" prefix="pagetab"%>

<%@ page import="BSC.pool.*" %>

<html>

<head>

<title>

login

</title>

<link href="css/wfr_css.css" rel="stylesheet" type="text/css"></head>

<script language="JavaScript" src="js/PubFun.js" type="text/javascript"> </script>

</head>

<body bgcolor="#ffffff">

  <logic:present name="userManageForm">

    <bean:write name="userManageForm" property="email"/>

  </logic:present>

  <logic:notPresent name="userManageForm">

    addddddddddd

  </logic:notPresent>

<!--bean:write name="userManageForm" property="email"/-->

 

<%

//以下就是产生分页Grid的代码

        String index="1";

        index=request.getParameter("index");

        if(index==null)

        index="1";

 

%>

 

<pagetab:PageScriptTag

                 logicIndex="0,1"

                 pageSize="10"

                 isHidden="0,0"

                 action="TestGrid.jsp"

                 style="outtable"

                 currentSize="<%=index%>"

                 strSQL="select ttid,Type from Trans_Type"

                 databeanNM="databeanname"

                 loginIndexSessionNM="loginIndexSessionNM"

                 caption="县市ID,县市名称"

                 headTrStyle="text1"

                 tdWidth="5%,20%"

                 database="resources.SQLServerDB"

                 />

</body>

</html>

本文地址:http://com.8s8s.com/it/it11250.htm