`
penchy
  • 浏览: 58578 次
  • 性别: 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+JavaBean的分页组件

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

    jsp 分页jsp 分页

    jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页jsp 分页...

    简单的分页组件(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分页插件"正是一款针对这一需求设计的工具,它能够简化开发过程,使开发者能够快速实现分页功能,而无需关注底层复杂的逻辑。 该插件适用于jsp与servlet的原生组合,同时对流行的SSH(Struts2 ...

    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分页 分页

Global site tag (gtag.js) - Google Analytics