网站建设| 数据库类| 图形图象| 程序设计| 现代办公| 操作系统| 考试认证| 网络技术| 软件工程| 电脑相关| 文学作品
网站开发| 网页制作| 操作系统| 图象图形| 考试认证| 数据库类| 程序设计| 硬件技术| 现代办公| 网络技术| 笑话频道
 
您的位置: 电脑书库首页-> 电脑文摘-> 网站开发-> JSP技术-> 在JSP页面中实现检索数据的分页显示

在JSP页面中实现检索数据的分页显示
作者:佚名 来源:InterNet 加入时间:2005-3-25
相关文章
  • jsp连接数据库大全
  • Jsp如何实现网页的重定向
  • 编写线程安全的JSP程序
  • 用缓冲技术提高JSP应用的性能和稳定性
  • Jsp结合XML+XSLT将输出转换为Html格式
  • JSP数据库连接池的必要性
  • 在jsp中作HTTP认证的方法
  • JSP通过JDBC与Oracle相连
  • html与jsp开发分离技术
  • 通过Jsp发送动态图像
  • 相关书籍:
  • JSP数据库开发实例精粹
  • JSP软件工程案例精解
  • JSP语法
  • JSP数据库编程指南
  • JSP由浅入深
  • 在页面中,当检索的数据很多时,通常需要分页显示数据,并要实现翻页。

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

    <!--完成 -->


    [文章录入员:nancy]

    相关文章
  • jsp连接数据库大全
  • Jsp如何实现网页的重定向
  • 编写线程安全的JSP程序
  • 用缓冲技术提高JSP应用的性能和稳定性
  • Jsp结合XML+XSLT将输出转换为Html格式
  • JSP数据库连接池的必要性
  • 在jsp中作HTTP认证的方法
  • JSP通过JDBC与Oracle相连
  • html与jsp开发分离技术
  • 通过Jsp发送动态图像
  • 相关书籍:
  • JSP数据库开发实例精粹
  • JSP软件工程案例精解
  • JSP语法
  • JSP数据库编程指南
  • JSP由浅入深
  • 本站推荐内容

    近期主机类热搜关键词:
    美国服务器 美国服务器租用 海外服务器租用 国外服务器租用

    JSP技术
    ASP/ASP.NET
    PHP技术
    JSP技术
    XML技术
    CGI/PERL
    WEB服务器
    WordPress专题
    其它
    电脑教程阅读排行
    ·几个常见的关于日期的问题
    ·WebLogic的初步研究(1)...
    ·WebLogic的初步研究(2)...
    ·新手入门经典:Jsp环境配置
    ·JSP动态输出Excel及中文乱...
    ·jsp基础学习资料
    ·MySQL实现分页JSP+JAV...
    ·jsp连接数据库大全
    ·Tomcat4.01全攻略
    ·JSP的安装、启动及简单示例