<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 4,comments - 30,trackbacks - 0

    使用指南
    1:該組件為jsp頁(yè)面數(shù)據(jù)分頁(yè)通用組件,可用于所有struts或jsp+javabean的頁(yè)面分頁(yè)功能

    2:該組件使用非常簡(jiǎn)單,只需設(shè)定好各項(xiàng)屬性,傳入數(shù)據(jù)Vctor或者Sql語(yǔ)句,直接調(diào)用多態(tài)的
    getContentHtml方法即可得到分好頁(yè)的表格的html代碼(string),在頁(yè)面中<%=string%>即可
    ,之后的各種翻頁(yè)操作業(yè)已封裝在該html代碼中,用戶不必再操心。
    ??
    3:該組件設(shè)置步驟
    ?? a.初始化分頁(yè)組件實(shí)例
    ???? eg:OperatePage operatePage = new OperatePage();
    ????
    ?? b.設(shè)定分頁(yè)表格數(shù)據(jù)所屬的表單名
    ???? 如不設(shè)置該屬性,組件將自定義一個(gè)名為"form1" 的表單名來存放分頁(yè)表格。
    ???? eg:operatePage.setFormName("formName");
    ????
    ?? c.設(shè)定翻頁(yè)操作時(shí)的跳轉(zhuǎn)頁(yè)面
    ???? 該屬性必需設(shè)置,否則會(huì)報(bào)錯(cuò)。組件支持翻頁(yè)時(shí)跳轉(zhuǎn)到j(luò)sp頁(yè)面(一般都是原jsp頁(yè)面)
    ???? 或者某一Action(struts架構(gòu))中。
    ???? eg:operatePage.setPageUrl("/jsp/managerAction.do");
    ???? eg:operatePage.setPageUrl("/jsp/testPage.jsp");??
    ??????
    ?? d.設(shè)定跳轉(zhuǎn)類型
    ???? 組件支持jsp和Action兩種跳轉(zhuǎn)類型,兩種類型并無大的區(qū)別,只是設(shè)成Action時(shí)
    ???? 將在翻頁(yè)操作時(shí)傳遞一個(gè)"flag=OperatePage"的參數(shù)以便在用戶Action中區(qū)分是翻頁(yè)
    ???? 操作。
    ???? operatePage.setForwardType(OperateConst.FOWARD_TYPE_ACTION);或者
    ???? operatePage.setForwardType(OperateConst.FOWARD_TYPE_JSP);
    ????
    ?? e.設(shè)定數(shù)據(jù)Vctor(如果傳sql的話在此步驟設(shè)置數(shù)據(jù)庫(kù)連接的Connection)
    ???? operatePage.setCon(con);? 或者
    ???? operatePage.setDataVector(vecData);
    ????
    ?? f.設(shè)定是否需要單選或者多選列(可不設(shè)置,默認(rèn)為true)
    ???? opeatePage.operatePage.setHasSelectItem(true);
    ????
    ?? g.設(shè)定單選或者多選列類型,元素名及對(duì)應(yīng)的該行數(shù)據(jù)的主鍵值(如f步驟中設(shè)置為false這步省略)
    ????? //支持checkBox和radioButton兩種
    ???? operatePage.setSelectType(OperateConst.SELECT_TYPE_RADIOBUTTON);
    ????? //可不設(shè),默認(rèn)為selectItem1
    ???? operatePage.setSelectItemName("selectItemName2");
    ????? //序號(hào)從1開始,可不設(shè),默認(rèn)為該行數(shù)據(jù)的第一列的值
    ???? operatePage.setSelectKeyArray( new int []{1,2,3});
    ???????
    ?? h.設(shè)定數(shù)據(jù)標(biāo)題列(如e步驟中設(shè)置為傳sql此步省略)
    ???? operatePage.setContentTitle(new String[]{"col1","col2","col3","col4"});
    ????
    ?? g.前面的設(shè)置完成后,直接調(diào)以下API即可
    ?? /**
    ?? * @傳Vector方式
    ? * @param pm_iPageSize? 頁(yè)大小
    ? * @param pm_iPageIndex 頁(yè)碼
    ? * @param request?????? SevletRequest
    ? * @param response????? SevletResponse
    ? * @return 數(shù)據(jù)庫(kù)分頁(yè)后的Table HTML(帶分頁(yè)按鈕)
    ? * @throws OperateException
    ? */
    ?public String getContentHtml(int pm_iPageSize,int pm_iPageIndex,HttpServletRequest request, HttpServletResponse response) throws OperateException;
    ?
    ? /**
    ?? * @傳sql方式
    ? * @param pm_iPageSize? 頁(yè)大小
    ? * @param pm_iPageIndex 頁(yè)碼
    ? * @param pm_sPageUrl?? jsp頁(yè)面路徑
    ? * @param pm_sSql?????? 查詢的sql
    ? * @param request?????? SevletRequest
    ? * @param response????? SevletResponse
    ? * @return 數(shù)據(jù)庫(kù)分頁(yè)后的Table HTML(帶分頁(yè)按鈕)
    ? * @throws OperateException
    ? */
    ?public String getContentHtml(int pm_iPageSize,int pm_iPageIndex,String pm_sSql,HttpServletRequest request, HttpServletResponse response) throws OperateException;
    ??
    ? /**
    ?? * @傳sql方式
    ? * @param pm_iPageSize? 頁(yè)大小
    ? * @param pm_iPageIndex 頁(yè)碼
    ? * @param pm_sPageUrl?? jsp頁(yè)面路徑
    ? * @param pm_sSql?????? 查詢的sql
    ? * @param pm_sDBType??? 數(shù)據(jù)庫(kù)類型,如數(shù)據(jù)庫(kù)直接支持?jǐn)?shù)據(jù)庫(kù)端分頁(yè),可提高效率
    ? * @param request?????? ServletRequest
    ? * @param response????? ServletResponse
    ? * @return 數(shù)據(jù)庫(kù)分頁(yè)后的Table HTML(帶分頁(yè)按鈕)
    ? * @throws OperateException
    ? */
    ?public String getContentHtml(int pm_iPageSize,int pm_iPageIndex,String pm_sSql,String pm_sDBType,HttpServletRequest request, HttpServletResponse response) throws OperateException;
    ??
    ?
    4:實(shí)例
    ?? 上述可能有點(diǎn)抽象,讓我們來看兩個(gè)完整使用實(shí)例:
    ??
    ?? 第一種是直接在jsp頁(yè)面中分頁(yè),即翻頁(yè)操作時(shí)跳回原jsp頁(yè)面中
    ?? 我們來看看testPage.jsp的源代碼:
    <%@ page language="java" contentType="text/html; charset=GB18030"??? pageEncoding="GB18030"%>?
    <jsp:useBean id="operatePage" class="Action.OperatePage"/>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=GB18030">
    <title></title>
    </head>
    <body>
    <%
    ??
    ?? /**********這是獲取數(shù)據(jù)vector的代碼***********/
    ?? DbSelect a = new DbSelect();
    ?? Vector? b = a.getManagerContentByMain_Key(1);
    ?
    ??
    ? /*form2是你的jsp頁(yè)面中的表單名*/
    ? operatePage.setFormName("form2");??????
    ? operatePage.setPageUrl("/jsp/testPage.jsp");
    ? operatePage.setForwardType(OperateConst.FOWARD_TYPE_JSP);
    ? operatePage.setDataVector(b);
    ? operatePage.setHasSelectItem(true);
    ? operatePage.setSelectType(OperateConst.SELECT_TYPE_CHECKBOX);
    ?
    ? /*selectItemName是單選列的元素名,這樣你可以用request.getParamer("selectItemName")來獲取選中的值 ,如不設(shè),默認(rèn)為名字為selectItemName1*/
    ? operatePage.setSelectItemName("selectItemName");
    ?
    ? /*1,2,3表示你用request.getParamer("selectItemName")獲取選中行的value為該行第一列,第二列,第三列的值的集合,各列的值以;分隔*/
    ? operatePage.setSelectKeyArray( new int []{1,2,3});
    ?
    ? operatePage.setContentTitle(new String[]{"col1","col2","col3","col4"});
    ?
    ? /****15是初始的頁(yè)大小,0是初始頁(yè)碼,之后翻頁(yè)跳轉(zhuǎn)時(shí)這兩個(gè)值會(huì)被request中的新值自動(dòng)更新*/
    ? String c = operatePage.getContentHtml(15,0,request,response);
    ?
    %>
    <%=c %>

    </script>
    </body>
    </html>
    這是傳Vctor方式,如果我們改成傳sql的方式,只需做修改如下:

    <%
    ? /**********這是獲取數(shù)據(jù)庫(kù)連接的代碼***********/
    ? DbConnect a = new DbConnect();
    ? Connection con = a.getOracleConnection();
    ? String sql = "select * from safe_control_object";
    ?
    ?
    ? operatePage.setFormName("form2");
    ? operatePage.setPageUrl("/jsp/testPage.jsp");
    ? operatePage.setForwardType(OperateConst.FOWARD_TYPE_JSP);
    ? operatePage.setCon(con);
    ?
    ? operatePage.setHasSelectItem(true);
    ? operatePage.setSelectType(OperateConst.SELECT_TYPE_CHECKBOX);
    ? operatePage.setSelectItemName("selectItemName2");
    ? operatePage.setSelectKeyArray( new int []{1,2,3});
    ?
    ? /* OperateConst.DBTYPE_ORACLE是數(shù)據(jù)庫(kù)類型,該字段可傳可不傳,傳的好處在于如果該類型數(shù)據(jù)庫(kù)支持后端分頁(yè),則組件會(huì)采用后端分頁(yè)的方式,效率較前端分頁(yè)要高*/
    ? String c = operatePage.getContentHtml(15,0,sql,OperateConst.DBTYPE_ORACLE,request,response);
    %>

    我們?cè)賮砜纯刺D(zhuǎn)到Action中的情況,這是翻頁(yè)Action的源碼示例
    ??
    ?? public class ManagerAction extends DispatchAction{
    ??? OperatePage operatePage = new OperatePage();
    ??? /**********這是獲取數(shù)據(jù)vector的代碼***********/
    ??? DbSelect a = new DbSelect();
    ?? Vector? b = a.getManagerContentByMain_Key(1);
    ??
    ??
    ?? public ActionForward pageOperate(ActionMapping mapping, ActionForm form,
    ??????????? HttpServletRequest request, HttpServletResponse response)
    ??? throws Exception
    ??? {
    ??? ?String c = operatePage.getContentHtml(15,0,request,response);
    ??? ?HttpSession session = request.getSession();
    ??? ?session.setAttribute("testPage",c);
    ????? return mapping.findForward("testPage");
    ??? }
    ???
    ??? /**初始化的操作**/
    ??? public ActionForward initPageOperate(ActionMapping mapping, ActionForm form,
    ??????????? HttpServletRequest request, HttpServletResponse response)
    ??? throws Exception
    ??? {
    ??? ?
    ??? ?operatePage.setFormName("form2");
    ??? ?operatePage.setPageUrl("/jsp/managerAction.do");
    ??? ?operatePage.setForwardType(OperateConst.FOWARD_TYPE_ACTION);
    ??? ?operatePage.setDataVector(b);
    ??? ?operatePage.setHasSelectItem(true);
    ??? ?operatePage.setSelectType(OperateConst.SELECT_TYPE_RADIOBUTTON);
    ??? ?operatePage.setSelectItemName("selectItemName2");
    ??? ?operatePage.setSelectKeyArray( new int []{1,2,3});
    ??? ?operatePage.setContentTitle(new String[]{"col1","col2","col3","col4"});
    ??? ?
    ??? ?String c = operatePage.getContentHtml(15,0,request,response);
    ??? ?/*把獲得的分頁(yè)后的html代碼放到session中去*/
    ??? ?HttpSession session = request.getSession();
    ??? ?session.setAttribute("testPage",c);
    ??? ?/*testPage是你在struts-config.xml中配置的jsp頁(yè)面的跳轉(zhuǎn)forward**/
    ????? return mapping.findForward("testPage");
    ??? }
    ???
    }
    jps示例頁(yè)面如下:
    <%@ page language="java" contentType="text/html; charset=GB18030"??? pageEncoding="GB18030"%>?
    <jsp:useBean id="operatePage" class="Action.OperatePage"/>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=GB18030">
    <title></title>
    </head>
    <body>
    <%
    String c = (String)session.getAttribute("testPage");

    %>
    <%=c %>
    //flag=initPageOperate對(duì)應(yīng)Action中初始化的操作
    <a href="/jsp/managerAction.do?flag=initPageOperate">測(cè)試Action端分頁(yè)</a>

    這是傳Vctor的方式,傳sql和之前跳轉(zhuǎn)到j(luò)sp中的類似,這里就不重復(fù)了

    OK!這就是最常見的傳sql和傳Vector,及在原jsp頁(yè)面跳轉(zhuǎn)或者在Action中跳轉(zhuǎn)的數(shù)據(jù)庫(kù)分頁(yè)組件操作,每種不過十幾行代碼即可搞定!


    5:如果有什么不清楚的地方,請(qǐng)發(fā)email:qingyuan18@126.com,或者msn:tangqingyuan@chinamobilesz.com,
    有做的不好的地方,請(qǐng)不吝賜教!

    ?

    IOperatePage.java?? 文件

    package Action;

    import java.sql.Connection;
    import java.util.ArrayList;
    import java.util.Vector;

    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    public interface IOperatePage {

    ?/**
    ? * @param pm_iPageSize? 頁(yè)大小
    ? * @param pm_iPageIndex 頁(yè)碼
    ? * @param request?????? SevletRequest
    ? * @param response????? SevletResponse
    ? * @return 數(shù)據(jù)庫(kù)分頁(yè)后的Table HTML(帶分頁(yè)按鈕)
    ? * @throws OperateException
    ? */
    ?public String getContentHtml(int pm_iPageSize,int pm_iPageIndex,HttpServletRequest request, HttpServletResponse response) throws OperateException;
    ?
    ?/**
    ? * @param pm_iPageSize? 頁(yè)大小
    ? * @param pm_iPageIndex 頁(yè)碼
    ? * @param pm_sPageUrl?? jsp頁(yè)面路徑
    ? * @param pm_sSql?????? 查詢的sql
    ? * @param request?????? SevletRequest
    ? * @param response????? SevletResponse
    ? * @return 數(shù)據(jù)庫(kù)分頁(yè)后的Table HTML(帶分頁(yè)按鈕)
    ? * @throws OperateException
    ? */
    ?public String getContentHtml(int pm_iPageSize,int pm_iPageIndex,String pm_sSql,HttpServletRequest request, HttpServletResponse response) throws OperateException;
    ?
    ?/**
    ? * @param pm_iPageSize? 頁(yè)大小
    ? * @param pm_iPageIndex 頁(yè)碼
    ? * @param pm_sPageUrl?? jsp頁(yè)面路徑
    ? * @param pm_sSql?????? 查詢的sql
    ? * @param pm_sDBType??? 數(shù)據(jù)庫(kù)類型,如數(shù)據(jù)庫(kù)直接支持?jǐn)?shù)據(jù)庫(kù)端分頁(yè),可提高效率
    ? * @param request?????? ServletRequest
    ? * @param response????? ServletResponse
    ? * @return 數(shù)據(jù)庫(kù)分頁(yè)后的Table HTML(帶分頁(yè)按鈕)
    ? * @throws OperateException
    ? */
    ?public String getContentHtml(int pm_iPageSize,int pm_iPageIndex,String pm_sSql,String pm_sDBType,HttpServletRequest request, HttpServletResponse response) throws OperateException;
    ?
    }

    OperateConst.java 文件 ??????????????????

    package Action;

    public final class OperateConst {
    ?/*
    ? * 數(shù)據(jù)庫(kù)類型
    ? */
    ?public static final String DBTYPE_SQLSERVER = "sqlServer";
    ?public static final String DBTYPE_DB2 = "DB2";
    ?public static final String DBTYPE_ORACLE = "oracle";

    ?/*
    ? * 行數(shù)據(jù)選擇類型
    ? * 1:CheckBox
    ? * 2:RadioButton
    ? */
    ?public static final int SELECT_TYPE_CHECKBOX = 1;
    ?public static final int SELECT_TYPE_RADIOBUTTON = 2;
    ?
    ?/*
    ? * 翻頁(yè)跳轉(zhuǎn)類型
    ? * 1:跳回原jsp頁(yè)面
    ? * 2:跳回Action.do(struts框架)
    ? */
    ?public static final int FOWARD_TYPE_JSP = 1;
    ?public static final int FOWARD_TYPE_ACTION =2;
    ?
    ?/*
    ? *錯(cuò)誤類型
    ? *1:未設(shè)置url
    ? *2:未設(shè)置標(biāo)題
    ? *3:Connection為空(傳sql方式)
    ? *4:未識(shí)別的數(shù)據(jù)庫(kù)
    ? *5:數(shù)據(jù)vector為空(非傳sql方式)
    ? *6:查詢sql為空(傳sql方式)
    ? */
    ?public static final int EXCEPTION_TYPE_URL_IS_NULL = 1;
    ?public static final int EXCEPTION_TYPE_TITLE_IS_NULL = 2;
    ?public static final int EXCEPTION_TYPE_CON_IS_NULL = 3;
    ?public static final int EXCEPTION_TYPE_DB_NOT_RECOGNIZE = 4;
    ?public static final int EXCEPTION_TYPE_DATA_VECTOR_IS_NULL = 5;
    ?public static final int EXCEPTION_TYPE_SQL_IS_NULL = 6;
    }




    OperateException.java 文件?????



    package Action;

    public class OperateException extends Exception {
    ?private String ExceptionMsg= "OperatePage Exception:";
    ?/**
    ? * @param pm_iExceptionType 異常類型
    ? * 根據(jù)定義的異常類型構(gòu)造異常信息
    ? */
    ?public OperateException(int pm_iExceptionType)
    ?{
    ??if(pm_iExceptionType == OperateConst.EXCEPTION_TYPE_CON_IS_NULL)
    ??{
    ???this.ExceptionMsg += "The Connection is null ! ";
    ??}
    ??else if(pm_iExceptionType == OperateConst.EXCEPTION_TYPE_DB_NOT_RECOGNIZE)
    ??{
    ???this.ExceptionMsg += "unrecoginze DBType!";
    ??}
    ??else if(pm_iExceptionType == OperateConst.EXCEPTION_TYPE_TITLE_IS_NULL)
    ??{
    ???this.ExceptionMsg += "The title is null";
    ??}
    ??else if(pm_iExceptionType == OperateConst.EXCEPTION_TYPE_URL_IS_NULL)
    ??{
    ???this.ExceptionMsg += "The pageUrl is null!";
    ??}
    ??else if(pm_iExceptionType == OperateConst.EXCEPTION_TYPE_DATA_VECTOR_IS_NULL)
    ??{
    ???this.ExceptionMsg += "The Data Vector is null!";
    ??}
    ??
    ??
    ?}
    ?
    ?/**
    ? * 打印異常信息
    ? */
    ?public void printMsg()
    ?{
    ??System.out.println(this.ExceptionMsg);
    ??
    ?}

    }




    OperatePage.java? 文件??????



    package Action;

    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.ArrayList;
    import java.util.Timer;
    import java.util.TimerTask;
    import java.util.Vector;
    import java.util.regex.Pattern;

    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    import common.Tools;

    public class OperatePage implements IOperatePage{
    ?//表單名,如未設(shè)置,將把分頁(yè)數(shù)據(jù)裝在名為"form1"的表單中
    ?private String formName = "";
    ?//分頁(yè)時(shí)跳轉(zhuǎn)的頁(yè)面url
    ?private String pageUrl = "";
    ?//數(shù)據(jù)容器,傳sql時(shí)不必設(shè)
    ?private Vector dataVector;
    ?//數(shù)據(jù)連接,傳sql時(shí)必需設(shè)置
    ?private Connection con;?
    ?//分頁(yè)表格標(biāo)題頭
    ?private String[] contentTitle;
    ?//行選擇時(shí)的元素名,在設(shè)定選擇模式時(shí)有效,默認(rèn)為checkboxItem
    ?private String selectItemName = "checkboxItem";
    ?//行選擇類型,單選和多選兩種,在設(shè)定選擇模式時(shí)有效,默認(rèn)為多選
    ?private int selectType = OperateConst.SELECT_TYPE_CHECKBOX;
    ?//翻頁(yè)跳轉(zhuǎn)類型,到j(luò)sp和到Action兩種(默認(rèn)到j(luò)sp)
    ?private int forwardType = OperateConst.FOWARD_TYPE_JSP;
    ?//行選擇時(shí)每行數(shù)據(jù)的值,與數(shù)據(jù)列對(duì)應(yīng),各列數(shù)據(jù)以;分隔(默認(rèn)第一列)
    ?private int [] selectKeyArray = {1};
    ?//是否為選擇模式,如為true,分頁(yè)表格頭列將加單選或多選按鈕(默認(rèn)為true)
    ?private boolean hasSelectItem = true;
    ?
    ??? //用戶是否未設(shè)置formName,組件自我控制邏輯,用戶不必關(guān)心該屬性
    ?private boolean isSelfForm ;
    ?
    ?/**
    ? * @param pm_iPageSize? 頁(yè)大小
    ? * @param pm_iPageIndex 頁(yè)碼
    ? * @param pm_vecContent 數(shù)據(jù)內(nèi)容
    ? * @param request?????? SevletRequest
    ? * @param response????? SevletResponse
    ? * @return 數(shù)據(jù)庫(kù)分頁(yè)后的Table HTML(帶分頁(yè)按鈕)
    ? * @throws OperateException
    ? */
    ?public String getContentHtml(int pm_iPageSize, int pm_iPageIndex, HttpServletRequest request, HttpServletResponse response) throws OperateException {
    ??
    ??StringBuffer strBuf = new StringBuffer("");
    ??int pageSize=pm_iPageSize;
    ??int pageIndex=pm_iPageIndex;
    ??String pageUrlReal = this.pageUrl;
    ????
    ??//檢查必要設(shè)置
    ??if(this.contentTitle == null)? /*如未設(shè)置標(biāo)題頭,拋出異常*/
    ??{
    ???throw new OperateException(OperateConst.EXCEPTION_TYPE_TITLE_IS_NULL);
    ???
    ??}
    ??if(this.pageUrl == null)?? /*如傳遞的跳轉(zhuǎn)頁(yè)面為空,拋出異常*/
    ??{
    ???throw new OperateException(OperateConst.EXCEPTION_TYPE_URL_IS_NULL);
    ??}
    ??if(this.dataVector == null) /*如未設(shè)置待分頁(yè)數(shù)據(jù),拋出異常*/
    ??{
    ???throw new OperateException(OperateConst.EXCEPTION_TYPE_DATA_VECTOR_IS_NULL);
    ??}
    ??
    ??
    ??// 判斷是第一次進(jìn)入還是翻頁(yè)操作,設(shè)置相應(yīng)的pageSize和pageIndex
    ??if(request.getParameter("pageSizeText")==null)
    ??{
    ???pageSize = pm_iPageSize;
    ?????
    ??}
    ??else if(!request.getParameter("pageSizeText").equals(""))
    ??{
    ???pageSize = Integer.parseInt(request.getParameter("pageSizeText"));
    ??}
    ??if(request.getParameter("pageIndex")==null)
    ??{
    ???pageIndex = pm_iPageIndex;
    ??}
    ??else if(request.getParameter("pageIndex")!=null)
    ??{
    ???pageIndex = Integer.parseInt(request.getParameter("pageIndex"));
    ??}
    ??
    ??//如跳轉(zhuǎn)類型為Action,在url中加flag=pageOperate參數(shù)以便在用戶的Action中標(biāo)識(shí)跳轉(zhuǎn)操作(默認(rèn)為跳轉(zhuǎn)到原jsp)
    ??if(this.forwardType == OperateConst.FOWARD_TYPE_ACTION)
    ??{
    ???pageUrlReal = this.pageUrl+"?flag=pageOperate&";
    ??}
    ??else if(this.forwardType == OperateConst.FOWARD_TYPE_JSP)
    ??{
    ???pageUrlReal = this.pageUrl+"?";
    ??}
    ??
    ??//如未設(shè)置form名,則將分頁(yè)數(shù)據(jù)封裝在名為"form1"的表單中
    ??if(this.getFormName().equals(""))
    ??{
    ???this.setFormName("form1");
    ???this.setSelfForm(true);
    ???strBuf.append("<form name="+this.formName+" action='' method=post>");
    ???strBuf.append("\n");
    ??}
    ??else if( (!this.getFormName().equals(""))&&this.isSelfForm==true)
    ??{
    ???this.setFormName("form1");
    ???strBuf.append("<form name="+this.formName+" action='' method=post>");
    ???strBuf.append("\n");
    ??}
    ??
    ??//主體操作
    ??Vector vecContent = this.dataVector;
    ??strBuf.append("<table width=100% cellspacing=1 cellpadding=0 background=blue>");
    ??//表格標(biāo)題欄
    ??strBuf.append("<tr >");
    ??if(this.hasSelectItem)
    ??{
    ???strBuf.append("<td >");
    ???if(this.selectType == OperateConst.SELECT_TYPE_CHECKBOX)
    ???{
    ????strBuf.append("<input type='checkbox' name='checkAll' onclick='doSelectAll();'/>");
    ???}
    ???strBuf.append("</td>");
    ??}
    ??
    ??for(int i=0;i<contentTitle.length;i++)
    ??{
    ???strBuf.append("<td>"+contentTitle[i]+"</td>");???
    ??}
    ??strBuf.append("</tr>");
    ??
    ??
    ??//表內(nèi)容
    ??//分頁(yè)操作
    ??int totalCount = vecContent.size();
    ??int totalPage = totalCount/pageSize;
    ??if(totalPage*pageSize<totalCount)
    ??{
    ???totalPage = totalPage + 1;
    ??}
    ??
    ??int beginIndex = pageIndex*pageSize ;
    ??int endIndex = beginIndex + pageSize - 1;
    ??if(endIndex >= totalCount)
    ??{
    ???endIndex = totalCount -1;
    ??}
    ??
    ??
    ??for(int i=beginIndex;i<=endIndex;i++)
    ??{
    ???Vector tmp = (Vector)vecContent.get(i);
    ???strBuf.append("<tr>");
    ???if(this.hasSelectItem)? /*如設(shè)置行選擇,增加selectItem列*/
    ???{
    ????strBuf.append("<td>");
    ????if(this.selectType == OperateConst.SELECT_TYPE_CHECKBOX)
    ????{
    ?????strBuf.append("<input type='checkbox' name='"+this.getSelectItemName()+"' value='");
    ?????for(int k=0;k<this.selectKeyArray.length;k++)
    ?????{
    ??????strBuf.append(tmp.get(selectKeyArray[k]-1)+";");
    ?????}
    ?????strBuf.append("'/>");
    ????}
    ????else if(this.selectType == OperateConst.SELECT_TYPE_RADIOBUTTON)
    ????{
    ?????strBuf.append("<input type='radio' name='"+this.getSelectItemName()+"' value='");
    ?????for(int k=0;k<this.selectKeyArray.length;k++)
    ?????{
    ??????strBuf.append(tmp.get(selectKeyArray[k]-1)+";");
    ?????}
    ?????strBuf.append("'/>");
    ????}
    ????strBuf.append("</td>");
    ???}
    ???for(int j=0;j<tmp.size();j++)
    ???{???
    ????strBuf.append("<td>"+tmp.get(j)+"</td>");
    ???}
    ???strBuf.append("</tr>");
    ???
    ??}
    ??
    ??strBuf.append("</table>");
    ??
    ??strBuf.append("<br>");
    ??
    ??
    ??if(pageIndex>0)
    ??{
    ???strBuf.append("|<a href='"+pageUrlReal+"pageSize="+String.valueOf(pageSize)+"&pageIndex=0' onClick=\"commonSubmit("+this.formName+",this.href);return false;\">");
    ???strBuf.append("<font color='red'>首頁(yè)</font>");
    ???strBuf.append("</a>|");
    ???strBuf.append("<a href='"+pageUrlReal+"pageSize="+String.valueOf(pageSize)+"&pageIndex="+String.valueOf(pageIndex-1)+"'? onClick=\"commonSubmit("+this.formName+",this.href);return false;\">");
    ???strBuf.append("<font color='red'>上一頁(yè)</font>");
    ???strBuf.append("</a>|");
    ???
    ??}
    ??if(pageIndex<totalPage-1)
    ??{
    ???
    ???strBuf.append("<a href='"+pageUrlReal+"pageSize="+String.valueOf(pageSize)+"&pageIndex="+String.valueOf(pageIndex+1)+"'? onClick=\"commonSubmit("+this.formName+",this.href);return false;\">");
    ???strBuf.append("<font color='red'>下一頁(yè)</font>");
    ???strBuf.append("</a>|");
    ???strBuf.append("<a href='"+pageUrlReal+"pageSize="+String.valueOf(pageSize)+"&pageIndex="+String.valueOf(totalPage-1)+"'? onClick=\"commonSubmit("+this.formName+",this.href);return false;\">");
    ???strBuf.append("<font color='red'>末頁(yè)</font>");
    ???strBuf.append("</a>|");
    ??}
    ????
    ??strBuf.append("<font color='red'>每頁(yè)顯示</font>");
    ??strBuf.append("<input type=text name=pageSizeText size=10 value="+pageSize+">");
    ??strBuf.append("</input>");
    ??strBuf.append("<font color='red'>行</font>");
    ??
    ??//js腳本
    ??strBuf.append("\n");
    ??strBuf.append("<script language='JavaScript'>\n");
    ??? //提交翻頁(yè)操作腳本
    ??strBuf.append("function commonSubmit(formObject,url)"+"\n");
    ??strBuf.append("{\n");
    ??strBuf.append("formObject.action=url"+"\n");
    ??//strBuf.append("alert(formObject.action)\n");
    ??strBuf.append("formObject.submit();"+"\n");
    ??strBuf.append("}"+"\n");
    ??
    ??//如果選擇類型為checkbox,增加全選的腳本
    ??if(this.getSelectType() == OperateConst.SELECT_TYPE_CHECKBOX)
    ??{
    ????? //行選擇腳本(用于checkBox)
    ???strBuf.append("function doSelectAll()"+"\n");
    ???strBuf.append("{"+"\n");
    ???strBuf.append("var ItemName = '"+this.selectItemName+"'"+"\n");
    ???strBuf.append("var ItemObj ;\n");
    ???strBuf.append("var i ;\n");
    ???strBuf.append("for(i=0;i<"+this.formName+".length;i++)\n");
    ???strBuf.append("{\n");
    ???strBuf.append("if("+this.formName+".elements[i].name == '"+this.selectItemName+"')\n");
    ???strBuf.append("{\n");
    ???strBuf.append("ItemObj = "+this.formName+".elements[i];\n");
    ???strBuf.append("if("+this.formName+".checkAll.checked == true)\n");
    ???strBuf.append("{\n");
    ???strBuf.append("ItemObj.checked = true;\n");
    ???strBuf.append("}\n");
    ???strBuf.append("else\n");
    ???strBuf.append("{\n");
    ???strBuf.append("ItemObj.checked = false;\n");
    ???strBuf.append("}\n");??
    ???strBuf.append("}\n");
    ???strBuf.append("}\n");
    ???strBuf.append("}\n");
    ??}
    ??strBuf.append("</script>\n");
    ??if(this.formName.equals(""))
    ??{?
    ???strBuf.append("</form>");
    ??}
    ??return strBuf.toString();
    ?}
    ?
    ?/**
    ? * @param pm_iPageSize? 頁(yè)大小
    ? * @param pm_iPageIndex 頁(yè)碼
    ? * @param pm_sPageUrl?? jsp頁(yè)面路徑
    ? * @param pm_sSql?????? 查詢的sql
    ? * @param request?????? SevletRequest
    ? * @param response????? SevletResponse
    ? * @return 數(shù)據(jù)庫(kù)分頁(yè)后的Table HTML(帶分頁(yè)按鈕)
    ? * @throws OperateException
    ? */
    ?public String getContentHtml(int pm_iPageSize, int pm_iPageIndex, String pm_sSql, HttpServletRequest request, HttpServletResponse response) throws OperateException {
    ??//檢查必要設(shè)置
    ??if(this.con == null)
    ??{
    ???throw new OperateException(OperateConst.EXCEPTION_TYPE_CON_IS_NULL);
    ??}
    ??this.contentTitle = new String[100];
    ??PageDbBean dbBean = new PageDbBean(con);
    ??Vector result = dbBean.getResultBySql(pm_sSql,this.contentTitle);
    ??this.setDataVector(result);
    ??return getContentHtml(pm_iPageSize,pm_iPageIndex,request,response);
    ?}
    ????
    ?
    ?
    ?/**
    ? * @param pm_iPageSize? 頁(yè)大小
    ? * @param pm_iPageIndex 頁(yè)碼
    ? * @param pm_sPageUrl?? jsp頁(yè)面路徑
    ? * @param pm_sSql?????? 查詢的sql
    ? * @param pm_sDBType??? 數(shù)據(jù)庫(kù)類型,如數(shù)據(jù)庫(kù)直接支持?jǐn)?shù)據(jù)庫(kù)端分頁(yè),可提高效率
    ? * @param request?????? ServletRequest
    ? * @param response????? ServletResponse
    ? * @return 數(shù)據(jù)庫(kù)分頁(yè)后的Table HTML(帶分頁(yè)按鈕)
    ? * @throws OperateException
    ? */
    ?public String getContentHtml(int pm_iPageSize, int pm_iPageIndex, String pm_sSql, String pm_sDBType, HttpServletRequest request, HttpServletResponse response) throws OperateException {
    ??//判斷數(shù)據(jù)庫(kù)類型,如支持?jǐn)?shù)據(jù)庫(kù)端分頁(yè),重新組裝sql
    ??String sql = pm_sSql;
    ??if(pm_sDBType.equals(OperateConst.DBTYPE_ORACLE))/*支持?jǐn)?shù)據(jù)庫(kù)端分頁(yè)*/
    ??{
    ???
    ??????????? //檢查必要設(shè)置
    ???if(this.con == null)
    ???{
    ????throw new OperateException(OperateConst.EXCEPTION_TYPE_CON_IS_NULL);
    ???}
    ???//檢查必要設(shè)置
    ???if(this.pageUrl == null)?? /*如傳遞的跳轉(zhuǎn)頁(yè)面為空,拋出異常*/
    ???{
    ????throw new OperateException(OperateConst.EXCEPTION_TYPE_URL_IS_NULL);
    ???}
    ???
    ???//主體操作
    ???StringBuffer strBuf = new StringBuffer("");
    ???int pageSize=pm_iPageSize,pageIndex=pm_iPageIndex;
    ???// 判斷是第一次進(jìn)入還是翻頁(yè)操作,設(shè)置相應(yīng)的pageSize和pageIndex
    ???if(request.getParameter("pageSizeText")==null)
    ???{
    ????pageSize = pm_iPageSize;
    ????
    ???}
    ???else if(!request.getParameter("pageSizeText").equals(""))
    ???{
    ????pageSize = Integer.parseInt(request.getParameter("pageSizeText"));
    ???}
    ???if(request.getParameter("pageIndex")==null)
    ???{
    ????pageIndex = pm_iPageIndex;
    ???}
    ???else if(request.getParameter("pageIndex")!=null)
    ???{
    ????pageIndex = Integer.parseInt(request.getParameter("pageIndex"));
    ???}
    ???
    ???//如跳轉(zhuǎn)類型為Action,在url中加flag=pageOperate參數(shù)以便在用戶的Action中標(biāo)識(shí)跳轉(zhuǎn)操作(默認(rèn)為跳轉(zhuǎn)到原jsp)
    ???if(this.forwardType == OperateConst.FOWARD_TYPE_ACTION)
    ???{
    ????this.pageUrl = this.pageUrl+"?flag=pageOperate&";
    ???}
    ???else if(this.forwardType == OperateConst.FOWARD_TYPE_JSP)
    ???{
    ????this.pageUrl = this.pageUrl+"?";
    ???}
    ???
    ???int pageBegin = pageSize*pageIndex;
    ???int pageEnd = pageSize*(pageIndex+1)-1;
    ???String pageUrlReal = this.pageUrl;
    ???int pageTotal = 0;
    ???sql = "select * from (select rownum r, t. *? from ("+pm_sSql +") t where rownum <="+(pageEnd+1)+") t_out where r >="+(pageBegin+1);
    ??????
    ???
    ???//獲取總頁(yè)數(shù)
    ???PageDbBean dbBean = new PageDbBean(this.con);
    ???
    ???int rowTotal = dbBean.getTotalCount(pm_sSql);
    ???pageTotal = rowTotal/pm_iPageSize;
    ???if(pageTotal*pm_iPageSize<rowTotal)
    ???{
    ????pageTotal = pageTotal + 1;
    ???}
    ???
    ???
    ???//如未設(shè)置form名,則將分頁(yè)數(shù)據(jù)封裝在名為"form1"的表單中
    ???if(this.getFormName().equals(""))
    ???{
    ????this.setFormName("form1");
    ????this.setSelfForm(true);
    ????strBuf.append("<form name="+this.formName+" action='' method=post>");
    ????strBuf.append("\n");
    ???}
    ???else if( (!this.getFormName().equals(""))&&this.isSelfForm==true)
    ???{
    ????this.setFormName("form1");
    ????strBuf.append("<form name="+this.formName+" action='' method=post>");
    ????strBuf.append("\n");
    ???}
    ???
    ???//主體操作
    ???this.contentTitle = new String[100];
    ???Vector result = dbBean.getResultBySql2(sql,this.contentTitle);
    ???Vector vecContent = result;
    ???strBuf.append("<table width=100% cellspacing=1 cellpadding=0>");
    ???//表格標(biāo)題欄
    ???strBuf.append("<tr >");
    ???if(this.hasSelectItem)
    ???{
    ????strBuf.append("<td >");
    ????if(this.selectType == OperateConst.SELECT_TYPE_CHECKBOX)
    ????{
    ?????strBuf.append("<input type='checkbox' name='checkAll' onclick='doSelectAll();'/>");
    ????}
    ????strBuf.append("</td>");
    ???}
    ???for(int i=0;i<contentTitle.length;i++)
    ???{
    ????strBuf.append("<td>"+contentTitle[i]+"</td>");???
    ???}
    ???strBuf.append("</tr>");
    ???
    ???for(int i=0;i<vecContent.size();i++)
    ???{
    ????Vector tmp = (Vector)vecContent.get(i);
    ????strBuf.append("<tr>");
    ????if(this.hasSelectItem)
    ????{
    ?????strBuf.append("<td>");
    ?????if(this.selectType == OperateConst.SELECT_TYPE_CHECKBOX)
    ?????{
    ??????strBuf.append("<input type='checkbox' name='"+this.getSelectItemName()+"' value='");
    ??????for(int k=0;k<this.selectKeyArray.length;k++)
    ??????{
    ???????strBuf.append(tmp.get(selectKeyArray[k]-1)+";");
    ??????}
    ??????strBuf.append("'/>");
    ?????}
    ?????else if(this.selectType == OperateConst.SELECT_TYPE_RADIOBUTTON)
    ?????{
    ??????strBuf.append("<input type='radio' name='"+this.getSelectItemName()+"' value='");
    ??????for(int k=0;k<this.selectKeyArray.length;k++)
    ??????{
    ???????strBuf.append(tmp.get(selectKeyArray[k]-1)+";");
    ??????}
    ??????strBuf.append("'/>");
    ?????}
    ?????strBuf.append("</td>");
    ????}
    ????for(int j=0;j<tmp.size();j++)
    ????{???
    ?????strBuf.append("<td>"+tmp.get(j)+"</td>");
    ????}
    ????strBuf.append("</tr>");
    ????
    ???}
    ???
    ???strBuf.append("</table>");
    ???
    ???strBuf.append("<br>");
    ???
    ???
    ???if(pageIndex>0)
    ???{
    ????strBuf.append("|<a href='"+pageUrlReal+"pageSize="+String.valueOf(pageSize)+"&pageIndex=0' onClick=\"commonSubmit("+this.formName+",this.href);return false;\">");
    ????strBuf.append("<font color='red'>首頁(yè)</font>");
    ????strBuf.append("</a>|");
    ????strBuf.append("<a href='"+pageUrlReal+"pageSize="+String.valueOf(pageSize)+"&pageIndex="+String.valueOf(pageIndex-1)+"'? onClick=\"commonSubmit("+this.formName+",this.href);return false;\">");
    ????strBuf.append("<font color='red'>上一頁(yè)</font>");
    ????strBuf.append("</a>|");
    ????
    ???}
    ???if(pageIndex<pageTotal-1)
    ???{
    ????
    ????strBuf.append("<a href='"+pageUrlReal+"pageSize="+String.valueOf(pageSize)+"&pageIndex="+String.valueOf(pageIndex+1)+"'? onClick=\"commonSubmit("+this.formName+",this.href);return false;\">");
    ????strBuf.append("<font color='red'>下一頁(yè)</font>");
    ????strBuf.append("</a>|");
    ????strBuf.append("<a href='"+pageUrlReal+"pageSize="+String.valueOf(pageSize)+"&pageIndex="+String.valueOf(pageTotal-1)+"'? onClick=\"commonSubmit("+this.formName+",this.href);return false;\">");
    ????strBuf.append("<font color='red'>末頁(yè)</font>");
    ????strBuf.append("</a>|");
    ???}
    ???
    ???strBuf.append("<font color='red'>每頁(yè)顯示</font>");
    ???strBuf.append("<input type=text name='pageSizeText' size=10 value="+pageSize+">");
    ???strBuf.append("</input>");
    ???strBuf.append("<font color='red'>行</font>");
    ???
    ???//js腳本
    ???strBuf.append("\n");
    ???strBuf.append("<script language='JavaScript'>\n");
    ???//提交翻頁(yè)操作腳本
    ???strBuf.append("function commonSubmit(formObject,url)"+"\n");
    ???strBuf.append("{\n");
    ???strBuf.append("formObject.action=url"+"\n");
    ???//strBuf.append("alert(formObject.action)\n");
    ???strBuf.append("formObject.submit();"+"\n");
    ???strBuf.append("}"+"\n");
    ???
    ???//如果選擇類型為checkbox,增加全選的腳本
    ???if(this.getSelectType() == OperateConst.SELECT_TYPE_CHECKBOX)
    ???{
    ????//行選擇腳本(用于checkBox)
    ????strBuf.append("function doSelectAll()"+"\n");
    ????strBuf.append("{"+"\n");
    ????strBuf.append("var ItemName = '"+this.selectItemName+"'"+"\n");
    ????strBuf.append("var ItemObj ;\n");
    ????strBuf.append("var i ;\n");
    ????strBuf.append("for(i=0;i<"+this.formName+".length;i++)\n");
    ????strBuf.append("{\n");
    ????strBuf.append("if("+this.formName+".elements[i].name == '"+this.selectItemName+"')\n");
    ????strBuf.append("{\n");
    ????strBuf.append("ItemObj = "+this.formName+".elements[i];\n");
    ????strBuf.append("if("+this.formName+".checkAll.checked == true)\n");
    ????strBuf.append("{\n");
    ????strBuf.append("ItemObj.checked = true;\n");
    ????strBuf.append("}\n");
    ????strBuf.append("else\n");
    ????strBuf.append("{\n");
    ????strBuf.append("ItemObj.checked = false;\n");
    ????strBuf.append("}\n");??
    ????strBuf.append("}\n");
    ????strBuf.append("}\n");
    ????strBuf.append("}\n");
    ???}
    ???strBuf.append("</script>\n");
    ???if(this.getFormName().equals(""))
    ???{?
    ????strBuf.append("</form>");
    ???}
    ???return strBuf.toString();
    ???
    ???
    ???
    ??}
    ??else?? /*不支持?jǐn)?shù)據(jù)庫(kù)端分頁(yè)*/
    ??{
    ???return getContentHtml(pm_iPageSize,pm_iPageIndex,pm_sSql,request,response);
    ??}
    ??
    ??
    ??
    ??
    ?}
    ?
    ?
    ?//屬性get/set方法
    ?public String getFormName() {
    ??return formName;
    ?}
    ?
    ?
    ?public void setFormName(String formName) {
    ??this.formName = formName;
    ?}


    ?public String[] getContentTitle() {
    ??return contentTitle;
    ?}


    ?public void setContentTitle(String[] contentTitle) {
    ??this.contentTitle = contentTitle;
    ?}


    ?public String getSelectItemName() {
    ??return selectItemName;
    ?}


    ?public void setSelectItemName(String selectItemName) {
    ??this.selectItemName = selectItemName;
    ?}


    ?public int[] getSelectKeyArray() {
    ??return selectKeyArray;
    ?}


    ?public void setSelectKeyArray(int[] selectKeyArray) {
    ??this.selectKeyArray = selectKeyArray;
    ?}


    ?public int getSelectType() {
    ??return selectType;
    ?}


    ?public void setSelectType(int selectType) {
    ??this.selectType = selectType;
    ?}


    ?public boolean hasSelectItem() {
    ??return hasSelectItem;
    ?}


    ?public void setHasSelectItem(boolean hasSelectItem) {
    ??this.hasSelectItem = hasSelectItem;
    ?}
    ?
    ?
    ?public int getForwardType() {
    ??return forwardType;
    ?}


    ?public void setForwardType(int forwardType) {
    ??this.forwardType = forwardType;
    ?}

    ?public String getPageUrl() {
    ??return pageUrl;
    ?}

    ?public void setPageUrl(String pageUrl) {
    ??this.pageUrl = pageUrl;
    ?}

    ?public void setSelfForm(boolean isSelfForm) {
    ??this.isSelfForm = isSelfForm;
    ?}

    ?public void setDataVector(Vector dataVector) {
    ??this.dataVector = dataVector;
    ?}

    ?public void setCon(Connection con) {
    ??this.con = con;
    ?}
    ?
    ?
    }




    PageDbBean.java 文件



    package Action;

    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.Vector;

    public class PageDbBean {
    ?private Connection con;
    ?private Statement stmt;
    ?private ResultSet rs;
    ?
    ?public PageDbBean(Connection pm_objCon)
    ?{
    ??con = pm_objCon;
    ?}
    ?
    ?/**
    ? * @param pm_sSql sql語(yǔ)句
    ? * @param pm_sTitle 設(shè)置標(biāo)題
    ? * @return 結(jié)果集
    ? */
    ?public Vector getResultBySql(String pm_sSql,String [] pm_sTitle)
    ?{
    ??try
    ??{
    ???stmt = this.con.createStatement();
    ???rs = stmt.executeQuery(pm_sSql);
    ???Vector result = new Vector();
    ???
    ???ResultSetMetaData meta = rs.getMetaData();
    ???int colNum = meta.getColumnCount();
    ???for(int j=0;j<colNum;j++)
    ???{
    ????pm_sTitle[j] = meta.getColumnName(j+1);
    ???}
    ???while(rs.next())
    ???{
    ????Vector rowVector = new Vector();
    ????for(int i=0;i<colNum;i++)
    ????{
    ?????rowVector.add(rs.getString(i+1));
    ????}
    ????result.add(rowVector);
    ????
    ???}
    ???return result;
    ??}
    ??catch(SQLException es)
    ??{
    ???System.out.println("PageDbBean:SQL操作異常!");
    ???es.printStackTrace();
    ???return null;
    ??}
    ??finally
    ??{
    ???try {
    ????rs.close();
    ????stmt.close();
    ???}
    ???catch (SQLException e)
    ???{
    ????System.out.println("資源回收失敗!");
    ????e.printStackTrace();
    ????
    ???}
    ???
    ??}
    ?}
    ?
    ?/**
    ? * @param pm_sSql sql語(yǔ)句
    ? * @param pm_sTitle 設(shè)置標(biāo)題
    ? * @return 結(jié)果集
    ? */
    ?public Vector getResultBySql2(String pm_sSql,String [] pm_sTitle)
    ?{
    ??try
    ??{
    ???stmt = this.con.createStatement();
    ???rs = stmt.executeQuery(pm_sSql);
    ???Vector result = new Vector();
    ???
    ???ResultSetMetaData meta = rs.getMetaData();
    ???int colNum = meta.getColumnCount();
    ???for(int j=1;j<colNum;j++)
    ???{
    ????pm_sTitle[j-1] = meta.getColumnName(j+1);
    ???}
    ???while(rs.next())
    ???{
    ????Vector rowVector = new Vector();
    ????for(int i=1;i<colNum;i++)
    ????{
    ?????rowVector.add(rs.getString(i+1));
    ????}
    ????result.add(rowVector);
    ????
    ???}
    ???return result;
    ??}
    ??catch(SQLException es)
    ??{
    ???System.out.println("PageDbBean:SQL操作異常!");
    ???es.printStackTrace();
    ???return null;
    ??}
    ??finally
    ??{
    ???try {
    ????rs.close();
    ????stmt.close();
    ???}
    ???catch (SQLException e)
    ???{
    ????System.out.println("資源回收失敗!");
    ????e.printStackTrace();
    ????
    ???}
    ???
    ??}
    ?}
    ?/**
    ? * @param pm_sSql
    ? * @return 總記錄數(shù)
    ? */
    ?public int getTotalCount(String pm_sSql)
    ?{
    ??try
    ??{
    ???stmt = con.createStatement();
    ???rs = stmt.executeQuery("select count(*) from ("+pm_sSql+")");
    ???rs.next();
    ???int rowTotal = rs.getInt(1);
    ???return rowTotal;
    ??}
    ??catch(SQLException es)
    ??{
    ???System.out.println("PageDbBean:SQL操作異常");
    ???es.printStackTrace();
    ???return -1;
    ??}
    ??finally
    ??{
    ???try
    ???{
    ????this.rs.close();
    ????this.stmt.close();
    ???}
    ???catch(SQLException es2)
    ???{
    ????System.out.println("PageDbBean:資源回收失敗!");
    ????es2.printStackTrace();
    ????
    ???}
    ??}
    ?}

    }

    posted on 2007-08-06 16:21 蠻哥♂楓 閱讀(1294) 評(píng)論(0)  編輯  收藏 所屬分類: Java
    主站蜘蛛池模板: 久久免费视频一区| 亚洲国产精品一区二区久久hs| 免费的全黄一级录像带| 国产精品亚洲专区无码唯爱网| 亚洲天堂男人天堂| 中文字幕亚洲无线码| 日本媚薬痉挛在线观看免费| 成人免费大片免费观看网站| 在线人成免费视频69国产| 一级毛片a免费播放王色电影| 亚洲午夜成人精品无码色欲| 91亚洲精品第一综合不卡播放| 亚洲夜夜欢A∨一区二区三区| mm1313亚洲精品无码又大又粗| 成人免费午夜视频| 国产在线观看麻豆91精品免费| 中国一级毛片视频免费看| 免费无码午夜福利片| 亚洲手机中文字幕| 97无码免费人妻超级碰碰碰碰| 亚洲日本在线电影| 免费看男女下面日出水来| 亚洲图片激情小说| 亚洲色欲www综合网| 亚洲国产第一页www| 久久被窝电影亚洲爽爽爽| 久久99亚洲综合精品首页| 亚洲精品老司机在线观看| 亚洲AV成人潮喷综合网| 免费国产成人午夜电影| 亚洲成a人片在线播放| 亚洲福利精品一区二区三区| 在线看片无码永久免费aⅴ| 麻豆国产人免费人成免费视频| 女人18毛片水真多免费播放| 久久不见久久见中文字幕免费 | 日韩在线免费视频| 99在线精品视频观看免费| 精品久久久久成人码免费动漫 | 日木av无码专区亚洲av毛片| 久久精品国产亚洲77777|