在J页面中实现检索数据的分页显示_JSP技巧_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

在J页面中实现检索数据的分页显示

作者:黑客防线网安JSP教程基地 来源:黑客防线网安JSP教程基地 浏览次数:0

本篇关键词:显示数据检索实现
黑客防线网安网讯:      在页面中,当检索的数据很多时,通常需要分页显示数据,并要实现翻页。   下面将通过一些例程来说明实现JSP页面翻页技术的实现。   首先,在JSP中,通过JAVA servlet 来检索数据...

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

  下面将通过一些例程来说明实现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 ; ..ottom.html"></iframe>

  </div>

  <!--完成 -->

    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-16446-1.html
网站维护教程更新时间:2012-04-07 00:21:34  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer