`
penchy
  • 浏览: 57647 次
  • 性别: 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

相关推荐

Global site tag (gtag.js) - Google Analytics