String sdocdate,sbankno,sbatchno,sitemno,sserialsno,sproof,samount,svchnum,ssubset,sacsynum,spicpt,sImageAddress,sImageAddressDir,sImageAddressFile;
String items_input_docdatebegin,items_input_docdateend; //这是从页面接收的查询条件
String items_input_moneybegin,items_input_moneyend,items_input_subset,items_input_accountno; //这是从页面接收的查询条件String sql;
boolean loginAttempt = false;
int iacsyno;
int rowcnt = 0;
int rowno = 0;int intPageSize; //一页显示的记录数
int intRowCount; //记录总数
int intPageCount; //总页数
int intPage; //待显示页码
String strPage; //请求的页码
int i; //循环控制参数
ResultSet rs; //返回数据集 boolean firstCondition=true;loginAttempt = true; strPage = request.getParameter("page"); //取得请求显示的页码
if (loginAttempt)
{
//取得页面上的查询条件
items_input_docdatebegin= (String)request.getParameter("textfield2")+(String)request.getParameter("textfield3")+(String)request.getParameter("textfield4");
items_input_docdateend=(String)request.getParameter("textfield22")+(String)request.getParameter("textfield32")+(String)request.getParameter("textfield42");
items_input_moneybegin = (String)request.getParameter("textmoney1");
items_input_moneyend = (String)request.getParameter("textmoney2");
items_input_subset=(String)request.getParameter("textsubset");
items_input_accountno=(String)request.getParameter("textaccountno"); //下面含有复合查询语句,麻烦就在这
sql="select v.DocDate DocDate1,v.BankNo BankNo1,v.BatchNo BatchNo1,v.ItemNo ItemNo1,v.SerialsNo SerialNo1,v.Proof Proof1,v.Amount Amount1,v.VchNum VchNum1,v.Subset Subset1,v.AcsyNum AcsyNum1,p.PicPt PicPt1,p.AcsyNo AcsyNo1,p.ReceiptNo ReceiptNo1,p.WritedCD ,p.HDPath,p.CDPath,p.PicVolume,p.IdxDir IdxDir1,p.fName fName1 ,p.bName bName1 from VchRecords v,PicInfs p";
if (!items_input_docdatebegin.trim().equalsIgnoreCase(""))
{
if (firstCondition)
{
firstCondition=false;
sql=sql+" where v.DocDate>='"+items_input_docdatebegin+"'";
}
else
{
sql=sql+" and v.DocDate>='"+items_input_docdatebegin+"'";
}
}
if (!items_input_docdateend.trim().equalsIgnoreCase(""))
{
if (firstCondition)
{
firstCondition=false;
sql=sql+" where v.DocDate<='"+items_input_docdateend+"'";
}
else
{
sql=sql+" and v.DocDate<='"+items_input_docdateend+"'";
}
}
if (!items_input_moneybegin.trim().equalsIgnoreCase(""))
{
if (firstCondition)
{
firstCondition=false;
sql=sql+" where v.Amount>=$"+items_input_moneybegin;
}
else
{
sql=sql+" and v.Amount>=$"+items_input_moneybegin;
}
}
if (!items_input_moneyend.trim().equalsIgnoreCase(""))
{
if (firstCondition)
{
firstCondition=false;
sql=sql+" where v.Amount<=$"+items_input_moneyend;
}
else
{
sql=sql+" and v.Amount<=$"+items_input_moneyend;
}
}
if (!items_input_subset.trim().equalsIgnoreCase(""))
{
if (firstCondition)
{
firstCondition=false;
sql=sql+" where Subset='"+items_input_subset+"'";
}
else
{
sql=sql+" and Subset='"+items_input_subset+"'";
}
}
if (firstCondition)
{
firstCondition=false;
sql=sql+" where v.DocDate = p.DocDate and v.BankNo = p.BankNo and v.BatchNo=p.BatchNo and v.PicPt = p.PicPt and v.AcsyNum=p.AcsyNo and p.AcsyNo=0 order by v.RecordID";
}
else
{
sql=sql+" and v.DocDate = p.DocDate and v.BankNo = p.BankNo and v.BatchNo=p.BatchNo and v.PicPt = p.PicPt and v.AcsyNum=p.AcsyNo and p.AcsyNo=0 order by v.RecordID";
}
//设置一页显示的记录数
intPageSize = 1; //默认为10条记录 //取得待显示页码
//strPage = request.getParameter("page"); if(strPage == null)
{
intPage = 1;
}
else
{//将字符串转换成整型
intPage = Integer.parseInt(strPage);
if(intPage < 1)
intPage = 1;
}
rs = sqlbean.executeQuery(sql);
//0325 modified 分页功能修改 yjb
//获取记录总数
rs.last();
intRowCount = rs.getRow(); //记算总页数
intPageCount = (intRowCount+intPageSize-1) / intPageSize; //调整待显示的页码
if(intPage>intPageCount) intPage = intPageCount;
if(intPageCount>0)
{
rs.absolute((intPage-1) * intPageSize + 1);
i = 0;
while(i<intPageSize && !rs.isAfterLast())
{
sdocdate= rs.getString("DocDate1");
sbankno= rs.getString("BankNo1");
sbatchno= rs.getString("BatchNo1");
sitemno= rs.getString("ItemNo1");
sserialsno= rs.getString("SerialNo1");
sproof= rs.getString("Proof1");
samount= rs.getString("Amount1");
svchnum= rs.getString("VchNum1");
ssubset= rs.getString("Subset1");
sacsynum= rs.getString("AcsyNum1");
spicpt= rs.getString("Picpt1");
sImageAddressDir= rs.getString("IdxDir1");
sImageAddressFile=rs.getString("fName1");
rowno = rs.getRow();
%>
<tr onclick=setbg(this)>
<td width="180">
<div align="center"><%=sdocdate%></div></td>
<td width="50">
<div align="center"><%=sbankno%></div></td>
<td width="50">
<div align="center"><%=sitemno%></div></td>
<td width="50">
<div align="center"><%=samount%></div></td>
<td width="50">
<div align="center"><%=ssubset%></div></td>
<%
if (!sImageAddressFile.trim().equalsIgnoreCase("") && !sImageAddressDir.trim().equalsIgnoreCase("") )
{
sImageAddress = sImageAddressDir+sImageAddressFile;
sImageAddress = replaceStr(sImageAddress,"\\","_______");
%>
<td width="112" align="center">
<a href="javascript:showIt('\showImg.jsp?imageaddress=<%=sImageAddress%>&docdate=<%=sdocdate%>&bankno=<%=sbankno%>&itemno=<%=sitemno%>&amount=<%=samount%>&subset=<%=ssubset%>','查询结果<%=rowno%>')">显示图片</a>
</td>
<%
}
else
{
sImageAddress = "无相应图片";%>
<td width="112" align="center"><%=sImageAddress%></a>
</td>
<% }
%>
</tr> <%
rs.next();
i++;
} %>
</TBODY>
</table>
第<%=intPage%>页 共<%=intPageCount%>页
<%
out.print(intPage);
if(intPage<intPageCount)
{
%>
<a href="testpage.jsp?page=<%=intPage+1%>">下一页</a>
<%
}
%>
<%
if(intPage>1)
{
%>
<a href="testpage.jsp?page=<%=intPage-1%>">上一页</a>
<%
}
%>
<%
//关闭结果集
sqlRst.close();
</center></div>
<%@include file="newFoot.inc"%>
String items_input_docdatebegin,items_input_docdateend; //这是从页面接收的查询条件
String items_input_moneybegin,items_input_moneyend,items_input_subset,items_input_accountno; //这是从页面接收的查询条件String sql;
boolean loginAttempt = false;
int iacsyno;
int rowcnt = 0;
int rowno = 0;int intPageSize; //一页显示的记录数
int intRowCount; //记录总数
int intPageCount; //总页数
int intPage; //待显示页码
String strPage; //请求的页码
int i; //循环控制参数
ResultSet rs; //返回数据集 boolean firstCondition=true;loginAttempt = true; strPage = request.getParameter("page"); //取得请求显示的页码
if (loginAttempt)
{
//取得页面上的查询条件
items_input_docdatebegin= (String)request.getParameter("textfield2")+(String)request.getParameter("textfield3")+(String)request.getParameter("textfield4");
items_input_docdateend=(String)request.getParameter("textfield22")+(String)request.getParameter("textfield32")+(String)request.getParameter("textfield42");
items_input_moneybegin = (String)request.getParameter("textmoney1");
items_input_moneyend = (String)request.getParameter("textmoney2");
items_input_subset=(String)request.getParameter("textsubset");
items_input_accountno=(String)request.getParameter("textaccountno"); //下面含有复合查询语句,麻烦就在这
sql="select v.DocDate DocDate1,v.BankNo BankNo1,v.BatchNo BatchNo1,v.ItemNo ItemNo1,v.SerialsNo SerialNo1,v.Proof Proof1,v.Amount Amount1,v.VchNum VchNum1,v.Subset Subset1,v.AcsyNum AcsyNum1,p.PicPt PicPt1,p.AcsyNo AcsyNo1,p.ReceiptNo ReceiptNo1,p.WritedCD ,p.HDPath,p.CDPath,p.PicVolume,p.IdxDir IdxDir1,p.fName fName1 ,p.bName bName1 from VchRecords v,PicInfs p";
if (!items_input_docdatebegin.trim().equalsIgnoreCase(""))
{
if (firstCondition)
{
firstCondition=false;
sql=sql+" where v.DocDate>='"+items_input_docdatebegin+"'";
}
else
{
sql=sql+" and v.DocDate>='"+items_input_docdatebegin+"'";
}
}
if (!items_input_docdateend.trim().equalsIgnoreCase(""))
{
if (firstCondition)
{
firstCondition=false;
sql=sql+" where v.DocDate<='"+items_input_docdateend+"'";
}
else
{
sql=sql+" and v.DocDate<='"+items_input_docdateend+"'";
}
}
if (!items_input_moneybegin.trim().equalsIgnoreCase(""))
{
if (firstCondition)
{
firstCondition=false;
sql=sql+" where v.Amount>=$"+items_input_moneybegin;
}
else
{
sql=sql+" and v.Amount>=$"+items_input_moneybegin;
}
}
if (!items_input_moneyend.trim().equalsIgnoreCase(""))
{
if (firstCondition)
{
firstCondition=false;
sql=sql+" where v.Amount<=$"+items_input_moneyend;
}
else
{
sql=sql+" and v.Amount<=$"+items_input_moneyend;
}
}
if (!items_input_subset.trim().equalsIgnoreCase(""))
{
if (firstCondition)
{
firstCondition=false;
sql=sql+" where Subset='"+items_input_subset+"'";
}
else
{
sql=sql+" and Subset='"+items_input_subset+"'";
}
}
if (firstCondition)
{
firstCondition=false;
sql=sql+" where v.DocDate = p.DocDate and v.BankNo = p.BankNo and v.BatchNo=p.BatchNo and v.PicPt = p.PicPt and v.AcsyNum=p.AcsyNo and p.AcsyNo=0 order by v.RecordID";
}
else
{
sql=sql+" and v.DocDate = p.DocDate and v.BankNo = p.BankNo and v.BatchNo=p.BatchNo and v.PicPt = p.PicPt and v.AcsyNum=p.AcsyNo and p.AcsyNo=0 order by v.RecordID";
}
//设置一页显示的记录数
intPageSize = 1; //默认为10条记录 //取得待显示页码
//strPage = request.getParameter("page"); if(strPage == null)
{
intPage = 1;
}
else
{//将字符串转换成整型
intPage = Integer.parseInt(strPage);
if(intPage < 1)
intPage = 1;
}
rs = sqlbean.executeQuery(sql);
//0325 modified 分页功能修改 yjb
//获取记录总数
rs.last();
intRowCount = rs.getRow(); //记算总页数
intPageCount = (intRowCount+intPageSize-1) / intPageSize; //调整待显示的页码
if(intPage>intPageCount) intPage = intPageCount;
if(intPageCount>0)
{
rs.absolute((intPage-1) * intPageSize + 1);
i = 0;
while(i<intPageSize && !rs.isAfterLast())
{
sdocdate= rs.getString("DocDate1");
sbankno= rs.getString("BankNo1");
sbatchno= rs.getString("BatchNo1");
sitemno= rs.getString("ItemNo1");
sserialsno= rs.getString("SerialNo1");
sproof= rs.getString("Proof1");
samount= rs.getString("Amount1");
svchnum= rs.getString("VchNum1");
ssubset= rs.getString("Subset1");
sacsynum= rs.getString("AcsyNum1");
spicpt= rs.getString("Picpt1");
sImageAddressDir= rs.getString("IdxDir1");
sImageAddressFile=rs.getString("fName1");
rowno = rs.getRow();
%>
<tr onclick=setbg(this)>
<td width="180">
<div align="center"><%=sdocdate%></div></td>
<td width="50">
<div align="center"><%=sbankno%></div></td>
<td width="50">
<div align="center"><%=sitemno%></div></td>
<td width="50">
<div align="center"><%=samount%></div></td>
<td width="50">
<div align="center"><%=ssubset%></div></td>
<%
if (!sImageAddressFile.trim().equalsIgnoreCase("") && !sImageAddressDir.trim().equalsIgnoreCase("") )
{
sImageAddress = sImageAddressDir+sImageAddressFile;
sImageAddress = replaceStr(sImageAddress,"\\","_______");
%>
<td width="112" align="center">
<a href="javascript:showIt('\showImg.jsp?imageaddress=<%=sImageAddress%>&docdate=<%=sdocdate%>&bankno=<%=sbankno%>&itemno=<%=sitemno%>&amount=<%=samount%>&subset=<%=ssubset%>','查询结果<%=rowno%>')">显示图片</a>
</td>
<%
}
else
{
sImageAddress = "无相应图片";%>
<td width="112" align="center"><%=sImageAddress%></a>
</td>
<% }
%>
</tr> <%
rs.next();
i++;
} %>
</TBODY>
</table>
第<%=intPage%>页 共<%=intPageCount%>页
<%
out.print(intPage);
if(intPage<intPageCount)
{
%>
<a href="testpage.jsp?page=<%=intPage+1%>">下一页</a>
<%
}
%>
<%
if(intPage>1)
{
%>
<a href="testpage.jsp?page=<%=intPage-1%>">上一页</a>
<%
}
%>
<%
//关闭结果集
sqlRst.close();
</center></div>
<%@include file="newFoot.inc"%>
我是这么做的:
我将所有查询条件都放在url中,在翻页时,利用javascript将url做一些小的改动,以下是我的一个javascript函数,主要的是其中我标记的一句:
function TurnToXPage(a)
{
if (parent.rightFrame.form1)
{
if (!parent.rightFrame.form1.PageCount)
{alert(" 浏览页面没载入完成,请重试!");return false;}
}
else
{
alert(" 浏览页面没载入完成,请重试!"); return false;
} var mystring=new String(parent.rightFrame.location);
mystring=mystring.toUpperCase();
a=a.toUpperCase();
if (mystring.indexOf("NODEID=")==-1 && mystring.indexOf("PAGENO=")==-1)
{alert("当前的页面不能翻页,请选择资源范围!");return false;}
else
{ var pagenum=1;
var CurrentPage=parseInt(parent.rightFrame.form1.PageNo.value);
var TotalPage=parseInt(parent.rightFrame.form1.PageCount.value);
if (TotalPage=="0")
{
alert("仅有一页!");return false;
}
switch(a)
{
case "N":
if (CurrentPage<TotalPage)
{ pagenum=CurrentPage+1;
}
else
{ alert("已经是最后一页了!");return false;}
break;
case "L":
if (CurrentPage==TotalPage)
{alert("已经是最后一页了!");return false;}
else
pagenum=TotalPage;
break;
case "F":
if (CurrentPage<2 )
{alert("已经是第一页了!");return false;}
else
pagenum=1;
break;
case "P":
if (CurrentPage>1)
{ pagenum=CurrentPage-1;}
else
{ alert("已经是第一页了!");return false;}
break;
default:
alert("翻页参数错误!(TurnToXPage:a="+a+")");
return false;
}
mystring=mystring.replace("PAGENO="+CurrentPage,"PAGENO="+pagenum);
这句就是你要的解决方法:用新的页码数代替原来的页码数 //alert(mystring)
if (mystring.search("TFLAG=1")!=-1){
mystring=mystring.replace("TFLAG=1","TFLAG=0");
}else if (mystring.search("TFLAG=0")==-1)
{
mystring = mystring+"&TFLAG=0"
}
var FolderC=parent.TypeFrame.form1.FolderC.value
var RecordC=parent.TypeFrame.form1.RecordC.value
if (mystring.search("FOLDERC=")==-1)
{
mystring = mystring+"&FolderC="+FolderC+"&RecordC="+RecordC
}
//alert(mystring)
parent.rightFrame.location=mystring;
}
}看看可以帮你不
比如:
有两个输入框分别是:txta,txtb
在使用查询时:String a = reqeust.getParameter("txta");String b = request.getParameter("txtb");
然后在生成“上一页”的时候用
test.jsp?txta=<%=a%>&txtb=<%=b%>&page=...
不就可以了吗
只要你提交查询的时候将信息跟在url上,以后分页的时候都取location,然后替换页码,就一切轻松搞定,就是上面的js
1.将sql语句生成后作为一个参数传递.
2.如果参数太多都放在后面太麻烦,比如我做的系统还要排序,排序还有正序和倒序等,我在页面上加了一些<input type=hidden>把这些值放在里面,翻页时将form提交
String a = reqeust.getParameter("txta");
String b = request.getParameter("txtb");
**** 开始的时候在上个页面query.jsp中点击"查询"后,可以取到a,b的值,但在这个页面中点击"下一页"的时候,a,b的值为空,根本取不到!!!
" test.jsp?txta=<%=a%>&txtb=<%=b%>&page=... "
我是这么带参数进去的.请问是为什么??
items_input_docdatebegin= (String)request.getParameter("textfield2")+(String)request.getParameter("textfield3")+(String)request.getParameter("textfield4");
items_input_docdateend=(String)request.getParameter("textfield22")+(String)request.getParameter("textfield32")+(String)request.getParameter("textfield42");
items_input_moneybegin = (String)request.getParameter("textmoney1");
items_input_moneyend = (String)request.getParameter("textmoney2");
items_input_subset=(String)request.getParameter("textsubset");
items_input_accountno=(String)request.getParameter("textaccountno");点击上一页,下一页的时候,取值都是空值,为什么????
就是这个地方你应该是这样:
<a href="jdbc20-oracle.jsp?page=<%=intPage+1%>&textfield2=<%=request.getParameter("textfield2")%>&textfield3=<%request.getParameter("textfield3")%>&.....">下一页</a>
说来听听。
在jsp中直接写代码也就限制了你要在jsp中直接操作结果集。
java该用的比较精华的东西都不去用。
.......
还有很多在此不一一说明了。
jsp中越清晰越好,这个我同意,我还用taglib写过呢,不过这应该跟用什么方法分页应该没有什么关系吧。关于Connection不能关闭,我不同意呢,一次request后调用完这个页面后,我想connection应该就可以释放了吧,当然我想你释放到连接池就可以了。是不是看struts及jive看太多了。不是什么都一定要这样的,要看是不是适合呢。
在jsp文件中通过setter方法来改变bean中的属性来完成整个操作。
而且这和把connection释放到什么地方没有关系。有特定的应用连接是不要关闭的呢,因为得到一个连接要花费的资源也是很可观的。 是可以把一个连接给另一个操作用的。taglib 是好东西,但我说的还用不到呢,因为没有必要!jsp中的代码不多!
今天我看书发现和xmpp(火狐狸)讲的雷同的一个分页方法,我把思路也说说:1.使用一个javabean类来记录分页page的各个属性,如下:
public class page
{
public int pageCount ; // 一共有多少页
public int recordCount; // 查询的记录条总数
public int pageId ; // 将要显示的页码
public int pageSize; // 每页规定的显示记录条数
}
2.然后在jsp里面利用Vector 创建一个数组
Vector idList=net Vector();
.......
......
......
然后把各个属性值填进去.
3.在每次分页的时候,从session里面取出idList里面的pageId来作为开始的记录号,顺序取出记录数就ok了.
见<jsp程序设计精彩百例>ps:大家都是同行,讨论问题只是为了更好解决问题,却勿大火气 :)
再开一贴散分