一個通用的JSP分頁程式

來源:互聯網
上載者:User
js|程式|分頁 //本程式使用了一個類反射的類,可以自動將查詢出來的值填充到值對象裡。
//這個類可以參見ibm的文章:使用類反射機制簡化struts的開發.

package com.lyjWeb.wyhn.common;


import java.sql.*;
import com.lyjWeb.common.*;
import java.util.*;

public class Fenye {

private Connection con=null;
private String sql="";
private String page="1";// 當前頁
private int i_page=1;//當前頁
private int i_page_count=10;//每頁顯示條數
private String nextpage,prepage,sumpage,sumcount;

private String sql_select,sql_from,sql_where,sql_order;
private String sql_pre="";
private String sql_count=""; //count(*)語句
private ResultSet rst=null;
private PreparedStatement stm=null;

private Collection result_c=null;

private String s_null="無";

///////////////////////////輸入值///////////////////////////////
public void setConnection(Connection con)
{
this.con=con;
}

public void setSql(String sql_select,String sql_from,String sql_where,String sql_order)
{
//this.sql=sql;
this.sql_select=sql_select;
this.sql_from=sql_from;
this.sql_where=sql_where;
this.sql_order=sql_order;
this.sql_count="select count(*) " + sql_from + " " + sql_where;
this.sql=sql_select + " " + sql_from + " " + sql_where + " " + sql_order;
}

public void setStm(PreparedStatement stm)
{
this.stm=stm;
}

public void setPage(String p)
{
if(p==null)
{
this.page="1";
this.i_page=1;
}
else
{
p=p.trim();
if(p.equals("")) p="1";
this.page=p;
this.i_page=Integer.parseInt(this.page);
}

}

public void setPageCount(int pcount)
{
this.i_page_count=pcount;
}

public void setSqlPre(String sqlpre)
{
this.sql_pre=sqlpre;
}

public void setS_null(String s_null)
{
this.s_null=s_null;
}
//////////////////////////////////////傳回值///////////////////////////////////////////
public ResultSet getRst()
{
return rst;
}

public String getPage()
{
return page;
}

public String getNextPage()
{
return nextpage;
}

public String getPrePage()
{
return prepage;
}

public String getSumPage()
{
return sumpage;
}

public String getCount()
{
return sumcount;
}

public Collection getCollection()
{
return result_c;
}

////////////////////////////////////////操 作///////////////////////////////////////////////
private String b_string,f_string;
private String comsql;

private void CountPage() throws Exception
{
//try{
PreparedStatement stm1=con.prepareStatement(sql_count);
ResultSet rst_count=stm1.executeQuery();
rst_count.next();
int i_sum=rst_count.getInt(1);

rst_count.close();
rst_count=null;
stm1.close();
stm1=null;


this.sumcount=String.valueOf(i_sum);

int page_all=0;
if (i_sum % i_page_count==0)
{
page_all=i_sum / i_page_count;
}
else{
page_all=i_sum / i_page_count+1;
}

sumpage=String.valueOf(page_all);

if(i_page>page_all)
{
i_page=page_all;
page=String.valueOf(i_page);
}else if(i_page<1)
{
i_page=1;
page=String.valueOf(i_page);
}

if(i_page==page_all)
nextpage=String.valueOf(i_page) ;
else
nextpage=String.valueOf(i_page+1) ;

if(i_page==1)
prepage="1";
else
prepage=String.valueOf(i_page-1);


int f_number=i_page * i_page_count;
int b_number=f_number-i_page_count+1;
b_string=String.valueOf(b_number);
f_string=String.valueOf(f_number);

//}catch(Exception e)
//{
// System.out.println("Error in fenye:" + e.toString());
//}
}

private void ComSql()
{

comsql= " from (select rownum row_id ,ttttt2.* from( " + sql + " ) ttttt2 ) where row_id between " + b_string + " and " + f_string;

if(sql_pre.equals(""))
comsql=sql_select + comsql;
else
comsql=sql_pre+comsql;
//return comsql;
}
private void SearchData() throws Exception
{
String s=comsql;
stm=con.prepareStatement(s);
rst=stm.executeQuery();
}

public int DoFenye()
{
try{
this.CountPage();
this.ComSql();
this.SearchData();
return 1;
}catch(Exception e)
{
System.out.println("Error in fenye:" + e.toString());
return 0;
}
}

public int DoFenyeCollection(String thedao)
{
try{
System.out.println(sql_count);
this.CountPage();

this.ComSql();
System.out.println(comsql);
result_c=Tool.Select(comsql,thedao,con,s_null);
return 1;
}catch(Exception e)
{
System.out.println("Error in fenye:" + e.toString());
return 0;
}
}
}





相關文章

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

Starter Package

SSD Cloud server and data transfer for only $2.50 a month

Get Started >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。