import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.List;import javax.servlet.http.HttpServletRequest;import cn.invix.struts.database.OperateDbNew;public class PageManage {

OperateDbNew dbOperation = new OperateDbNew();
private int nTotal = 0; //查询总数量 

/**
 * 查询总数量
 * @return nTotal 返回总数量
 */
public int getTotal(){
return nTotal;


/**
 * 分页查询。
 * @param strSQL 查询的SQL语句
 * @param strPage 查询的页数
 * @param strPageSize 一页中要显示的记录数
 * @return rs 返回分页查询的结果集
 */

public List pageSelect(Connection conn, String strSQL,int nPage,int nPageSize){
String strSql = "";
PreparedStatement stmt = null;
ResultSet rs = null;
this.nTotal = 0;
List list = null;
try{
//求查询结果的数量
//int nPos = strSQL.toLowerCase().indexOf("from");
String strSqlCount = "select count(*) from("+strSQL+")";

stmt = conn.prepareStatement(strSqlCount);
rs = stmt.executeQuery();
if(rs.next()){
this.nTotal = rs.getInt(1);
}
rs.close();
stmt.close();
//查询的具体内容
int nFirstRecord = (nPage-1) * nPageSize+1; //第一条记录
int nLastRecord = nPage * nPageSize; //最后一条记录
strSql = "select * from (select t.* ,rownum mynum from ("+
 strSQL+" ) t) where mynum between "+
 Integer.toString(nFirstRecord) +
 " and "+ Integer.toString(nLastRecord);

list = dbOperation.getResultList(conn,strSql);
} catch (Exception e) {
e.printStackTrace();
}
return list;
}

/**
 * 
 * @param strUrl
 * @param strId
 * @param iTotleNum
 * @param curPage
 * @param pageCount
 * @return
 */
public String pageInfor(String strUrl, String strId, int iTotleNum,int curPage,int pageCount){
int totalPage = iTotleNum % pageCount == 0 ? (iTotleNum/pageCount):(iTotleNum/pageCount+1);
int[] intPageArr = new int[3];
intPageArr[0] = iTotleNum;
intPageArr[1] = totalPage;
intPageArr[2] = curPage;
return this.pageInfor(strUrl,strId,intPageArr);
}

/**
 * 
 * @param strUrl
 * @param strId
 * @param pageArr
 * @return
 */
public String pageInfor(String strUrl, String strId, int pageArr[])
    {
        String pageinfor = "";
        int maxCount = 0;
        int totalPage = 0;
        int curPage = 0;
        int pageBegin = 0;
        int pageEnd = 0;
        maxCount = pageArr[0];
        totalPage = pageArr[1];
        curPage = pageArr[2];
        if(curPage - 3 > 0)
            pageBegin = curPage - 3;
        else
            pageBegin = 1;
        if(curPage + 3 < totalPage)
            pageEnd = curPage + 3;
        else
            pageEnd = totalPage;
        pageinfor = "总共 " + maxCount + " 项 " + totalPage + "页  当前是第 " + curPage + " 页";
        if(curPage <= 1)
            pageinfor = pageinfor + " 首页 | 上一页 |";
        else
            pageinfor = pageinfor + "<a href=" + strUrl + "?" + "id=" + strId + "&" + "page=1" + "> 首页</a> | <a href=" + strUrl + "?" + "id=" + strId + "&" + "page=" + (curPage - 1) + "> 上一页 </a>| ";
        for(; pageBegin <= pageEnd; pageBegin++)
            if(pageBegin == curPage)
                pageinfor = pageinfor + " " + pageBegin + " ";
            else
                pageinfor = pageinfor + "<a href=" + strUrl + "?" + "id=" + strId + "&" + "page=" + pageBegin + "> " + pageBegin + " </a>";        if(curPage == totalPage)
            pageinfor = pageinfor + "|下一页 | 末页";
        else
            pageinfor = pageinfor + " |<a href=" + strUrl + "?" + "id=" + strId + "&" + "page=" + (curPage + 1) + "> 下一页</a> | <a href=" + strUrl + "?id=" + strId + "&page=" + totalPage + ">末页</a> ";
        return pageinfor;
    }

/**
 * 得到当前页数
 * 
 * @param request
 * 
 * */
public int getCurPage(HttpServletRequest request){
//当前页数
int curPage = 1;
String strCurPage = request.getParameter("page"); 
if(strCurPage != null && !strCurPage.equals(""))
{
curPage = Integer.parseInt(strCurPage);
}
return curPage;
}


public static void main(String[] args) {
}
}