`
jacky.jihao
  • 浏览: 153697 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Servlet+JSP分页的一个例子

    博客分类:
  • J2EE
阅读更多

想在网上找个这样的例子,奈何这个世界太浮夸,干实事的不多,搞转帖的垃圾网站一大堆,有的还转的七零八落,有的例子下载还要登录,着实郁闷了一把

最后还是决定自己写吧,本例子提供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
22
6
分享到:
评论
8 楼 hzxlb910 2016-08-15  
写的十分的好,谢谢。
7 楼 wangongxi 2014-08-28  
非常感谢楼主的无私奉献,最近正在做一个搜索引擎前端的开发,看了博文之后很受用,赞一个!
6 楼 燕尤心 2014-05-30  
nice
5 楼 kolen001 2013-09-19  
谢谢是分享。。
4 楼 xinpei1 2012-09-25  
http://xinpei1.iteye.com/admin/blogs/1685440

装载。。。。http://jihao.iteye.com/blog/253280
3 楼 liushuiwuqing4 2012-09-08  
谢谢你, 我这边要搞一个分页,对jsp不太熟。
2 楼 qxc222 2012-04-16  
你的 dao 里面是怎么写的哦,能不能发给我看一下
1 楼 wallacetju 2011-09-17  
最喜欢这种踏实的作风

相关推荐

    关于servlet+JavaBean+jsp的小例子

    本文将详细解析"关于servlet+JavaBean+jsp的小例子"所涉及的知识点,并深入探讨如何利用这三种技术实现MVC Model2架构的分页功能。 Servlet是Java提供的一种用于扩展服务器功能的接口,它允许开发者处理HTTP请求和...

    jsp+Servlet+javabean分页

    在这个场景中,我们讨论的是如何使用这三个组件来实现一个分页功能,这对于展示大量数据,如新闻列表,是非常实用的。下面我们将详细探讨这个过程。 首先,`jsp`(JavaServer Pages)是用于创建动态网页的服务器端...

    jsp+servlet+javabean例子

    这个"jsp+servlet+javabean留言管理小例子加分页功能"是一个很好的实践项目,它涵盖了Web开发中的基础和关键概念。 首先,`JSP`是Java的一种动态网页技术,它允许开发者在HTML页面中嵌入Java代码,使得页面能够根据...

    JSP+SERVLET+MYSQL实现的增删改查javaweb小例子

    本项目"JSP+SERVLET+MYSQL实现的增删改查javaweb小例子"提供了一个基础的实战示例,帮助开发者了解如何将这三种技术有效地结合在一起,实现一个简单的Web应用,处理用户信息的CRUD(Create, Read, Update, Delete)...

    用servlet+jsp写的分页和关键字查询

    这里我们讨论的是一个基于Servlet、JSP、Service层和JDBC技术实现的简单分页与关键字查询系统。这个系统不依赖任何特定的框架,如Spring或Hibernate,而是采用传统的Java Web开发方式来完成。 首先,让我们了解...

    用jsp+servlet+EL表达式+JSTL写的分页代码

    本示例是基于`jsp`、`servlet`、`EL(Expression Language)`表达式和`JSTL(JavaServer Pages Standard Tag Library)`实现的一个分页代码。下面,我们将深入探讨这些技术及其在分页中的应用。 **1. JSP(Java...

    jsp+servlet+oracle模仿百度分页

    带学员课上做的oracle模仿百度分页样式的例子。比较适合初学者参考,jdbc工具类是自己写的,没有使用第三方分页组件。tomcat是apache-tomcat-7.0.41,myeclipse是MyEclipse 9.0,oracle是11g。例子中用的是海量数据...

    纯servlet+jsp后台管理 无任何框架

    公司要求的,只用servlet和jsp,不能...servlet使用注解方式,另外一个servlet可以处理多个请求,方式和spring mvc类似。这点和网上其他人写的servlet处理多方法加一个method参数不一样。其它也不算难的技术,一看就懂

    jsp分页标签,servlet技术实现

    在压缩包中的"集成后的分页标签"可能包含了一个已经配置好的分页标签库示例,你可以参考这个例子学习如何在实际项目中集成和使用分页标签。确保按照说明文档配置相关的Servlet、JSP页面和标签库依赖,以便正确运行和...

    JSP+Servlet+JDBC做的一个简单的例子。新手可以学习。

    在这个"JSP+Servlet+JDBC做的简单例子"中,开发者可能创建了一个Web应用,用于管理多个表的数据。以下是一些可能涉及的关键知识点: 1. **JSP页面结构**:JSP页面可能包含了HTML元素和Java脚本片段,如`&lt;jsp:...

    开发的 Hibernate+ JSP分页代码.rar

    【标题】:“开发的 Hibernate+ JSP分页代码”指的是一个使用Hibernate ORM框架与JSP技术实现的分页功能的代码示例。这个压缩包包含了实现数据库查询分页展示的完整代码。 【描述】:该描述简洁明了,表明这是一个...

    jsp分页:使用Ajax+servlet+json实现分页-附件资源

    jsp分页:使用Ajax+servlet+json实现分页-附件资源

    JSP分页小例子

    在提供的“page-sample”项目中,你可以找到一个简单的分页示例,包括Servlet处理逻辑、JSP页面展示和MySQL查询的实现。通过这个例子,你可以深入理解JSP分页的完整流程,并将其应用到自己的项目中。 总结来说,JSP...

    jqGrid 前端框架 连接后台实例 java servlet+jsp+mysql

    这个实例结合了Java Servlet、JSP(Java Server Pages)和MySQL数据库,为我们提供了一个完整的前后台交互解决方案。 首先,jqGrid允许用户通过Ajax方式动态加载数据,支持多种数据格式,包括JSON、XML和CSV等。在...

    一个简单的jsp分页的完整例子(使用可重复单独的分页类)!

    在这个"一个简单的jsp分页的完整例子"中,我们将深入探讨如何利用Java Servlet和JSP技术实现可重复使用的分页类。本示例适用于MyEclipse开发环境。 首先,我们需要了解分页的基本原理。分页的核心思想是将大量数据...

    jsp分页 oracle 插件demo

    本篇将详细介绍如何在JSP(JavaServer Pages)环境中,结合Oracle数据库实现分页功能,并通过一个名为"jsp分页 oracle 插件demo"的示例来演示具体步骤。 首先,我们需要了解JSP分页的基本原理。在JSP中,分页通常...

    分页例子java+jsp+msql

    本示例“分页例子java+jsp+mysql”是关于如何在Java Web环境中,结合JSP(JavaServer Pages)和MySQL数据库来实现一个分页功能的实践教程。 首先,我们从`welcom.jsp`页面开始讲解。JSP是Java的一种动态网页技术,...

    通用的JSP分页+增删改查+批量删除

    【标题】"通用的JSP分页+增删改查+批量删除" 是一个Web开发中的常见需求,尤其是在处理大量数据时,为了提高用户体验和系统性能,通常会使用分页来展示数据。在这个主题中,我们将深入探讨如何在JavaServer Pages ...

    jsp 分页 demo(第二个例子)

    在这个JSP分页的第二个示例中,我们不仅学会了如何根据页码和每页记录数动态构造SQL,还在Servlet和JSP之间进行了数据传递,以及如何在页面上呈现分页导航。这样的实践有助于开发者更好地理解和实现大型Web应用程序...

Global site tag (gtag.js) - Google Analytics