转自: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="首页"><<</a>
<c:if test="${pageindex > 0}">
<a href="javascript:pagechange(${pageindex-1})" title="前一页"><</a>
</c:if>
<c:if test="${(pageindex+0) < (pagecount-1)}">
<a href="javascript:pagechange(${pageindex+1})" title="下一页">></a>
</c:if>
<a href="javascript:pagechange(${pagecount-1})" title="尾页">>></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>
分享到:
相关推荐
使用SQL Server 2005时,我们可以编写一个带有参数的SQL查询,如`SELECT * FROM table LIMIT ?, ?`,这里的问号代表占位符,将在运行时被替换为当前页码和每页记录数。在JavaBean中,我们可以创建方法来执行这个...
本文将深入探讨EL和JSTL的使用,以及如何结合它们实现新闻管理系统的分页功能。 **EL(Expression Language)** EL是一种简洁的脚本语言,主要用于读取和设置JavaBean的属性。它允许开发者在JSP页面中以声明式的...
在这个"JSTL&EL分页的例子"中,我们将探讨如何使用JSTL和EL来实现分页功能,这是一种在网页上显示大量数据时非常实用的技术。分页可以使用户更方便地浏览和管理信息,避免一次性加载过多数据导致页面响应慢或者内存...
在这个jar包中,可能封装了后端分页逻辑,比如数据库查询优化、分页参数的校验等功能,使得开发者在使用时更加方便。 总结来说,这个“用JSTL在表现层分页”的jar包提供了分页所需的全部组件,包括JSTL标签的使用、...
在JSP页面中,可以使用EL(Expression Language)来获取和处理这些参数,然后将它们传递给上述方法,生成分页链接。例如,`<c:forEach>`标签遍历1到`pageCount`,并根据当前页码和页码的值来决定是否显示页码链接,...
**JSTL实现分页详解** 在Web开发中,数据量较大的时候,为了提供良好的用户体验,通常会采用分页展示数据。JavaServer Pages Standard Tag Library(JSTL)是Java Web开发中的一个标准标签库,它包含了一系列用于...
### Web开发——jstl标签真分页实战详解 在Web开发中,为了提升用户体验、减少服务器负担并提高页面加载速度,真分页技术成为了一种重要的实现手段。本篇文章将详细解读如何利用JSP中的JSTL标签库实现真分页功能。 ...
同时,`c:url`和`c:param`标签则可以用来构造带有分页参数的URL,实现页面间的跳转。 分页是Web应用中常见的需求,尤其是在处理大量数据时,它可以提高用户体验,避免一次性加载过多数据导致页面响应慢。在Struts2...
在JSP中,可以使用request对象获取请求参数,例如`pageNo`,然后通过调用后端方法获取到分页数据并传递给JSP页面。在`BeanServlet.java`的示例中,数据被存储到`list`列表中,并通过`request.setAttribute("list", ...
本示例“jsp带模糊查询的分页代码”将介绍如何使用JSP结合Servlet和MySQL数据库实现一个具有模糊查询功能的分页系统。这个系统允许用户输入关键词,对数据库中的数据进行模糊匹配,并以分页的形式展示搜索结果。 ...
4. **PageHelper插件**:PageHelper是MyBatis的优秀分页插件,它可以自动处理分页参数,简化分页代码。在SSM项目中,开发者利用PageHelper可以轻松实现高效的分页查询,无需手动编写复杂的SQL语句。 5. **数据库...
本篇将详细讲解如何利用Java、JDBC、Servlet、JSTL和EL表达式来实现一个完整的分页查询系统,同时结合Oracle数据库进行实战演示。 首先,我们需要了解分页的基本概念。分页是将数据分割成若干页,每次只加载一页的...
然后,创建一个服务类的实例,调用其分页查询方法,并传递这些参数。 3. **设计MyBatis映射文件**:在MyBatis的映射文件中,定义一个包含分页条件的SQL查询。可以使用`limit`或`offset`来实现分页,具体语法取决于...
JSTL(JavaServer Pages Standard Tag Library)是Java EE中的一个标准标签库,提供了多种功能,其中包括分页。本文将详细探讨如何在JSP中利用JSTL实现分页技术。 首先,我们需要了解JSTL的基本概念。JSTL是由Sun ...
在这个实训专题“Java--JSP查询分页控制全部方法”中,我们将深入探讨如何在JSP中实现数据库查询结果的分页显示,这对于大型数据集的管理至关重要。 首先,理解JSP分页的基本概念。分页是将大量数据分为多个小部分...
综上所述,通过合理的分页实体类设计、高效的数据库查询语句编写以及JSTL标签的应用,我们可以在JavaWeb项目中实现高性能、高用户体验的分页功能。这不仅能够提升系统的响应速度,还能有效管理服务器资源,为用户...
在这些API中,我们可以设置`setFirstResult()`和`setMaxResults()`方法来实现分页。`setFirstResult()`指定从哪一条记录开始,`setMaxResults()`指定要获取多少条记录。 2. **分页查询示例**: ```java Session ...
使用Session的`createQuery(String hql)`方法创建Query对象,然后设置查询参数,通过`setFirstResult(int firstResult)`设置开始位置(即offset),`setMaxResults(int maxResults)`设置每页大小(即length)。...
在分页查询中,Servlet主要负责接收请求参数(如当前页码、每页显示数量等),处理这些参数,并与数据库进行交互。 2. **分页原理** 分页的基本思想是限制一次从数据库中获取的数据量,而不是一次性加载所有记录。...
- **Servlet**:在接收到分页请求后,Servlet负责处理请求参数,计算出正确的SQL查询语句。这通常涉及到两个关键参数:`pageSize`(每页记录数)和`currentPage`(当前页数)。通过这两个参数,可以计算出查询的...