`
chennanfei
  • 浏览: 42106 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多

首先创建一个类PagingDemo提供测试数据,方法getResults获得请求的数据,prepareURL产生每一个page的url。prepareURL方法有点笨,用正则表达式也可以完成,不过我不知道如何写

package test.demo;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

public class PagingDemo {
	private static final List testRepo = new ArrayList();
	private int totalCount;

	static {
		for (int i = 0; i < 100; i++) {
			testRepo.add("testdata." + i);
		}
	}

	public static void main(String[] args) {

	}

	public int getTotalCount() {
		return this.totalCount;
	}

	public List getResults(int page, int count) {
		if (page < 1 || count < 1) {
			return null;
		}
		totalCount = testRepo.size();
		int firstIndex = (page - 1) * count;
		if (firstIndex >= totalCount) {
			return null;
		}
		int lastIndex = firstIndex + count;
		if (lastIndex > totalCount) {
			lastIndex = totalCount;
		}
		return testRepo.subList(firstIndex, lastIndex);
	}

	public static String prepareURL(HttpServletRequest request) {
		String requestUrl = request.getRequestURI() + "?";
		String queryString = request.getQueryString();
		if (queryString != null) {
			// remove the parameter 'page' from the query string
			int index = queryString.indexOf("page=");
			if (index != -1) {
				int i = index;
				for (; i < queryString.length(); i++) {
					char ch = queryString.charAt(i);
					if (ch == '&') {
						i++;
						break;
					}
				}

				String sub = queryString.substring(index, i);
				requestUrl += queryString.replace(sub, "")
						+ (i < queryString.length() ? "&page=" : "page=");
			}
		}
		else {
			requestUrl += "page=";
		}
		return requestUrl;
	}
}

 

页面代码:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@page import="test.demo.PagingDemo"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

String requestUrl = PagingDemo.prepareURL(request);
String pageNum = request.getParameter("page");
if(pageNum == null) {
	pageNum = "1";
}
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>pages</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
	<style type="text/css">
		ul {margin:0px;padding:0px;}
		ul li {list-style-type: none;}
		a:link, a:visited {color:gray;text-decoration:none;padding:2px 5px;}
		.paging li {float:left;border:1px solid gray;text-align:center;margin:2px;color:gray;}
	</style>

  </head>
  
  <body>
  	<div style="width:400px;height:300px;border:1px solid blue;">
  		<ul>
	  	<%
	  		int pn = 1;
	  		try {
	  			pn = Integer.valueOf(pageNum);
	  			if(pn < 1) {
	  				pn = 1;
	  			}
	  		}
	  		catch (Exception e) {
	  			pn = 1;
	  		}
	  		int maxResultCount = 15;
	  		PagingDemo demo = new PagingDemo();
	  		List results = demo.getResults(pn, maxResultCount);
	  		if(results == null || results.isEmpty()) {
	  			out.println("<li>No results need to be shown</li>");
	  		}
	  		else {
		  		for(int i = 0; i < results.size(); i++) {
		  			out.println("<li>" + results.get(i) + "</li>");	  			
		  		}
		  		
		  		int total = demo.getTotalCount();
		  		int totalPages = total / maxResultCount;
		  		if(total % maxResultCount != 0) {
		  			totalPages++;
		  		}
		  		
		  		if(totalPages > 1) {
			  		int firstPage = pn - 2;
			  		int lastPage = pn + 2;
			  		if(firstPage < 1) {
			  			firstPage = 1;
			  		}
			  		if(lastPage > totalPages) {
			  			lastPage = totalPages;
			  		}
			  		out.println("<div class='paging'><ul>");
			  		out.println("<li>" + pn + "/" + totalPages + "</li>");
			  		if(pn > 1) {
			  			out.println("<li><a href='"+ requestUrl + (pn - 1) +"'>&lt;&lt;</a></li>");
			  		}
			  		for(int i = firstPage; i <= lastPage; i++) {
			  			if(i != pn) {
			  				out.println("<li><a href='"+ requestUrl + i + "'>" + i +"</a></li>");
			  			}
			  			else {
			  				out.println("<li><a style='color:white;background:gray;' href='"+ requestUrl + i + "'>" + i +"</a></li>");
			  			}
			  		}
			  		if(pn < totalPages) {
			  			out.println("<li><a href='"+ requestUrl + (pn + 1) +"'>&gt;&gt;</a></li>");
			  		}
			  		out.println("</ul></div>");
		  		}
	  		}
  		%>
  		</ul>
  	</div>
  	
    
    <script type="text/javascript">
    	function removeParamFromUrl(url, param){
    		if(url === null || url.indexOf("http:") != 0 || typeof param === "undefined" || param === null) {
    			return null;
    		}
    		index = url.indexOf(param + "=");
    		if(index === -1) {
    			return null;
    		}
    		replacedStr = null;
    		lastChar = url.charAt(index - 1);
    		if(lastChar === "&" || lastChar === "?"){
	    		for (i = index; i < url.length; i += 1) {
	    			if(url[i] === "&") {
	    				replacedStr = url.substring(index, i + 1);
	    				break;
	    			}
	    		}
	    		if(i === url.length) {
	    			replacedStr = url.substring(index - 1);
	    		} 
    		}  
    		
    		if(replacedStr !== null) {
    			url = url.replace(replacedStr, "");
    		}
    		return url;
    	}
    	
    	PagingBar = function(total, pages, page){
    		
    	}
    </script>
  </body>
</html>

 

 一个简单的分页就完成了

分享到:
评论

相关推荐

    jsp 分页 demo(第二个例子)

    本示例将深入探讨如何在JSP(JavaServer Pages)中实现分页功能,这也是第二个关于JSP分页的演示案例。 首先,我们需要了解分页的基本原理。分页通常是通过查询数据库并只返回一部分结果来实现的,这部分结果被称为...

    Java _ JSP分页Demo

    本示例"Java _ JSP分页Demo"显然关注的是如何在这样的环境中实现数据的分页显示。分页是大数据量展示时常用的一种优化手段,它可以提高用户体验,避免一次性加载过多数据导致页面响应变慢或内存资源过度消耗。 首先...

    hibernate jsp 分页Demo

    【hibernate jsp 分页Demo】是一个演示项目,展示了如何在Java Web应用程序中使用Hibernate框架结合JSP页面实现数据库查询的分页功能。在这个项目中,开发人员使用了MySQL作为后端数据库,通过Hibernate ORM工具与...

    jsp 分页 demo(第一个例子)

    在Java Web开发中,JSP(JavaServer Pages)是一种用于创建动态网页的...通过学习和分析这个示例,你可以理解并掌握JSP分页的基本原理和实践技巧。记得在实际项目中考虑性能优化,如缓存策略和避免无谓的数据库查询。

    JSP 中分页DEMO 例附数据库

    **JSP分页DEMO详解及数据库操作** 在Web开发中,当数据量较大时,为了提高用户体验,通常会采用分页的方式来展示信息。JSP(JavaServer Pages)作为Java Web开发的重要组成部分,提供了处理分页问题的有效手段。...

    jsp分页 oracle 插件demo

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

    jsp+servlet的demo(分页,查询,增删改查)

    【标题】"jsp+servlet的demo(分页,查询,增删改查)"涉及到的是在Web开发中使用JavaServer Pages (JSP) 和Servlet进行数据操作的基本实践。这是一个典型的后端开发示例,用于展示如何通过这两种技术实现动态网页...

    mysql本地安装步骤+部署java-jsp-demo项目.pdf

    2. **数据库操作**:项目中涉及的JSP分页Demo可能需要执行数据库查询和数据处理操作。 3. **运行验证**:通过访问部署后的Demo,检查功能是否正常,如分页功能、数据库连接等。 ### 总结 在部署整个Java JSP Demo...

    java-web-mysql 分页demo

    本示例"java-web-mysql 分页demo"提供了一个完整的Java Web应用程序,它结合了MySQL数据库进行分页查询,通过SQL文件hh_2018_08_29.sql导入数据,即可运行演示。 一、分页原理 分页是将大量数据分成若干页进行显示...

    jpager-分页demo

    【标题】"jpager-分页demo"是一个关于使用jpager库实现分页功能的示例项目。在Web开发中,分页是处理大量数据时不可或缺的元素,它能够帮助用户有条不紊地浏览信息,提高用户体验。jpager是一个专门为Java Web应用...

    ajax动态分页的DEMO

    这个“ajax动态分页的DEMO”是一个实际应用Ajax技术的例子,它包含了一个JavaScript文件(ajax.js)、一个JSP页面(Ajax.jsp)、一个SQL数据库脚本(database.sql)以及一个通知页面(notice.htm)。下面我们将详细...

    jsp分页,两种方式示例

    本篇文章将详细讲解两种不同的JSP分页实现方法,包括基于Servlet和基于JSTL的分页技术。 首先,我们来看基于Servlet的分页实现。这种方式通常涉及以下几个步骤: 1. **数据库查询**:在Servlet中,我们需要根据...

    JSP分页功能

    压缩包中的`Demo_Jsp_FenYe`可能包含了一个简单的JSP分页示例,可能包含以下几个部分: 1. `Servlet`或`Controller`类:负责接收请求参数(如当前页码),计算分页信息,执行SQL查询,并将结果传入JSP。 2. JSP页面...

    jdbc分页demo

    在这个"jdbc分页demo"中,主要涵盖了JDBC连接数据库、预编译SQL、执行查询、处理结果集以及在JSP页面上展示数据等步骤。通过这个例子,开发者可以了解如何在实际项目中实现基于JDBC的分页查询,提升Web应用的性能和...

    ssm整合框架以及增删改查的分页Demo

    这个"ssm整合框架以及增删改查的分页Demo"提供了一个基础的客户管理系统,涵盖了SSM框架的核心功能。 首先,**Spring框架**是整个应用的基石,它管理着应用中的对象(即Bean)。Spring通过依赖注入(Dependency ...

    JavaWeb_jsp分页技术实例

    在这个"JavaWeb_jsp分页技术实例"中,我们将深入探讨如何在JavaWeb应用中实现分页功能,特别是使用JSP(JavaServer Pages)进行开发。 分页通常涉及到两个主要部分:前端展示和后端处理。前端负责展示当前页的数据...

    SSH整合分页Demo入门

    在这个"SSH整合分页Demo入门"中,我们将深入理解如何在SSH框架下实现数据的分页展示,这对于大型Web应用来说是非常重要的功能,能够有效地管理大量数据并提高用户体验。 首先,我们需要了解SSH框架的基础知识。...

    Struts2+jdbc+mysq分页Demo

    在本"Struts2+jdbc+mysql分页Demo"中,我们将探讨如何使用Struts2框架配合JDBC和MySQL数据库实现动态网页的分页功能。 首先,我们需要理解分页的基本概念。分页是将大量数据分割成小块,以便用户可以逐步浏览和处理...

    JSP分页标签(最新)

    **JSP分页标签**是Web开发中一种实用的技术,它简化了在JSP页面上实现数据分页的复杂过程。传统的做法往往需要在后台处理大量代码,而在JSP页面中嵌入相应的Java代码或者使用自定义标签可以极大地提高开发效率和代码...

    SSM框架整合增删改查分页demo

    在"SSM框架整合增删改查分页demo"中,我们可以深入理解这三个组件如何协同工作,实现数据的CRUD(创建、读取、更新、删除)操作,并进行高效的分页查询。 首先,Spring作为基础框架,负责管理应用中的对象,通过...

Global site tag (gtag.js) - Google Analytics