时间: 2021-07-31 作者:daque
在页面中,当检索的数据很多时,常常须要分页表露数据,并要实行翻页。
底下将经过少许例程来证明实行jsp页面翻页本领的实行。
开始,在jsp中,经过java servlet 来检索数据,而用jsp来挪用截止来表露。
所以,此本领可分为两个局部(依附联系):
1. 在效劳器端的servlet 中的实行
重心:
&将查问前提生存到session中,取session中的查问前提
&树立statement东西的maxrows(决定一页表露几何行数据)
&程序地经过实行sql语句查问数据,按maxrows 来检索一个maxrows的数据,
下一页再检索下一maxrows的数据,以该类推。
2. 在jsp中的表露实行
重心:
&表露maxrows条数据
&经过“下一页”按钮或超链再次挪用方才的servlet查问下一maxrows的数据
过程如图所示:
底下经过一个例程来证明(一个servlet步调和一个jsp步调):
l querymedicine java (药 querymedicine )
包袱药;
导出 javax.servlet.*;
导出 javax.servlet.http.*;
导出 java.io.*;
导出 java.util.*;
导出 java.sql.*;
导出 medicine.medicinelist;
导出 medicine.searchdata;
////////////////////////////////////////////////////
// 接---mutiquery.jsp页面,并从request中获得5条查问前提 ///
// 按前提查问方剂,并将截止存进session的“medicinelist”中。 ///
// 张乾 2000年3月15日 ///
////////////////////////////////////////////////////
大众的班 querymedicine 夸大 httpservlet {
个人的 dbconnectionmanager connmgr;
//初始化寰球的变量
大众的空的 init ( servletconfig 树立)扔 servletexception {
super.init(config);
connmgr = dbconnectionmanager.getinstance();
}
//========================处置 http get 乞求============================
大众的空的 doget ( httpservletrequest乞求 , httpservletresponse反馈) 扔 servletexception , ioexception {
报告 stmt=null;
贯穿阻碍= connmgr.getconnection("medicine");
即使(空的阻碍==){
response.sendredirect("/medicine/con_error.html");
偿还;
}
// ==================== 创造数据库statement =============================
试一试{
stmt=con.createstatement();
}
抓住(不同 e )
{
connmgr.freeconnection("medicine",con);
response.sendredirect("/medicine/stmt_error.html");
偿还;
}
//-------------------------------------------------------------
long all_count=0;//存满意前提的方剂总额
//===================从request中获得session======================
试一试{
httpsession聚会= request.getsession(false);
即使(空的聚会==){
connmgr.freeconnection("medicine",con);
response.sendredirect("/medicine/session_error.html");
偿还;
}
//-----------------------------------------------------------
//======从“下一页”提交来的参数博得前页结果一条数据的方剂源代码=======
串 ll_pos=request.getparameter("pos"); //即使pos=-1则表白要从新发端查
//----------------------------------------------------------
//=====================查问用的sql语句串==========================
绳sqlstatment=& quot ;采用 medicines.ypbm, medsmalltypes.zlmc, medsupertypes.clmc, medtypes.dlmc, medicines.ypm, medicines.zyyx, medicines.ypzy来自药, medsmalltypes , medsupertypes , medtypes在哪儿 medicines.ypbm>"+ll_pos+" 而且(( medsmalltypes.zlbm = medicines.zlbm )而且( medsupertypes.clbm = medicines.clbm ) 而且( medtypes.dlbm = medicines.dlbm )而且(( medicines.del_flag =0)& quot ;;
//-----------------------------------------------------
绳 zlbm;
绳 dlbm;
绳 clbm;
绳 zyyx;
绳 ypm;
searchdata slist=兴建 searchdata ();
同步(聚会){
slist=(searchdata)session.getattribute("searchlist");
}
if(ll_pos.equals("-1")){
//===表白不是由“下一页”过来要从新发端查数据==========
即使( slist ! =null ){
同步(聚会){
session.removeattribute("searchlist");
}
}
slist=兴建 searchdata ();
//=============从树立查问前提页面博得查问前提的参数===================
zlbm=request.getparameter("zlbm");
dlbm=request.getparameter("dlbm");
clbm=request.getparameter("clbm");
zyyx=request.getparameter("zyyx");
ypm=request.getparameter("ypm");
//------------------------------------------------------
//=================将查问前提参数经过vector存到session中==========
slist.setzlbm ( zlbm );
slist.setdlbm ( dlbm );
slist.setclbm ( clbm );
slist.setzyyx ( zyyx );
slist.setypm ( ypm );
同步(聚会){
session.setattribute (& quot ; searchlist & quot ;, slist );
}
//---------------------------------------------------------
}
//--------------------------------------------------------
其余
{
//============================掏出查问前提参数====================
即使( slist ! =null ){
zlbm=slist.getzlbm();
dlbm=slist.getdlbm();
clbm=slist.getclbm();
zyyx=slist.getzyyx();
ypm=slist.getypm();
}
其余{
即使( stmt ! =null ) stmt.close();
stmt.setmaxrows(0);
connmgr.freeconnection("medicine",con);
response.sendredirect("/medicine/session_error.html");
偿还;
}
//-------------------------------------------------
}
绳sql2=& quot ;采用数(*)来自药在哪儿del_flag=0& quot ;;
//=====================按照前提参数树立sql语句=======================
if(!(zlbm.trim().equals("0"))) {
sqlstatment+=(& quot ;而且( medicines.zlbm=''"+zlbm.trim()+"'' )& quot ;);
sql2+=(& quot ;和 zlbm=''"+zlbm.trim()+"''");
}
if(!(dlbm.trim().equals("0"))) {
sqlstatment+=(& quot ;而且( medicines.dlbm=''"+dlbm.trim()+"'' )& quot ;);
sql2+=(& quot ;和 dlbm=''"+dlbm.trim()+"''");
}
if(!(clbm.trim().equals("0"))) {
sqlstatment+=(& quot ;而且( medicines.clbm=''"+clbm.trim()+"'' )& quot ;);
sql2+=(& quot ;和 clbm=''"+clbm.trim()+"''");
}
if(!(zyyx.trim().length ()==0)){
sqlstatment+=(& quot ;而且(象 ''%"+zyyx.trim()+"%''一律的 medicines.zyyx )& quot ;);
sql2+=(象 ''%"+zyyx.trim()+"%''");一律的& quot ;和 zyyx
}
if(!(ypm.trim().length ()==0)){
sqlstatment+=(& quot ;而且(象 ''%"+ypm.trim()+"%''一律的 medicines.ypm )& quot ;);
sql2+=(象 ''%"+ypm.trim()+"%''");一律的& quot ;和 ypm
}
sqlstatment+=& quot ;))由 medicines.ypbm asc & quot ;;的吩咐
//-------------------------------------------------------------
矢量列表 =兴建矢量();
//================= 树立一页表露的数据条数(一次检索出的数据条数)===========
stmt.setmaxrows(25);
//----------------------------------------------------------------------
//===================实行查问将截止放到resultset中================
resultset rs = stmt.executequery(sqlstatment);
resultset rs2= stmt.executequery(sql2);
//------------------------------------------------
if(rs==null){ //即使没有查问截止数据
即使( stmt ! =null ) stmt.close();
stmt.setmaxrows(0);
connmgr.freeconnection("medicine",con);
response.sendredirect("/medicine/no_medicine.html");//定向到一个页面
偿还;
}
//====================将方剂消息填入数据东西共存入vector中================
if(rs2.next()){
all_count=rs2.getlong(1);//博得总条数
}
if(rs2!=null)rs2.close();
while(rs.next()){
medicinelist m =兴建 medicinelist ();
m.setypbm(rs.getint("ypbm"));
m.setzlmc(rs.getstring("zlmc"));
m.setclmc(rs.getstring("clmc"));
m.setdlmc(rs.getstring("dlmc"));
m.setypm(rs.getstring("ypm"));
m.setzyyx(rs.getstring("zyyx"));
m.setypzy(rs.getstring("ypzy"));
m.setclbm(clbm);
m.setdlbm(dlbm);
m.setzlbm(zlbm);
list.addelement(m);
}
//----------------------------------------------------------
if(rs!=null)rs.close();
stmt.setmaxrows(0);
if(stmt!=null)stmt.close();
connmgr.freeconnection("medicine",con);
//========================惠存session中===========================
同步(聚会){
session.setattribute("medicinelist",list);
}
//-----------------------------------------------
}抓住( sqlexception e ){
connmgr.freeconnection("medicine",con);
response.sendredirect("/medicine/sql_error.html");
偿还;}
//=======================重定向到一个jsp页面==========================
串 url="/medicine/querymedicine.jsp?all_count="+all_count;
servletcontext sc = getservletcontext ();
requestdispatcher rd = sc.getrequestdispatcher(url);
rd.forward(request,反馈);
//-------------------------------------------------------
}
大众的空妨害(){
// =================== 在servlet退出时中断数据库贯穿,废除statement东西
即使( connmgr ! =null ) connmgr.release();
//------------------------------------------------------------------------
}
//========================处置http post 乞求 ============================
大众的空的 dopost ( httpservletrequest乞求 , httpservletresponse反馈) 扔 servletexception , ioexception {
doget (乞求 ,反馈);
}
//==========================博得 servlet 消息 ============================
大众的绳 getservletinfo (){
回顾 "medicine.querymedicine消息& quot ;;
}
}
l querymedicine.jsp
<%@页面谈话=& quot ; java & quot ;session=& quot ;如实的& quot ; import="java.util.*, medicine.method, medicine.medicinelist"contenttype="text/html;charset=gbk" %>
<手笔谈话=& quot ; javascript & quot ;>
功效下一条 (){
var ls_pos=document.form2.maxpos.value;
document.location="/servlet/medicine.querymedicine?pos="+ls_pos;
}
功效精细( ypbm ){
document.location="/servlet/medicine.detail?ypbm="+ypbm;
}
</script>
<!--增添头-->
<div align="重心">
<body topmargin="0"leftmargin="10"rightmargin="10” bgcolor="#ffffff"> <div align="重心">
<重心>< iframe宽窄=760莫大=130 noresize scrolling=否 frameborder=0 marginheight=0marginwidth=0src=& quot ; ..\medicinetitle.html"></iframe>
</div>
<!--实行 -->
<title>商品列表</title>
<%
本领 md =兴建本领();
矢量 sklist;
同步(聚会){
sklist =(矢量) session.getattribute("medicinelist");
}
%>
<!----------------------------- 表露表头 -------------------------------->
<%
即使( sklist ==空的或 sklist.size() <=0)
{
response.sendredirect("/medicine/no_medicine.html");
偿还;
}
其余
{%>
<center>您好!以次是商品的列表,公有<font color=#ff0000> <%=request.getparameter("all_count")%></font>条适合前提的方剂消息
</center>
<div align="重心">
<重心>
<台子边境=& quot ;1& quot ;cellpadding=& quot ;0& quot ;cellspacing=& quot ;0& quot ;宽窄=& quot ;840& quot ; bordercolorlight="#ffffff"bordercolordark="#000000">
<tr bgcolor="#339933">
<td width=42 align="center"><font color="#339933"><b>明细</b></font></td>
<td width=160 align="center"><font color="#ffffff"><b>商品称呼</b></font></td>
<td width=52 align="center"><font color="#ffffff"><b>超类</b></font></td>
<td width=145 align="center"><font color="#ffffff"><b>大类</b></font></td>
<td width=145 align="center"><font color="#ffffff"><b>子类</b></font></td>
<td width=270 align="center"><font color="#ffffff"><b>刻画</b></font></td>
</tr>
<!------------------------------------------------------------------------------------------------------------------->
<%
medicinelist d=兴建 medicinelist ();
符合于 ( int索引=0;索引 < sklist.size();index++)
{
d = (medicinelist)sklist.elementat(index);
绳 lshref;
即使 (d.getypzy()==null或 d.getypzy().equals("http://")或 d.getypzy().equals(""))
{
lshref="";
}其余{
lshref=& quot ;<一 href="+d.getypzy()+">";
}
out.println("<form定名=表格1 method=post action=/servlet/medicine.detail?ypbm="+d.getypbm()+">");
out.println("<tr bgcolor=#f3f3e9>< td align=center ><字体 color=#000000巨细=2> <input type=submit name=submit1 value=明细></font></td><td align=center><font color=#000000 size=2>");
out.println(lshref+d.getypm()+"</a></font></td><td align=center ><字体 color=#000000巨细=2>& quot ;);
out.println(d.getclmc()+"</font></td><td align=center ><字体 color=#000000巨细=2>& quot ; +d.getdlmc()+"</font></td><td align=center ><字体 color=#000000巨细=2>& quot ;);
out.println(d.getzlmc()+"</font></td><td align=center ><字体 color=#000000巨细=2>& quot ; +md.notnull(d.getzyyx())+"</font></td></tr></form>");
out.flush();
}
%>
<表格定名=表格2id=表格2>
<输出典型=hidden定名=maxpos id=maxpos value=<%=d.getypbm()%>>
< /表格 >
<%
}
%>
</table>
<p></p>
<%
串 ssll=request.getparameter("all_count");
长的长的 temp=兴建 ( ssll );
长cou= temp.longvalue();
if(sklist.size()==25&&cou>25)
{%>
<input type=button value="下页"onclick="next(1);">
<%}%>
<%
同步(聚会){
if(session.getattribute("medicinelist")!=null){
session.removevalue("medicinelist");
}
}
%>
</center>
<p align="center"><input type="button"value="归来"name="b3"onclick="history.back()">
<br><br><br>
<!--增添底部 -->
<div align="重心">
<重心>< iframe宽窄=760莫大=140 noresize scrolling=否 frameborder=0 marginheight=0marginwidth=0src=& quot ; ..\bottom.html"></iframe>
</div>
<!--实行 -->