`
pengjianbo1
  • 浏览: 232486 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

自定义标签分页

    博客分类:
  • J2EE
阅读更多

首先创建PageBean

 

package com.pjb.sys.tag;

public class PageBean {

	private int totalResults; // 总记录数

	public static int pageSize = 5; // 每页显示的记录数

	private int currentPage = 1; // 当前页号

	public PageBean(int totalResults, int pageSize) {
		super();
		this.totalResults = totalResults;
		PageBean.pageSize = pageSize;
	}

	public PageBean() {

	}

	/**
	 * 
	 * @return 得到总记录数
	 */
	public int getTotalResults() {
		return totalResults;
	}

	public void setTotalResults(int totalResults) {
		this.totalResults = totalResults;
	}

	public int getCurrentPage() {
		return currentPage;
	}

	public void setCurrentPage(int currentPage) {
		if (this.currentPage < 1) {
			this.currentPage = 1;
		}
		if (this.currentPage > this.totalResults) {
			this.currentPage = this.totalResults;
		}
		this.currentPage = currentPage;
	}

	public int getPageSize() {
		return pageSize;
	}

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

	public int getTotalPageSize() {
		return (int) Math.ceil(this.totalResults / (double) PageBean.pageSize);
	}

	/**
	 * 是否有下一页
	 * 
	 * @return
	 */
	public boolean IsNextPage() {
		if (this.currentPage < this.getTotalPageSize()) {
			return true;
		}
		return false;
	}

	/**
	 * 是否有上一页
	 */
	public boolean IsUpPage() {
		if (this.currentPage > 1) {
			return true;
		}
		return false;
	}

	/**
	 * 从哪一条开始取
	 */

	public int getStartResult() {
		return (this.currentPage - 1) * PageBean.pageSize;
	}

}

 

标签PageTag类

 

package com.pjb.sys.tag;

import java.io.IOException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;

@SuppressWarnings("serial")
public class PageTag extends TagSupport {

	// 请求的action
	private String action;

	public String getAction() {
		return action;
	}

	public void setAction(String action) {
		this.action = action;
	}

	@Override
	public int doEndTag() throws JspException {

		JspWriter out = pageContext.getOut();
		HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();
		PageBean pageBean = (PageBean) request.getAttribute("pageBean");

		try {
			out.println("<table>");
			out.println("<tr>");
			out.println("<td>");
			out.println("第" + pageBean.getCurrentPage() + "页");
			out.println("共" + pageBean.getTotalPageSize() + "页" + "共" + pageBean.getTotalResults() + "记录");
			out.println("<a href=\"" + request.getContextPath() + action + "1\">首页</a>");
			out.println("<a href=\"" + request.getContextPath() + action + pageBean.getTotalPageSize() + "\">尾页</a>");

			if (pageBean.IsUpPage()) {

				out.println("<a href=\"" + request.getContextPath() + action + (pageBean.getCurrentPage() - 1)
						+ "\">上页</a>");

			} else {

				out.println("上页");

			}
			if (pageBean.IsNextPage()) {

				out.println("<a href=\"" + request.getContextPath() + action + (pageBean.getCurrentPage() + 1)
						+ "\">下页</a>");

			} else {

				out.println("下页");

			}

			out.println("<select onchange=\"self.location='" + request.getContextPath() + action
					+ "'+this.options[this.selectedIndex].value\">");
			for (int i = 1; i <= pageBean.getTotalPageSize(); i++) {

				if (pageBean.getCurrentPage() == i) {
					out.println("<option value=" + i + " selected>" + i + "</option>");
				} else {
					out.println("<option value=" + i + ">" + i + "</option>");
				}
			}
			out.println("</select>");
			out.println("</td>");
			out.println("</tr>");
			out.println("</table>");

		} catch (IOException e) {

			e.printStackTrace();
		}

		return EVAL_PAGE;
	}

}

 

 

创建mytag.tld文件

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "web-jsptaglibrary_1_2.dtd" >
<taglib>
	<tlib-version>1.0</tlib-version>
	<jsp-version>1.2</jsp-version>
	<short-name>my</short-name>
	<tag>
		<name>cutPage</name>
		<tag-class>com.pjb.sys.tag.PageTag</tag-class>
		<attribute>
			<name>action</name>
			<required>true</required>
			<description>请求action 如:showBookPage.do?page</description>
		</attribute>
	</tag>
</taglib>

 

在页面中使用时,需导入标签定义

 

<%@ taglib prefix="my" uri="/WEB-INF/mytag.tld"%>

 

引用标签名

 

<my:cutPage action="/readerManagerAction.do?method=getReaderList&page="></my:cutPage>

 

 action 代码

 

/**
	 * 查询列表
	 * 
	 * @param mapping
	 * @param form
	 * @param request
	 * @param response
	 * @return ActionForward
	 * @throws Exception
	 */
	public ActionForward getReaderList(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		try {
			ReaderService rs = (ReaderService) this.getBean("readerService");
			PageBean pageBean = new PageBean();
			String pageStr = request.getParameter("page");
			if (pageStr != null) {
				pageBean.setCurrentPage(Integer.parseInt(pageStr));
			}
			List<ReaderBean> list = rs.getReaderList(pageBean);
			request.setAttribute("list", list);
			request.setAttribute("pageBean", pageBean);
			return mapping.findForward("showReaderList");
		} catch (Exception e) {
			e.printStackTrace();
			logger.error(e.getMessage());
			request.setAttribute("errMsg", e.getMessage());
		}
		return mapping.findForward("error");
	}

 

ibatis分页取记录DAO

 

 

public List<ReaderBean> getReaderList(PageBean pageBean) throws FrameworkDaoException {
		try {
			List readerList = this.getSqlMapClientTemplate().queryForList("getReaderList", null);
			pageBean.setTotalResults(readerList.size());
			return this.getSqlMapClientTemplate().queryForList("getReaderList", null, pageBean.getStartResult(), pageBean.getPageSize());
		} catch (DataAccessException e) {
			e.printStackTrace();
			throw new FrameworkDaoException(e);
		}
	}

  

 

 

 

分享到:
评论

相关推荐

    强大的自定义标签分页,内有说明

    "强大的自定义标签分页"是指通过自定义JSP标签来实现灵活、高效的分页功能。这种方式可以提供更高的定制性,使得开发者可以根据项目需求进行个性化的设计和调整。 首先,我们来了解自定义标签。在Java Web开发中,...

    java+hibernate+jsp+tld+自定义标签分页

    本项目结合了Java、Hibernate、JSP以及TLD(Tag Library Descriptor)技术,实现了一个高效、易懂且实用的自定义标签分页解决方案。下面我们将详细探讨这些技术以及它们在分页中的应用。 首先,Java作为后端编程...

    java自定义标签分页

    在这个“java自定义标签分页”主题中,我们将深入探讨如何利用自定义标签来实现高效且易于维护的分页功能。 首先,自定义标签的定义通常涉及以下组件: 1. TLD(Tag Library Descriptor)文件:这是定义自定义标签...

    Taglib自定义标签分页

    本项目“Taglib自定义标签分页”提供了一个完整的解决方案,它实现了在网页上进行分页显示的功能,无需在每个JSP页面中重复编写分页代码,极大地提高了开发效率和代码复用性。 首先,我们需要了解自定义标签的基本...

    自定义标签分页非常简单

    标题"自定义标签分页非常简单"意味着我们将探讨如何通过自定义标签来实现一个简洁且易于使用的分页功能。 自定义标签在JSP 2.0及以上版本中引入,它基于JSP Tag Library(JSTL)规范。自定义标签不是HTML标签,而是...

    JSP自定义标签分页

    JSP自定义标签分页+Struts1.x标签,包含标签分页类、标签tld文件、web.xml配置和调用例子,非常地简单。 只要在Action传request.setAttribute("listUser", listUser);到JSP即可实现自动分页,输出分页样式可以自己去...

    邮箱(hibernate+Servlet+自定义标签,内带hibernate配置,自定义标签分页)

    标题和描述中提到的"邮箱(hibernate+Servlet+自定义标签,内带hibernate配置,自定义标签分页)"是一个基于Java技术栈的Web应用项目,它利用Hibernate作为持久层框架,Servlet作为控制层,以及自定义标签来实现前端展示...

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

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

    基于struts2 自定义标签 分页

    在这个基于Struts2的自定义分页标签的实践中,我们将深入探讨如何创建、配置和使用自定义标签来实现数据的分页展示,同时与Oracle数据库进行交互。 首先,理解分页的基本概念至关重要。分页是将大量数据分成小块,...

    简单易用的自定义标签分页显示

    //得到分页米尺数值 sb.append("function getMaxNum(){"); sb.append("var val=document.getElementById('onePageMaxNum').value;"); sb.append("if(val=='') return "+measurement+";"); sb.append(" return ...

    Struts 2 自定义标签分页

    总结一下,实现Struts 2 自定义标签分页需要对Struts 2框架有深入理解,包括标签库的创建、Java类的编写、JSP页面的布局以及Action的交互。通过这种方式,我们可以创建出符合项目需求的、灵活可扩展的分页解决方案,...

    SSH框架整合通用模板(内涵自定义标签分页)

    总的来说,SSH框架整合通用模板提供了一个成熟的开发环境,通过自定义标签分页、通用DAO和服务,使得开发人员可以快速构建应用,同时降低了维护成本。对于初学者或熟悉SSH的开发者来说,这是一个很好的学习和实践的...

    hibernate + 自定义标签分页

    本例中,我们探讨的是如何结合Struts、Hibernate和自定义标签实现分页功能,这是一种常见的优化用户界面体验的技术,特别是对于数据量大的查询结果。 1. **分页原理** 分页的基本思想是将大量数据分成多个小部分,...

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

    本项目提供了一个用于分页的自定义标签,适用于那些需要在网页上进行数据分页展示的应用。 首先,我们要理解什么是JSP自定义标签。在JSP中,自定义标签是通过TLD(Tag Library Descriptor)文件定义的,它允许...

    Struts2自定义分页标签

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

    java自定义标签 分页标签 whaosoft 143zh

    在Java Web开发中,自定义标签通常用于封装复杂的业务逻辑或者视图展示,比如这里的"分页标签"。分页是Web应用中常见的功能,用于处理大量数据时的页面导航,如搜索结果或用户列表的显示。 `whaosoft`可能是一个...

    jsp java自定义标签 分页 当前位置 循环遍历数据

    本文将深入探讨如何使用Java自定义标签来实现分页功能,当前位置的显示以及数据的循环遍历。 首先,让我们了解一下Java自定义标签的基本概念。自定义标签是JSP的一种扩展机制,它允许开发者创建自己的标签库,这些...

    自定义分页标签

    自定义的漂亮分页标签,支持上下翻页,直接跳转指定页

    JSTL JSP 自定义标签 分页

    jh-plugins是一项基于JSTL的自定义标签(插件)库,致力于打造一处实现、任何项目通用的开源项目。 jh-plugins已实现标签库:分页 jh-plugins特点:高效、轻巧、简单、适用(可融合与任何B/S架构的java项目) jh-...

Global site tag (gtag.js) - Google Analytics