之前在作完完电视台短信参与的业务后,随便写了个后台,为了应急,叫那边暂时先用.之后用户参与比较多,就对用户参与进行分页. 前面写的也面是全部把数据掉出来,好浪费时间.昨天进行优化,看书上的例子,需要写几个bean,好麻烦,我只是想在自己以前的程序上进行修改.
实现方法,对原来的也面不进行修改,只是对bean中获取记录集的方法参数进行设置,从页面把参数设置好,传到bean里面,每次就掉一页的数据,速度挺快的.昨天晚上已经把三亚的后台高定.
<%
//获得这次查询的总条数
int totalRow;
totalRow=optvuser.getTVUserPageByTime(bgtime,edtime,phonenum);
int intPage; //当前页数
int intPageCount; //一共有多少页
int PageSize = 10;
intPageCount=(totalRow+PageSize-1)/PageSize;
//对当前的页数进行规范
String strPage = request.getParameter("page");
if(strPage==null){
intPage = 1;
} else{
intPage = java.lang.Integer.parseInt(strPage);
if(intPage<1) intPage = 1;
if (intPage>intPageCount)
intPage=intPageCount;
}
--------------------------下面是提示的FORM
<table width="100%" border="0" cellspacing="0" cellpadding="0" align="center">
<%
out.print("<tr bgcolor=#EBEBEB><td>");
if(intPage>intPageCount)
intPage=intPageCount;
if(intPage<1)
intPage=1;
out.print("<form method='post' action='searchTVUserMO_do.jsp?bgtime="+bgtime+"&&edtime="+edtime+"&&phonenum="+phonenum+"'>");
if(intPage<2)
out.print("首页 上一页 ");
else{
out.print("<a href='searchTVUserMO_do.jsp?page=1&&bgtime="+bgtime+"&&edtime="+edtime+"&&phonenum="+phonenum+"'>首页</a> ");
out.print("<a href='searchTVUserMO_do.jsp?page="+(intPage-1)+"&&bgtime="+bgtime+"&&edtime="+edtime+"&&phonenum="+phonenum+"'>上一页</a> ");
}
if(intPage-intPageCount>=0)
out.print("下一页 尾页");
else{
out.print("<a href='searchTVUserMO_do.jsp?page="+(intPage+1)+"&&bgtime="+bgtime+"&&edtime="+edtime+"&&phonenum="+phonenum+"'>下一页</a> <a href='searchTVUserMO_do.jsp?page="+intPageCount+"&&bgtime="+bgtime+"&&edtime="+edtime+"&&phonenum="+phonenum+"'>尾页</a>");
}
out.print(" 页次:"+intPage+"/"+intPageCount+"页");
out.print(" 共"+totalRow+"条");
out.print("转到第<input type='text' name='page' size=2 maxlength=10 class=smallInput value="+intPage+">");
//session.setAttribute("edtime",edtime);
//session.setAttribute("edtime",edtime);
out.print("页<input class=buttonface type='submit' value='GO' name='cndok'></form>");
out.print("</td>");
out.print("</tr>");
%>
</table>
----------------------------------------------
其中在bean里面处理一次要调用的数据的语句.
public Collection getTVUserPageMSGByTime(String bgtime,String edtime,String phonenum,int pagesize,int nowpage)throws Exception
{
Statement stmt=con.createStatement();
ResultSet rst=stmt.executeQuery("select top "+pagesize+" * from tb_content_TVSM where SubmitTime in (select top " +pagesize*nowpage+" SubmitTime from tb_content_TVSM order by SubmitTime ) and " +
" SubmitTime>='"+bgtime+"' and SubmitTime<='"+edtime+"' and Mobile like '"+phonenum+"%' order by Submittime desc");
Collection ret=new ArrayList();
while(rst.next())
{
TVUser temp=new TVUser();
temp.setuserphone(rst.getString("Mobile"));
temp.setuserid(rst.getInt("User_ID"));
temp.setsubmittime(rst.getString("SubmitTime"));
temp.setasw(rst.getString("Answer"));
temp.setcorrect(rst.getString("Correct"));
ret.add(temp);
}
con.close();
return ret;
}
----------------------------------------
select top "+pagesize+" * from tb_content_TVSM where SubmitTime in (select top " +pagesize*nowpage+" SubmitTime from tb_content_TVSM order by SubmitTime ) and " +
" SubmitTime>='"+bgtime+"' and SubmitTime<='"+edtime+"' and Mobile like '"+phonenum+"%' order by Submittime desc
这条语句虽然比较简单,但是在以后工作对用户进行分群,就比较容易了,在以前都是将用户的手机号码导出来,然后在进行分,最后在导如,好麻烦.
其他的分页方法用存储过程,等其他办法都很容易实现的.