`
ericslegend
  • 浏览: 86993 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JSTL带参数查询分页方法

    博客分类:
  • Java
阅读更多

转自:http://blog.csdn.net/wallimn/archive/2008/04/05/2252873.aspx

 

JSP中,使用JSTL分页,效率高与不高我们姑且不论,还是相对简单一点。网上相应的文章也很多,但是很少有比较好的处理地址栏参数(也就是查询参数)的方案。有人使用session来保存查询参数,应该算不上是个好办法。

  本文介绍一种方法,使用javascript分析地址栏参数,使用正则表达式处理页码指示数字的变化。可以达到一种简单而能用的效果。

  下面是一个示例页面,因为没有数据库,它并不能运行,感兴趣的人,请花点时间看一下代码,很简单,并有适量的注释,相信应该不难理解。

 

<%@ page import="java.util.Date" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";


    //--==分页变量初始化==--
     Integer rowspp = Integer.valueOf(11); //每页行数
     request.setAttribute("rowspp",rowspp);//每页行数     
     String pageindex = request.getParameter("page");
     //System.out.println(pageindex);
     
     //当前页码,默认为0
     if(pageindex==null)pageindex="0";
     request.setAttribute("pageindex",pageindex);//在页面里使用这个变量,防止用户没有传递个为值出错
    //--==分页变量初始化==--
     
    String selectSql = "select * from GSP where 1=1 ";
    String countSql = " select count(*) as c from GSP where 1=1 ";
    
    //拼接查询条件
    String where = "";
    String value = request.getParameter("name");    
    if(value!=null && !"".equals(value)){
        where+=" and name like '%"+value+"%' ";
    }
    
    value = request.getParameter("county");    
    if(value!=null && !"".equals(value)){
        where+=" and county like '%"+value+"%' ";
    }
    
    value = request.getParameter("scope");    
    if(value!=null && !"".equals(value)){
        where+=" and scope like '%"+value+"%' ";
    }

     request.setAttribute("selectSql",selectSql+where);
     request.setAttribute("countSql",countSql+where);
 %>
 <sql:query var="countresults" sql = "${countSql}"/>
 <c:set value="${countresults.rows[0].c}" var="rowcount"/>
 <c:set value="${rowcount % rowspp==0?(rowcount/rowspp+1):(rowcount/rowspp)}" var="pagecount"/>
 <sql:query var="results" sql="${selectSql}" startRow="${rowspp*pageindex}" maxRows="${rowspp}"></sql:query>
<%--功能:通过jstl实现数据带条件查询,结果分页显示--%>
<%--特点:比较简单,分页机制可以通用--%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <base href="<%=basePath%>"/>    
    <title>单位查询结果显示页面</title>    
    <script type="text/javascript">...
        function pagechange(index)...{
            var url = document.location;//原始的地址
            //使用正则达式,假定当前页参数在最后一个,且形如page=4
            var regExp = /(S*page=)(S*)/;
            var arr = regExp.exec(url);//使用正则表达式分析页面的地址,使用分析结果调整页码
            if(arr==null)url = url+"&page="+index;
            else url = arr[1]+index;
            //alert(url);
            window.location = url;
        }
    </script>
  </head>  
  <body>
      <center>总记录数:${rowcount};页数:${pagecount},当前页:${pageindex+1}
    <a href="javascript:pagechange(0)" title="首页">&lt;&lt;</a>&nbsp;&nbsp;
    <c:if test="${pageindex > 0}">
    <a href="javascript:pagechange(${pageindex-1})" title="前一页">&lt;</a>&nbsp;&nbsp;
    </c:if>
    <c:if test="${(pageindex+0) < (pagecount-1)}">
    <a href="javascript:pagechange(${pageindex+1})" title="下一页">&gt;</a>&nbsp;&nbsp;
    </c:if>
    <a href="javascript:pagechange(${pagecount-1})" title="尾页">&gt;&gt;</a></center>
    <table border="1" width="86%" align="center" class="t1"><%...--统一控制数据展现表格的样式--%>
            <tr>
            <th width="30%">企业名称</th>
            <th width="35%">通信地址</th>
            <th width="10%">证书编号</th>
            <th width="10%">有效期</th>
            <th width="15%">操作</th>
            </tr>
            <c:forEach var="row" items="${results.rows}" varStatus="s">
                <tr class="tr${s.index % 2}"><%...--通过样式控制奇数行与偶数行背景不同--%>
                    <td>${row.name}</td>
                    <td>${row.address}</td>
                    <td>${row.cerno}</td>
                    <td><fmt:formatDate value="${row.vtm}" pattern="yyyy-MM-dd"/></td>
                    <td align="center">查看删除修改操作</td>
                </tr>
            </c:forEach>
    </table>
    </body>
</html>

 

 

分享到:
评论

相关推荐

    jstl分页jstl分页

    使用SQL Server 2005时,我们可以编写一个带有参数的SQL查询,如`SELECT * FROM table LIMIT ?, ?`,这里的问号代表占位符,将在运行时被替换为当前页码和每页记录数。在JavaBean中,我们可以创建方法来执行这个...

    EL+JSTL+分页

    本文将深入探讨EL和JSTL的使用,以及如何结合它们实现新闻管理系统的分页功能。 **EL(Expression Language)** EL是一种简洁的脚本语言,主要用于读取和设置JavaBean的属性。它允许开发者在JSP页面中以声明式的...

    JSTL&EL分页的例子

    在这个"JSTL&EL分页的例子"中,我们将探讨如何使用JSTL和EL来实现分页功能,这是一种在网页上显示大量数据时非常实用的技术。分页可以使用户更方便地浏览和管理信息,避免一次性加载过多数据导致页面响应慢或者内存...

    一个jar包,用JSTL 在表现层分页

    在这个jar包中,可能封装了后端分页逻辑,比如数据库查询优化、分页参数的校验等功能,使得开发者在使用时更加方便。 总结来说,这个“用JSTL在表现层分页”的jar包提供了分页所需的全部组件,包括JSTL标签的使用、...

    jstl实现jsp页面的分页

    在JSP页面中,可以使用EL(Expression Language)来获取和处理这些参数,然后将它们传递给上述方法,生成分页链接。例如,`&lt;c:forEach&gt;`标签遍历1到`pageCount`,并根据当前页码和页码的值来决定是否显示页码链接,...

    jstl 实现分页

    **JSTL实现分页详解** 在Web开发中,数据量较大的时候,为了提供良好的用户体验,通常会采用分页展示数据。JavaServer Pages Standard Tag Library(JSTL)是Java Web开发中的一个标准标签库,它包含了一系列用于...

    Web开发——jstl标签真分页实战

    ### Web开发——jstl标签真分页实战详解 在Web开发中,为了提升用户体验、减少服务器负担并提高页面加载速度,真分页技术成为了一种重要的实现手段。本篇文章将详细解读如何利用JSP中的JSTL标签库实现真分页功能。 ...

    struts2+sqlserver2000+jstl+分页

    同时,`c:url`和`c:param`标签则可以用来构造带有分页参数的URL,实现页面间的跳转。 分页是Web应用中常见的需求,尤其是在处理大量数据时,它可以提高用户体验,避免一次性加载过多数据导致页面响应慢。在Struts2...

    分页处理方法,分页处理,分页代码,分页方法

    在JSP中,可以使用request对象获取请求参数,例如`pageNo`,然后通过调用后端方法获取到分页数据并传递给JSP页面。在`BeanServlet.java`的示例中,数据被存储到`list`列表中,并通过`request.setAttribute("list", ...

    jsp带模糊查询的分页代码

    本示例“jsp带模糊查询的分页代码”将介绍如何使用JSP结合Servlet和MySQL数据库实现一个具有模糊查询功能的分页系统。这个系统允许用户输入关键词,对数据库中的数据进行模糊匹配,并以分页的形式展示搜索结果。 ...

    SSM+分页展示查询项目

    4. **PageHelper插件**:PageHelper是MyBatis的优秀分页插件,它可以自动处理分页参数,简化分页代码。在SSM项目中,开发者利用PageHelper可以轻松实现高效的分页查询,无需手动编写复杂的SQL语句。 5. **数据库...

    Java实现分页查询

    本篇将详细讲解如何利用Java、JDBC、Servlet、JSTL和EL表达式来实现一个完整的分页查询系统,同时结合Oracle数据库进行实战演示。 首先,我们需要了解分页的基本概念。分页是将数据分割成若干页,每次只加载一页的...

    Jsp+Servlet+MyBatis完成分页查询

    然后,创建一个服务类的实例,调用其分页查询方法,并传递这些参数。 3. **设计MyBatis映射文件**:在MyBatis的映射文件中,定义一个包含分页条件的SQL查询。可以使用`limit`或`offset`来实现分页,具体语法取决于...

    在Jsp中采用JSTL分页技术

    JSTL(JavaServer Pages Standard Tag Library)是Java EE中的一个标准标签库,提供了多种功能,其中包括分页。本文将详细探讨如何在JSP中利用JSTL实现分页技术。 首先,我们需要了解JSTL的基本概念。JSTL是由Sun ...

    实训专题java--JSP查询分页控制全部方法.

    在这个实训专题“Java--JSP查询分页控制全部方法”中,我们将深入探讨如何在JSP中实现数据库查询结果的分页显示,这对于大型数据集的管理至关重要。 首先,理解JSP分页的基本概念。分页是将大量数据分为多个小部分...

    浅谈分页思路

    综上所述,通过合理的分页实体类设计、高效的数据库查询语句编写以及JSTL标签的应用,我们可以在JavaWeb项目中实现高性能、高用户体验的分页功能。这不仅能够提升系统的响应速度,还能有效管理服务器资源,为用户...

    使用hibernate分页查询

    在这些API中,我们可以设置`setFirstResult()`和`setMaxResults()`方法来实现分页。`setFirstResult()`指定从哪一条记录开始,`setMaxResults()`指定要获取多少条记录。 2. **分页查询示例**: ```java Session ...

    hibernate分页查询功能

    使用Session的`createQuery(String hql)`方法创建Query对象,然后设置查询参数,通过`setFirstResult(int firstResult)`设置开始位置(即offset),`setMaxResults(int maxResults)`设置每页大小(即length)。...

    servlet实现的分页查询

    在分页查询中,Servlet主要负责接收请求参数(如当前页码、每页显示数量等),处理这些参数,并与数据库进行交互。 2. **分页原理** 分页的基本思想是限制一次从数据库中获取的数据量,而不是一次性加载所有记录。...

    JavaWeb实现简单分页

    - **Servlet**:在接收到分页请求后,Servlet负责处理请求参数,计算出正确的SQL查询语句。这通常涉及到两个关键参数:`pageSize`(每页记录数)和`currentPage`(当前页数)。通过这两个参数,可以计算出查询的...

Global site tag (gtag.js) - Google Analytics