`
penchy
  • 浏览: 59755 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

jsp分页组件(原创)

阅读更多

  闲来无事,自己弄个jsp的分页组件来玩玩,也就能给新手参考参考了 , 老鸟就可以飘过了!!~~~

 

   先上个效果图吧!!~

  

   其实 也就是把jquery分页插件的 样式给弄了过来!~~~~

   代码开始:

   首先先创建一个页码的实体类

   Pager.java

public class Pager {
	private int pagesize=5;   //每页显示数
	private int start=1;	  //开始条数
	private int end=1;		  //结束条数
	private int sum;		  //总数
	private int curpage=1;    //当前页
	private int pages=1;	  //总页数
	
	public int getCurpage() {
		return curpage;
	}
	public void setCurpage(int curpage) {
		if(curpage<1)curpage=1;
		if(curpage>this.getPages())curpage=this.getPages();
		this.curpage = curpage;
	}
	public int getEnd() {
		end=this.getStart()+pagesize;
		return end;
	}
	public void setEnd(int end) {
		this.end = end;
	}
	public int getPages() {
		if(sum%pagesize==0){
			pages=sum/pagesize;
		}else{
			pages=sum/pagesize+1;
		}
		return pages;
	}
	public void setPages(int pages) {
		this.pages = pages;
	}
	public int getPagesize() {
		return pagesize;
	}
	public void setPagesize(int pagesize) {
		this.pagesize = pagesize;
	}
	public int getStart() {
		start=(this.getCurpage()-1)*pagesize+1;
		return start;
	}
	public void setStart(int start) {
		this.start = start;
	}
	public int getSum() {
		return sum;
	}
	public void setSum(int sum) {
		this.sum = sum;
	}
	
	
}

 

    PagerTag.java  自定义标签

 

 

import java.io.IOException;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.tagext.TagSupport;


public class PagerTag extends TagSupport {
	private static final long serialVersionUID = 183373550159351609L;
	private Pager pager;
	private String urlstart;
	private String urlend;
	public PagerTag() {
	}
	
	public int doStartTag() throws JspException {
		try {
			String bar=getNavigatorBar();
			pageContext.getOut().write(bar);
			return SKIP_BODY;
		} catch (IOException e) {
			e.printStackTrace();
			throw new JspException(e);
		}
	}
	
	
	private String getNavigatorBar()
	{
		StringBuffer bar=new StringBuffer();
                /** 下载包中此处未修改 ,请手动修改一下  **/
                /** 下载包中此处未修改 ,请手动修改一下  **/
                if( pager==null){
                        pager = new Pager();
                }
                /** 下载包中此处未修改 ,请手动修改一下  **/


                int curpage = pager.getCurpage();//当前页
		int pages   = pager.getPages();//总页数
		/**
		 * 第一页
		 */
		//如果是第一页
		if(curpage == 1){
			bar.append("<span class='current prev'>Prev</span>")
			   .append("<span class='current'>1</span>");
		}else{
			bar.append("<a href='"+urlstart+(curpage-1)+urlend+"'>Prev</a>")
			   .append("<a href='"+urlstart+1+urlend+"'>1</a>");
		}
		/**
		 * 结束(第一页)
		 */
		
		//如果总页数小于11
		if(pages <= 11){
			for(int i =2 ; i<pages;i++){
				if(curpage==i){
					bar.append("<span class='current'>"+i+"</span>");
				}else{
					bar.append("<a href='"+urlstart+i+urlend+"'>"+i+"</a>");
				}
			}
		}else{//总页数大于11
			if(curpage <=6){ 						//当前页小页等于6时  (页码要与前面的街上)
				for(int i=2;i<=7;i++){
					if(curpage==i){
						bar.append("<span class='current'>"+i+"</span>");
					}else{
						bar.append("<a href='"+urlstart+i+urlend+"'>"+i+"</a>");
					}
				}
				bar.append("<span>....</span>");
				bar.append("<a href='"+urlstart+(pages-1)+urlend+"'>"+(pages-1)+"</a>");
			}else if(curpage>=pages-5){  			//当前页大于最大页-5时 要与后面的接上
				bar.append("<a href='"+urlstart+2+urlend+"'>"+2+"</a>");
				bar.append("<span>....</span>");
				for(int i=pages-5-3;i<=pages-1;i++){
					if(curpage==i){
						bar.append("<span class='current'>"+i+"</span>");
					}else{
						bar.append("<a href='"+urlstart+i+urlend+"'>"+i+"</a>");
					}
				}
			}else{
				bar.append("<a href='"+urlstart+2+urlend+"'>"+2+"</a>");
				bar.append("<span>....</span>");
				for(int i=curpage-3;i<=curpage+3;i++){
					if(curpage==i){
						bar.append("<span class='current'>"+i+"</span>");
					}else{
						bar.append("<a href='"+urlstart+i+urlend+"'>"+i+"</a>");
					}
				}
				bar.append("<span>....</span>");
				bar.append("<a href='"+urlstart+(pages-1)+urlend+"'>"+(pages-1)+"</a>");
			}
		}
		
		
		/**
		 * 最后一页
		 */
		//如果是最后一页
		if(curpage == pages){
			bar.append("<span class='current'>"+pages+"</span>")
			   .append("<span class='current next'>Next</span>");
		}else{
			bar.append("<a href='"+urlstart+pages+urlend+"'>"+pages+"</a>")
			   .append("<a href='"+urlstart+(curpage+1)+urlend+"'>Next</a>");
		}
		bar.append("<select style='height:26px;text-align: center;padding: 0.3em 0.5em;' onchange=\"location.href='"+urlstart+"'+this.value+'"+urlend+"'\">");
		for(int i=1;i<=pages;i++){
			if(curpage==i){
				bar.append("<option value='"+i+"' selected='selected'>").append("第"+i+"页").append("</option>");
			}else{
				bar.append("<option value='"+i+"'>").append("第"+i+"页").append("</option>");
			}
		}
		bar.append("</select>");
		return bar.toString();
	}
	
	
	public int doEndTag() throws JspTagException
	{
		return EVAL_PAGE;
	}
	
	public Pager getPager() {
		return pager;
	}

	public void setPager(Pager pager) {
		this.pager = pager;
	}

	public String getUrlend() {
		return urlend;
	}

	public void setUrlend(String urlend) {
		this.urlend = urlend;
	}

	public String getUrlstart() {
		return urlstart;
	}

	public void setUrlstart(String urlstart) {
		this.urlstart = urlstart;
	}
}
 

    在WEB-INF 下创建 pages.tld 文件

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib
  PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
  "http://java.sun.com/j2ee/dtds/web-jsptaglib_1_1.dtd">

<taglib>
	<tlibversion>1.0</tlibversion>
	<jspversion>1.1</jspversion>
	<shortname>papa</shortname>
	<!--====================pager:pagebar=====================-->
	<tag>
		<name>pager</name>
		<tagclass>com.test.PagerTag</tagclass>
		<bodycontent>JSP</bodycontent>
		<info>pager tag provide the frame of the page divider</info>
		<attribute>
			<name>pager</name>
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
		</attribute>
		<attribute>
			<name>urlstart</name>
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
		</attribute>
		<attribute>
			<name>urlend</name>
			<required>true</required>
			<rtexprvalue>true</rtexprvalue>
		</attribute>
		<attribute>
			<name>css</name>
			<required>false</required>
			<rtexprvalue>false</rtexprvalue>
		</attribute>
	</tag>
</taglib>

 

    在页面中的应用

 

<%@ taglib prefix="pages" uri="/WEB-INF/pages.tld" %>
<%@ page language="java"  pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
<link rel="stylesheet" href="pagination.css" />
     
		
  </head>
  
  <body>
   <div class="pagination">
   <pages:pager pager="${pager}" urlend="" urlstart="PageServlet?curpager="></pages:pager>
        </div>
  </body>
</html>

 

    PageServlet.java

 

package com.test;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class PageServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("text/html");
		request.setCharacterEncoding("gbk");
		response.setCharacterEncoding("gbk");
		Pager pager = new Pager();
		String curpager= request.getParameter("curpager");
		pager.setPagesize(5);
		pager.setSum(357);
		pager.setCurpage(Integer.parseInt(curpager));
		request.setAttribute("pager", pager);
		request.getRequestDispatcher("/index.jsp").forward(request, response);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		this.doGet(request, response);
	}

}

 

   使用说明:

 

pager.setPagesize(5);  //在应用中 需要设置 每页显示的数量
pager.setSum(357);     // 设置总数量
pager.setCurpage(Integer.parseInt(curpager));  //设置当前页

 

    在后台查询中直接获得

 

pager.getStart(); //从第几条开始显示
pager.getEnd(); //第几条结束

    例如 forumdisplay.jsp?page=2 &fid=55

    2是页码

<pages:pager pager="${pager}" urlend="" urlstart="PageServlet?curpager="></pages:pager>

 

    urlstart=" forumdisplay.jsp?page="  //页码的前一部分

   urlend="&fid=55"                               //页码的后一部分

 

   具体看代码 比较简单 都有注释````

 

  • 大小: 9.4 KB
分享到:
评论
6 楼 364902709 2013-11-05  
非常好用。谢谢。
5 楼 penchy 2012-08-16  
allen_leiwenchao 写道
如何用阿, 查询的集合 都没地方放~



    <pages:pager pager="${pager}" urlend="" urlstart="PageServlet?curpager="></pages:pager> 



    urlstart=" forumdisplay.jsp?page="  //页码的前一部分

   urlend="&fid=55"                               //页码的后一部分

你可以放在urlstart 或 urlend中  类似“urlend="&fid=55"           ”
4 楼 allen_leiwenchao 2012-05-31  
如何用阿, 查询的集合 都没地方放~
3 楼 penchy 2011-10-09  
增加 在PagerTag.java 中getNavigatorBar()方法中
开头处添加

if( pager==null){ 
                        pager = new Pager(); 
          } 
2 楼 penchy 2011-10-09  
不好意思 程序有点小bug

在PagerTag.java 中
private String getNavigatorBar() 
    { 
        StringBuffer bar=new StringBuffer(); 
        /***   这里需要判断一下pager是否为null  ***/

        int curpage = pager.getCurpage();//当前页 
        int pages   = pager.getPages();//总页数 
1 楼 wangmingyu 2010-05-06  
java.lang.NullPointerException

相关推荐

    jsp分页组件

    通用的jsp分页组件,实例化后只需设置好各种属性,然后调用API即可得到已封装好“首页” “上一页”,“下一页”等分页操作的html表格String,直接在jsp页面中即可, 支持跳转到jsp和跳转到Action(struts架构)...

    JSP分页组件

    本篇将详细介绍一个通用的JSP分页组件及其相关知识点。 **一、JSP分页组件的原理** JSP分页组件主要是通过计算总页数和当前页数来实现的。它首先获取数据库中的记录总数,然后根据每页显示的记录数来计算总页数。在...

    jsp分页组件jspjspjsp

    这时,jsp分页组件就显得尤为重要。 `jsp分页组件`是一种专门用于Java Web应用的技术,它能够帮助开发者在JSP(JavaServer Pages)中实现高效、灵活的分页功能。这个组件通常包括以下几个关键部分: 1. **参数设置...

    jsp分页组件+实例+数据库.rar

    `jsp分页组件+实例+数据库.rar` 是一个包含JSP分页功能的组件,配合实际示例和数据库操作的资源包。在这个压缩文件中,我们可能找到一个完整的解决方案,用于在Web应用程序中实现高效且用户友好的数据分页。下面将...

    jsp数字分页组件 java 数字翻页 NumberPage

    `NumberPage`是一个基于JSP的数字分页组件,适用于网页显示数据时进行页面导航。这个组件允许开发者自定义数字翻页的长度和容量,以适应不同场景的需求。 首先,我们需要了解分页的基本概念。在数据库查询中,如果...

    封装好直接使用的jsp分页插件

    总结来说,“封装好直接使用的jsp分页插件”是一个功能全面、配置简单的Java Web分页组件,它可以让开发者从复杂的分页逻辑中解放出来,将重点放在业务逻辑的实现上。然而,开发者在选择使用时,也应留意其在性能...

    JSP+JavaBean的分页组件

    本项目以"JSP+JavaBean"的技术栈,实现了一个简单易用的分页组件。以下是这个组件的核心知识点及详细说明: 1. **JavaBean**: JavaBean是一种遵循特定规范的Java类,它主要用于封装数据和业务逻辑。在这个分页组件...

    简单的分页组件(jsp,bean)

    本项目以"简单的分页组件(jsp,bean)"为主题,通过jsp(JavaServer Pages)和bean(JavaBean)技术实现了一个基础的分页功能。 首先,我们来理解一下jsp和bean在Web开发中的角色。JSP是Java的一种动态网页技术,...

    jsp 简捷 分页组件 简单配置可用

    **JSP分页组件**是Java Web开发中一个不可或缺的部分,尤其在处理大量数据展示时,如用户查询、报表分析等场景。它允许用户轻松地浏览数据库中的数据,而无需一次性加载所有记录,从而提高页面加载速度,优化用户...

    pager-taglib-2.0 JSP分页组件

    **标题解析:**"pager-taglib-2.0 JSP分页组件" 是一个专用于JSP页面的分页功能的库,版本为2.0。分页是Web应用程序中常见的功能,它允许用户在大量数据中进行导航,通常用于数据库查询结果的展示,如电商网站的商品...

    jsp页面数据分页通用组件

    **JSP页面数据分页通用组件详解** 在Web开发中,数据分页是常见的功能,尤其是在处理大量数据时,为了提高用户体验和加载速度,通常会将数据分成多个页进行显示。`jsp页面数据分页通用组件`就是这样一个工具,它为...

    JSP+MySql分页组件

    【JSP+MySQL分页组件】是Web开发中常见的功能,用于处理大量数据时提高页面加载速度和用户体验。在Web应用程序中,一次性加载所有数据可能导致页面响应慢,尤其是在数据库存储的数据量庞大的情况下。分页技术可以...

    jsp分页插件

    **JSP分页插件详解** 在Web开发中,数据量较大的时候,为了提高用户体验,通常会采用分页的方式来展示信息。JSP(JavaServer Pages)作为Java领域常用的动态网页技术,结合分页插件可以方便地实现这一功能。本篇...

    功能强大的JSP分页组件 valuelist0.1.8

    功能强大的JSP分页组件 valuelist0.1.8 封装的很好

    JSP分页组件,JSP存储过程,URL参数传递

    在这个特定的项目中,我们关注的是三个关键知识点:JSP分页组件、JSP中的存储过程调用以及URL参数传递。 首先,让我们详细了解一下**JSP分页组件**。在处理大量数据时,分页是常见的优化手段,可以提高用户体验并...

    jdbc+jsp分页组件+源代码

    本文将详细讲解"jdbc+jsp分页组件+源代码"的相关知识点。 1. JDBC基础: JDBC是Java编程语言访问数据库的桥梁,它提供了一组接口和类,使得Java开发者能够编写与数据库交互的代码。JDBC的主要功能包括连接数据库、...

    java实现分页 jsp分页 分页

    java实现分页 jsp分页 分页java实现分页 jsp分页 分页java实现分页 jsp分页 分页java实现分页 jsp分页 分页java实现分页 jsp分页 分页java实现分页 jsp分页 分页

    JSP通用分页组件 javabean分页

    这个也是出于网上,但经过个人整理。如果想用,慢慢往下看。 里面有详细的代码注释。可以参考。 数据库采用mysql,数据库建库数据库代码没有提供,请自行...该代码可作为通用分页组件使用。 其他功能待有时间再次添加

Global site tag (gtag.js) - Google Analytics