欢迎光临
我们一直在努力

在jsp页面中实现检索数据的分页显示_jsp技巧

建站超值云服务器,限时71元/月

    在页面中,当检索的数据很多时,通常需要分页显示数据,并要实现翻页。


下面将通过一些例程来说明实现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>


<!–完成 –>

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 在jsp页面中实现检索数据的分页显示_jsp技巧
分享到: 更多 (0)

相关推荐

  • 暂无文章