`

自己写的一个分页标签

    博客分类:
  • Java
阅读更多

由于项目需要自己写了个简单的分页标签,只完成了简单的分页功能,没有提供样式和多分页的处理,下面是代码的DEMO:

 

PagerTag.java

 

package lectery.tag;

import java.io.IOException;

import javax.servlet.jsp.JspContext;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.SimpleTagSupport;

public class PagerTag extends SimpleTagSupport {
	
	private String url;
	private String page;
	private String pageCount;
	
	
	public String getUrl() {
		return url;
	}


	public void setUrl(String url) {
		this.url = url;
	}


	public String getPage() {
		return page;
	}


	public void setPage(String page) {
		this.page = page;
	}


	public String getPageCount() {
		return pageCount;
	}


	public void setPageCount(String pageCount) {
		this.pageCount = pageCount;
	}


	public void doTag() throws IOException,JspException{
		
		JspContext jspctx = getJspContext();
		String linkStart = null;
		String linkMid = null;
		String linkEnd = null;
		int pageNo = page==null?1:Integer.parseInt(page);
		int pageTotal = Integer.parseInt(this.pageCount);
		String jsp = "";
	
		if(pageTotal != 1){
			if(this.url.contains("?")){
				linkStart="<a href='"+this.url+"&page=";
			}else{
				linkStart = "<a href='"+this.url+"?page=";
			}
			linkMid = "'>";
			linkEnd = "</a>";
			
			jsp = "<div id=\"pager_link\">";
			if(pageNo != 1){
				jsp +=linkStart+(pageNo-1)+linkMid+"上一页"+linkEnd;
			}
			for(int i=1;i<pageTotal+1;i++){
				if(i==pageNo){
					jsp+=i;
				}else{
					jsp += linkStart+i+linkMid+i+linkEnd;
				}
			}
			if(pageNo != pageTotal){
				jsp +=linkStart+(pageNo+1)+linkMid+"下一页"+linkEnd;
			}	
			jsp += "</div>";
		}
		
		
		jspctx.setAttribute("page_link", jsp);
	
	}
	
}

 标签描述文件pager-tag.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-jsptaglibrary_1_1.dtd">
<taglib>
<tlibversion>1.0</tlibversion>
<jspversion>1.1</jspversion>
<shortname>lectery</shortname>
<uri>http://lectery/pager-tag</uri>

<tag>
	<name>pager</name>
	<tagclass>lectery.tag.PagerTag</tagclass>
	<bodycontent>empty</bodycontent>
	<attribute>
		<name>page</name>
		<required>true</required>
		<rtexprvalue>true</rtexprvalue>
	</attribute>
	<attribute>
		<name>url</name>
		<required>true</required>
		<rtexprvalue>true</rtexprvalue>
	</attribute>
	<attribute>
		<name>pageCount</name>
		<required>true</required>
		<rtexprvalue>true</rtexprvalue>
	</attribute>
	
</tag>

<tag>
	<name>welcome</name>
	<tagclass>org.guava.tag.SimpleTag</tagclass>
	<bodycontent>empty</bodycontent>
	<attribute>
		<name>name</name>
		<required>true</required>
		<rtexprvalue>true</rtexprvalue>
	</attribute>
	<attribute>
		<name>pageNo</name>
		<required>true</required>
		<rtexprvalue>true</rtexprvalue>
	</attribute>
	<attribute>
		<name>pageCount</name>
		<required>true</required>
		<rtexprvalue>true</rtexprvalue>
	</attribute>
</tag>
</taglib>



分页用的Bean

package lectery.util;

import java.util.List;


public class PageModel {
	

	private int total;
	
	
	private List list;
	
	
	private int pageNo;
	
    
	private int pageSize; 
	
	private int totalPage;
	
	public int getTotal() {
		return total;
	}
	

	public int getTotalPage() {
		return (total + pageSize - 1) / pageSize;
	}
	
	public void setTotal(int totalRecords) {
		this.total = totalRecords;
	}

	public List getList() {
		return list;
	}

	public void setList(List list) {
		this.list = list;
	}

	public int getPageSize() {
		return pageSize;
	}

	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}

	public int getPageNo() {
		return pageNo;
	}

	public void setPageNo(int pageNo) {
		this.pageNo = pageNo;
	}

	public int getTopPageNo() {
		return 1;
	}
	

	public int getPreviousPageNo() {
		if (pageNo <= 1) {
			return 1;
		}
		return pageNo -1;
	}
	

	public int getNextPageNo() {
		if (pageNo >= getTotalPage()) {
			return getTotalPage()==0?1:getTotalPage();
		}
		return pageNo + 1;
	}
	

	public int getBottomPageNo() {
		return getTotalPage() == 0?1:getTotalPage();
	}
}
 

 

页面中的使用

 

	<lectery:pager url="post/all" page="${page}" pageCount="${postsModel.totalPage}"/>		
   		 ${page_link }
  	</body>

 

分享到:
评论

相关推荐

    java分页标签自定义分页标签自定义分页标签

    自定义分页标签自定义分页标签自定义分页标签自定义分页标签自定义分页标签自定义分页标签自定义分页标签自定义分页标签自定义分页标签自定义分页标签自定义分页标签自定义分页标签自定义分页标签自定义分页标签...

    自定义标签小练习----一个简单的分页标签

    本篇内容主要介绍了一个简单的分页标签的实现过程,这是一个很好的学习实践,帮助开发者理解和掌握自定义标签的编写与应用。 首先,我们要理解自定义标签的生命周期和组成部分。一个完整的自定义标签通常包含以下...

    自定义分页标签自定义分页标签

    在IT行业中,分页是一种常见的数据展示...总的来说,自定义分页标签是一个集前端UI设计、交互逻辑、数据处理和性能优化于一体的开发任务。开发者需要结合业务需求,综合运用多种技术,创造出既美观又实用的分页组件。

    牛人写的分页程序 分页标签

    标题提到的“牛人写的分页程序,分页标签”很可能是指一个高效且易用的分页解决方案,可能是基于Java开发的,特别是利用了自定义标签(Custom Tags)这一特性。 Java自定义标签(Custom Tags)是JSP(JavaServer ...

    一个用于分页的自定义标签

    1. **标签库描述符(TLD)**:在TLD文件中,开发者会声明这个分页标签,包括标签的名字、属性(如当前页数、总页数等)、以及指向标签处理类的引用。 ```xml &lt;name&gt;paging &lt;tag-class&gt;...

    Struts2自定义分页标签

    4. **创建分页标签库**:Struts2支持自定义标签,你可以创建一个`.tld`文件来定义分页标签。标签库应该包含开始、结束、上一页、下一页等标签,以便在视图层中方便地使用。 5. **实现标签处理类**:对应的Java类...

    自定义页面分页标签自定义页面分页标签

    总的来说,自定义页面分页标签涉及到前端界面设计、交互逻辑、后端接口设计等多个方面,是提高用户体验和网站性能的重要手段。掌握这些知识点,可以帮助开发者构建高效、美观且易于使用的分页功能。

    实用java分页标签

    Java分页标签是Java Web开发中的一个重要概念,它主要用于处理大量数据的展示,尤其是在数据库查询结果需要在网页上以多页形式呈现时。这个技术可以让用户更方便地浏览和导航大量的信息,而不会一次性加载所有数据...

    好用的分页标签

    "好用的分页标签"可能是一个专为Java服务器页面(JSP)设计的组件,用于简化开发人员在网页中实现分页功能的过程。 JSP是Java的一种视图技术,它允许开发者在HTML或XML文档中嵌入Java代码,从而动态生成网页内容。...

    java超炫分页标签

    自己写的java分页标签,一次显示10页,当前页数居中 1.2.3.4.5.6.7.8.9.10这样的分页,并且可以设置一页显示的条数,有转到多少页的功能。。。用法在txt文档里写出来了,并且提供了一个jquery包,因为要用到jquery包

    非常好用的jsp分页标签

    本资源提供了一个非常好用的JSP分页标签,它简化了在JSP页面上实现分页的过程,无需编写过多的Java代码,只需在JSP页面上插入特定的标签即可。 1. **JSP分页标签**:JSP分页标签是一种预定义的、可重用的组件,可以...

    jsp自定义分页标签

    本主题将深入探讨“jsp自定义分页标签”,这是一种在网页展示大量数据时非常实用的功能,它可以有效地帮助用户浏览和操作数据。 一、JSP自定义标签基础 JSP自定义标签是JSP技术的一部分,它允许开发者创建自己的...

    JAVA分页标签-简单的分页标签

    1. 用户请求一个页面,该页面包含分页标签。 2. JSP引擎解析分页标签,并调用与其关联的TagHandler(标签处理器)。 3. TagHandler与后台服务(如Servlet或Controller)交互,获取当前页的数据和总页数信息。 4. ...

    分页标签组件.rar

    本项目提供了一个基于JSP的分页标签组件,名为"PaperTag",旨在简化开发过程,提高代码可读性和可维护性。 分页标签组件的工作原理是通过自定义TLD(Tag Library Descriptor)文件,定义标签行为,并在JSP页面中...

    自己写的一个php的分页类

    标题中的"自己写的一个php的分页类"表明这是一个自定义的PHP类,用于实现数据库查询的分页功能。分页类通常包括计算页码、获取每页数据、显示导航链接等功能,以优雅地呈现数据库查询结果。 描述中提到的“select *...

    java 写的 分页标签

    标题提到的是一个由Java编写的自定义分页标签,它允许开发者在JSP页面上方便地实现分页效果。下面将详细介绍这个分页标签的工作原理、使用方法以及可能涉及到的相关技术。 分页标签通常是基于Servlet和JSP的Web应用...

    基于struts2 自定义标签 分页

    通过以上步骤,你可以创建一个基于Struts2的自定义分页标签,实现与Oracle数据库的交互。这个实践有助于提升你对Struts2框架的理解,同时掌握自定义标签和数据库操作的关键技能。记得在实际项目中,还需要关注安全性...

    jsp-web开发通用分页标签

    本教程将详细讲解如何使用JSP(JavaServer Pages)技术来实现一个通用的分页标签,以便在各种项目中复用。 首先,JSP是Java平台上的动态网页技术,它允许开发人员在HTML或者XML文档中嵌入Java代码。在分页场景下,...

    pager-taglib分页标签

    `pager-taglib`是一个专为JSP页面设计的分页标签库,它简化了在JSP中实现分页的过程。下面将详细介绍`pager-taglib`的安装、使用方法以及其核心知识点。 ### 1. `pager-taglib`简介 `pager-taglib`是一个开源的JSP...

Global site tag (gtag.js) - Google Analytics