想在网上找个这样的例子,奈何这个世界太浮夸,干实事的不多,搞转帖的垃圾网站一大堆,有的还转的七零八落,有的例子下载还要登录,着实郁闷了一把
最后还是决定自己写吧,本例子提供eclipse工程压缩包下载,直接导入就能用了,本着踏实的态度干这件事,希望能给新手帮助。
本例着重介绍如何表现层分页的小技巧,DAO只是一个Demo,数据库查询的分页技巧不在本文讨论范围之内。
先看看最终效果的一个截图:
单从表现层来说分页不是一个复杂的工作,稍微理一下思路,处于不同competence level的同学应该都能自己搞出来。
以上面的文章列表分页为例,我觉得分页有两点重要的,
一是:分页我们必须首先自己搞清楚,文章总数、每页显示文章数(页大小)、页数
二是:如何做好页脚的分页导航条
实际应用中,文章总数这个值我们从数据库可以得到;每页显示的文章数即分页的页大小可以自己定义;页数我们可以通过下面的个表达式简单得出。
假设:
int pageSize = 10; //分页大小
int totalPosts = PagingDAO.entryList.size(); //总文章数
int totalPages = totalPosts/pageSize + ((totalPosts%pageSize)>0?1:0); //计算得出的总页数
每页的文章怎么取出来?
知道分页的大小之后,我们生成了页好的选取下拉框,每次选择第几页的时候,都会向Servlet传递当前选择页号的参数,这样Servlet调用后面的DAO相应的方法,取得文章列表信息,再回传到JSP以供显示。
看看我们用作显示的index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
page Size : ${pageSize}
<br />
Total Posts: ${totalPosts}
<br />
Total Pages: ${totalPages}
<br />
Current Page: ${pageNumber}
<hr />
<table>
<thead>
<tr align="center">
<td width="10%">Article ID</td>
<td width="70%">Article Title</td>
<td colspan="3">Actions</td>
</tr>
</thead>
<tbody>
<c:forEach items="${entryList}" var="entry">
<tr align="center">
<td>${entry.entryID}</td>
<td>${entry.title}</td>
<td><a href="viewEntry?entryID=${entry.entryID}">View</a></td>
<td><a href="editEntry?entryID=${entry.entryID}">Edit</a></td>
<td><a href="deleteEntry?entryID=${entry.entryID}">Delete</a></td>
</tr>
</c:forEach>
</tbody>
<tfoot>
<tr align="center">
<td colspan="5">
<jsp:include page="paging_footer.jsp"></jsp:include>
</td>
</tr>
</tfoot>
</table>
<hr/>
这些流程清晰之后,我们就可以实现分页导航条了,也就是上面的paging_footer.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<script type="text/javascript">
function gotoSelectedPage()
{
var x = document.getElementById("navigatorForm");
//alert("Original action: " + x.action)
x.submit();
}
</script>
<form action="Posts" method="get" id="navigatorForm">
<a href="Posts?pageNumber=1">首页</a>
<c:if test="${pageNumber>1}">
<a href="Posts?pageNumber=${pageNumber-1}">上一页</a>
</c:if>
跳转到第 <select name="pageNumber" onchange="gotoSelectedPage();">
<c:forEach begin="1" end="${totalPages}" step="1" var="pageIndex">
<c:choose>
<c:when test="${pageIndex eq pageNumber}">
<option value="${pageIndex}" selected="selected">${pageIndex}</option>
</c:when>
<c:otherwise>
<option value="${pageIndex}">${pageIndex}</option>
</c:otherwise>
</c:choose>
</c:forEach>
</select>页
<c:if test="${pageNumber<totalPages}">
<a href="Posts?pageNumber=${pageNumber+1}">下一页</a>
</c:if>
<a href="Posts?pageNumber=${totalPages}">末页</a>
</form>
Posts是我们的Servlet,负责取得相关参数,和DAO打交道,取得一些文章的数据,然后传递到JSP,我们来看一下这个Servlet 的 doGet 方法。
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String pageNumberStr = request.getParameter("pageNumber");
int pageNumber = 1;
if(pageNumberStr!=null && !pageNumberStr.isEmpty())
{
pageNumber = Integer.parseInt(pageNumberStr);
}
int pageSize = 10; //分页大小
int totalPosts = PagingDAO.entryList.size(); //总文章数
int totalPages = totalPosts/pageSize + ((totalPosts%pageSize)>0?1:0); //计算得出的总页数
request.setAttribute("pageSize", pageSize);
request.setAttribute("totalPosts", totalPosts);
request.setAttribute("pageNumber", pageNumber);
request.setAttribute("totalPages", totalPages);
List<Entry> entryList = PagingDAO.getEntryList(pageNumber, pageSize);
System.out.println("entryList:"+ entryList.size());
request.setAttribute("entryList", entryList);
request.getRequestDispatcher("index.jsp").forward(request, response);
}
分页其实还是很简单的事情,为了方便新手上路,这里提供一下这个eclipse的工程压缩包,直接导入就能用了。
(注意:对于eclipse JEE版本,工程导入后,请自行拷贝jstl.jar 和 standard.jar到WEB-INF/lib目录,如果没有配置Server的话,down个tomcat在eclipse里配置一下,不然怎么run?这个基础的应该都会吧)
点此下载
- 大小: 9.6 KB
分享到:
相关推荐
本文将详细解析"关于servlet+JavaBean+jsp的小例子"所涉及的知识点,并深入探讨如何利用这三种技术实现MVC Model2架构的分页功能。 Servlet是Java提供的一种用于扩展服务器功能的接口,它允许开发者处理HTTP请求和...
在这个场景中,我们讨论的是如何使用这三个组件来实现一个分页功能,这对于展示大量数据,如新闻列表,是非常实用的。下面我们将详细探讨这个过程。 首先,`jsp`(JavaServer Pages)是用于创建动态网页的服务器端...
这个"jsp+servlet+javabean留言管理小例子加分页功能"是一个很好的实践项目,它涵盖了Web开发中的基础和关键概念。 首先,`JSP`是Java的一种动态网页技术,它允许开发者在HTML页面中嵌入Java代码,使得页面能够根据...
本项目"JSP+SERVLET+MYSQL实现的增删改查javaweb小例子"提供了一个基础的实战示例,帮助开发者了解如何将这三种技术有效地结合在一起,实现一个简单的Web应用,处理用户信息的CRUD(Create, Read, Update, Delete)...
这里我们讨论的是一个基于Servlet、JSP、Service层和JDBC技术实现的简单分页与关键字查询系统。这个系统不依赖任何特定的框架,如Spring或Hibernate,而是采用传统的Java Web开发方式来完成。 首先,让我们了解...
本示例是基于`jsp`、`servlet`、`EL(Expression Language)`表达式和`JSTL(JavaServer Pages Standard Tag Library)`实现的一个分页代码。下面,我们将深入探讨这些技术及其在分页中的应用。 **1. JSP(Java...
带学员课上做的oracle模仿百度分页样式的例子。比较适合初学者参考,jdbc工具类是自己写的,没有使用第三方分页组件。tomcat是apache-tomcat-7.0.41,myeclipse是MyEclipse 9.0,oracle是11g。例子中用的是海量数据...
公司要求的,只用servlet和jsp,不能...servlet使用注解方式,另外一个servlet可以处理多个请求,方式和spring mvc类似。这点和网上其他人写的servlet处理多方法加一个method参数不一样。其它也不算难的技术,一看就懂
在压缩包中的"集成后的分页标签"可能包含了一个已经配置好的分页标签库示例,你可以参考这个例子学习如何在实际项目中集成和使用分页标签。确保按照说明文档配置相关的Servlet、JSP页面和标签库依赖,以便正确运行和...
在这个"JSP+Servlet+JDBC做的简单例子"中,开发者可能创建了一个Web应用,用于管理多个表的数据。以下是一些可能涉及的关键知识点: 1. **JSP页面结构**:JSP页面可能包含了HTML元素和Java脚本片段,如`<jsp:...
【标题】:“开发的 Hibernate+ JSP分页代码”指的是一个使用Hibernate ORM框架与JSP技术实现的分页功能的代码示例。这个压缩包包含了实现数据库查询分页展示的完整代码。 【描述】:该描述简洁明了,表明这是一个...
jsp分页:使用Ajax+servlet+json实现分页-附件资源
在提供的“page-sample”项目中,你可以找到一个简单的分页示例,包括Servlet处理逻辑、JSP页面展示和MySQL查询的实现。通过这个例子,你可以深入理解JSP分页的完整流程,并将其应用到自己的项目中。 总结来说,JSP...
这个实例结合了Java Servlet、JSP(Java Server Pages)和MySQL数据库,为我们提供了一个完整的前后台交互解决方案。 首先,jqGrid允许用户通过Ajax方式动态加载数据,支持多种数据格式,包括JSON、XML和CSV等。在...
在这个"一个简单的jsp分页的完整例子"中,我们将深入探讨如何利用Java Servlet和JSP技术实现可重复使用的分页类。本示例适用于MyEclipse开发环境。 首先,我们需要了解分页的基本原理。分页的核心思想是将大量数据...
本篇将详细介绍如何在JSP(JavaServer Pages)环境中,结合Oracle数据库实现分页功能,并通过一个名为"jsp分页 oracle 插件demo"的示例来演示具体步骤。 首先,我们需要了解JSP分页的基本原理。在JSP中,分页通常...
本示例“分页例子java+jsp+mysql”是关于如何在Java Web环境中,结合JSP(JavaServer Pages)和MySQL数据库来实现一个分页功能的实践教程。 首先,我们从`welcom.jsp`页面开始讲解。JSP是Java的一种动态网页技术,...
【标题】"通用的JSP分页+增删改查+批量删除" 是一个Web开发中的常见需求,尤其是在处理大量数据时,为了提高用户体验和系统性能,通常会使用分页来展示数据。在这个主题中,我们将深入探讨如何在JavaServer Pages ...
在这个JSP分页的第二个示例中,我们不仅学会了如何根据页码和每页记录数动态构造SQL,还在Servlet和JSP之间进行了数据传递,以及如何在页面上呈现分页导航。这样的实践有助于开发者更好地理解和实现大型Web应用程序...