为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

自定义标签(二)分页标签

2018-04-30 17页 doc 40KB 11阅读

用户头像

is_009226

暂无简介

举报
自定义标签(二)分页标签自定义标签(二)分页标签 创建和使用一个标签的具体步骤如下: 创建标签的处理类(Tag Handler Class) 创建标签库描述文件(Tag Library Descrptor File) 在web.xml文件中配置元素 在jsp文件中引入标签库 import javax.servlet.http.HttpServletRequest; /***** * * @author wangyalei * */ public class Pager { private int totalRows; // ...
自定义标签(二)分页标签
自定义标签(二)分页标签 创建和使用一个标签的具体步骤如下: 创建标签的处理类(Tag Handler Class) 创建标签库描述文件(Tag Library Descrptor File) 在web.xml文件中配置元素 在jsp文件中引入标签库 import javax.servlet.http.HttpServletRequest; /***** * * @author wangyalei * */ public class Pager { private int totalRows; // 数据总行数 private int pageSize = 5;// 每页显示的行数 private int currentPage; // 当前页号 private int totalPages; // 总页数 private int startRow;// 当前页在数据库中的起始行 private String strUrl;// 出现[1][2][3][4]所用 private int startPage;// 起始页码,, private int endPage;// 结束页码,, private boolean hasPreviousPage = false;// 上一页是否显示 private boolean hasNextPage = false;// 下一页是否显示 // 构造函数 总数 // 对各个变量进行初始设置 public Pager(int _totalRows) { totalRows = _totalRows;// 数据数量 totalPages = totalRows / pageSize;// 页数 if (totalRows % pageSize 0) { totalPages++; } currentPage = 1; startRow = 0; if (totalPages currentPage) { hasNextPage = true; } startPage = 1; // 当数据库中数据小于十页时 if (totalPages 10) { endPage = totalPages; } else { endPage = 10; } } public Pager() { } // 以下为类中字段的GET,SET访问器 public int getStartRow() { return startRow; } public int getTotalPages() { return totalPages; } public int getCurrentPage() { return currentPage; } public int getPageSize() { return pageSize; } public void setTotalRows(int totalRows) { this.totalRows = totalRows; } public void setStartRow(int startRow) { this.startRow = startRow; } public void setTotalPages(int totalPages) { this.totalPages = totalPages; } public void setCurrentPage(int currentPage) { this.currentPage = currentPage; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getTotalRows() { return totalRows; } public boolean getHasNextPage() { return hasNextPage; } public void setHasNextPage(boolean hasNextPage) { this.hasNextPage = hasNextPage; } public boolean getHasPreviousPage() { return hasPreviousPage; } public void setHasPreviousPage(boolean hasPreviousPage) { this.hasPreviousPage = hasPreviousPage; } public String getStrUrl() { return strUrl; } public void setStrUrl(String strUrl) { this.strUrl = strUrl; } public int getEndPage() { return endPage; } public void setEndPage(int endPage) { this.endPage = endPage; } public int getStartPage() { return startPage; } public void setStartPage(int startPage) { this.startPage = startPage; } /* * 方法名:previous 方法参数:空 方法返回值类型:void 方法功能:向上翻一页 */ public void previous() { currentPage--; if (totalPages = 10) { startPage = 1; endPage = totalPages; } else if (totalPages 10 totalPages = 20) { startPage = 1; endPage = currentPage + 9 totalPages ? totalPages : currentPage + 9; } else { if (currentPage = 11) { startPage = 1; endPage = currentPage + 9; } if (currentPage 11) { startPage = currentPage - 10; endPage = currentPage + 9; } if (currentPage + 9 = totalPages) { startPage = totalPages - 19; endPage = totalPages; } } if (currentPage == 1) { hasPreviousPage = false; } else { hasPreviousPage = true; } if (currentPage == totalPages) { hasNextPage = false; } else { hasNextPage = true; } startRow = (currentPage - 1) * pageSize; } /* * 方法名:next 方法参数:空 方法返回值类型:void 方法功能:向下翻一页 */ public void next() { currentPage++; if (totalPages = 10) { startPage = 1; endPage = totalPages; } else if (totalPages 10 totalPages = 20) { startPage = 1; endPage = currentPage + 9 totalPages ? totalPages : currentPage + 9; } else { if (currentPage = 11) { startPage = 1; endPage = currentPage + 9; } if (currentPage 11) { startPage = currentPage - 10; endPage = currentPage + 9; } if (currentPage + 9 = totalPages) { startPage = totalPages - 19; endPage = totalPages; } } if (currentPage == 1) { hasPreviousPage = false; } else { hasPreviousPage = true; } if (currentPage == totalPages) { hasNextPage = false; } else { hasNextPage = true; } startRow = (currentPage - 1) * pageSize; } /* * 方法名:getMyUrl 方法参数:空 方法返回值类型:void 方法功能:生成字符串送往客户端 */ public void getMyUrl(String url) { StringBuffer myUrl = new StringBuffer(); for (int i = startPage; i = endPage; i++) { myUrl.append( a href= + url + currentPage= + i + totalPages= + this.getTotalPages() + [ + i + ] /a ); } strUrl = myUrl.toString(); } /* * 方法名:refresh 方法参数:int 方法返回值类型:void 方法功能:根据参数跳到指定页 */ public void refresh(int _currentPage) { currentPage = _currentPage; if (totalPages = 10) { startPage = 1; endPage = totalPages; } else if (totalPages 10 totalPages = 20) { startPage = 1; endPage = currentPage + 9 totalPages ? totalPages : currentPage + 9; } else { if (currentPage = 11) { startPage = 1; endPage = currentPage + 9; } if (currentPage 11) { startPage = currentPage - 10; endPage = currentPage + 9; } if (currentPage + 9 = totalPages) { startPage = totalPages - 19; endPage = totalPages; } } if (currentPage == 1) { hasPreviousPage = false; } else { hasPreviousPage = true; } if (currentPage == totalPages) { hasNextPage = false; } else { hasNextPage = true; } startRow = (currentPage - 1) * pageSize; } public static Pager getPager(HttpServletRequest request, String url) { Pager pager = new Pager(); pager.setCurrentPage(Integer.parseInt(request .getParameter( currentPage ))); pager.setTotalPages(Integer .parseInt(request.getParameter( totalPages ))); if (!StrUtil.isNull(request.getParameter( pageroperation ))) { if (StrUtil.isEqual(request.getParameter( pageroperation ) .toString(), previous )) { pager.previous(); pager.getMyUrl(url); } else if (StrUtil.isEqual(request.getParameter( pageroperation ) .toString(), next )) { pager.next(); pager.getMyUrl(url); } } else { pager.refresh(Integer.parseInt(request.getParameter( currentPage ) .toString())); pager.getMyUrl(url); } return pager; } } import javax.servlet.http.HttpServletRequest; import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspTagException; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.tagext.TagSupport; import com.handson.service.util.Pager; /********************** * * @author wangyalei * */ public class PaginationTag extends TagSupport { public int doStartTag() throws JspException { try { HttpServletRequest request = (HttpServletRequest) pageContext .getRequest(); JspWriter out = pageContext.getOut(); StringBuffer urlStr = new StringBuffer(); if (StrUtil.isEqual(this.getHasPreviousPage(), true )) { urlStr.append( a href=' ); urlStr.append(action); urlStr.append( pageroperation=previous currentPage= +((Pager)request.getAttribute( page )).getCurrentPage()+ totalPages= +((Pager)request.getAttribute( page )).getTotalPages()+ ' 上一页 /a ); } urlStr.append(url); if (StrUtil.isEqual(this.getHasNextPage(), true )) { urlStr.append( a href=' ); urlStr.append(action); urlStr.append( pageroperation=next currentPage= +((Pager)request.getAttribute( page )).getCurrentPage()+ totalPages= +((Pager)request.getAttribute( page )).getTotalPages()+ ' 下一页 /a ); } out.print(urlStr); } catch (java.io.IOException e) { throw new JspTagException(e.getMessage()); } return SKIP_BODY; } private String url; private String action; private String hasPreviousPage; private String hasNextPage; public String getHasPreviousPage() { return hasPreviousPage; } public void setHasPreviousPage(String hasPreviousPage) { this.hasPreviousPage = hasPreviousPage; } public String getHasNextPage() { return hasNextPage; } public void setHasNextPage(String hasNextPage) { this.hasNextPage = hasNextPage; } public String getAction() { return action; } public void setAction(String action) { this.action = action; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } ?xml version= 1.0 encoding= UTF-8 ? taglib tlib-version 1.0 /tlib-version jsp-version 1.2 /jsp-version tag !-- 设定Tag的名字 -- name pagination /name !-- 设定Tag的处理类 -- tag-class com.tag.service.util.PaginationTag /tag-class !-- 示标签中没有body -- body-content empty /body-content attribute !-- name:属性名称 -- name url /name !-- required:属性是否必需的,默认为false -- required true /required !-- rtexprvalue:属性值是否可以为request-time表达式,也就是类似 于 %=…% 的表达式 默认为false -- rtexprvalue true /rtexprvalue /attribute attribute name action /name required true /required rtexprvalue true /rtexprvalue /attribute attribute name hasPreviousPage /name required true /required rtexprvalue true /rtexprvalue /attribute attribute name hasNextPage /name required true /required rtexprvalue true /rtexprvalue /attribute /tag /taglib %@ page language= java contentType= text/html; charset=gbk pageEncoding= gbk % %@ taglib uri= %@ taglib uri= /WEB-INF/Pagination.tld prefix= p % !DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN html xmlns= head meta http-equiv= Content-Type content= text/html; charset=gb2312 / title 系统帐户管理 /title /head body span class= STYLE1 系统参数 /span span class= STYLE5 strong | /strong span class= STYLE3 系统帐户管理 /span /span form id= form1 name= form1 method= post p:pagination url= ${page.strUrl} action= appUserManager.do?method=init hasPreviousPage= ${page.hasPreviousPage} hasNextPage= ${page.hasNextPage} / /body /html 在jsp引擎遇到自定义标签的起始标志,就会调用doStartTag()方法,doStartTag()方法返回一个整数值,用来决定程序的后续。 Tag.SKIP_BODY :表示标签之间的内容被忽略 Tag.EVAL_BODY_INCLUDE:表示标签之间的内容正常执行 在jsp引擎遇到自定义标签的结束标志,就会调用doEndTag()方法,doStartTag()方法返回一个整数值,用来决定程序的后续流程。 Tag.SKIP_PAGE:表示立刻停止执行网页,网页尚未处理的静态内容与jsp程序均被忽略任何已有的输出的内容立刻返回到客户的浏览器上 tag_EVAL_PAGE:表示按照正常的流程继续执行jsp网页 一个标签处理类可以通过javax.servlet.jsp.PageContext与jsp交互,通过javax.servlet.jsp.PageContext类,标签处理类就可以访问jsp中的request,session和application对象
/
本文档为【自定义标签(二)分页标签】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索