2019独角兽企业重金招聘Python工程师标准>>>

1 先要导入一个jar包

2 自定一个标签库 ,该库放在WEB-INF/tld下面

3 需要实现 该类 extends TagSupport 实现里面的方法

4 在jsp页面引入 该标签库 并使用

5 在web.xml文件中配置该标签 (不过这个不是必须的)

6 现在给出一个显示页码的 自定义 处理类

package com.shi.utils;import java.io.IOException;
import java.util.Map;import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;import org.apache.taglibs.standard.tag.common.core.UrlSupport;/*** 显示格式 上一页 1 2 3 4 5 下一页*/
public class NavigationTag extends TagSupport {static final long serialVersionUID = 2372405317744358833L;/*** request 中用于保存Page<E> 对象的变量名,默认为“page”*/private String bean = "page";/*** 分页跳转的url地址,此属性必须*/private String url = null;/*** 显示页码数量*/private int number = 5;@Overridepublic int doStartTag() throws JspException {JspWriter writer = pageContext.getOut();HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();Page page = (Page)request.getAttribute(bean); if (page == null) return SKIP_BODY;url = resolveUrl(url, pageContext);try {//计算总页数int pageCount = page.getTotal() / page.getSize();if (page.getTotal() % page.getSize() > 0) {pageCount++;}writer.print("<nav><ul class=\"pagination\">");//显示“上一页”按钮if (page.getPage() > 1) {String preUrl = append(url, "page", page.getPage() - 1);preUrl = append(preUrl, "rows", page.getSize());writer.print("<li><a href=\"" + preUrl + "\">上一页</a></li>");} else {writer.print("<li class=\"disabled\"><a href=\"#\">上一页</a></li>");}//显示当前页码的前2页码和后两页码 //若1 则 1 2 3 4 5, 若2 则 1 2 3 4 5, 若3 则1 2 3 4 5,//若4 则 2 3 4 5 6 ,若10  则 8 9 10 11 12int indexPage = (page.getPage() - 2 > 0)? page.getPage() - 2 : 1;  for(int i=1; i <= number && indexPage <= pageCount; indexPage++, i++) {if(indexPage == page.getPage()) {writer.print( "<li class=\"active\"><a href=\"#\">"+indexPage+"<span class=\"sr-only\">(current)</span></a></li>");continue;}String pageUrl  = append(url, "page", indexPage);pageUrl = append(pageUrl, "rows", page.getSize());writer.print("<li><a href=\"" + pageUrl + "\">"+ indexPage +"</a></li>");}//显示“下一页”按钮if (page.getPage() < pageCount) {String nextUrl  = append(url, "page", page.getPage() + 1);nextUrl = append(nextUrl, "rows", page.getSize());writer.print("<li><a href=\"" + nextUrl + "\">下一页</a></li>");} else {writer.print("<li class=\"disabled\"><a href=\"#\">下一页</a></li>");}writer.print("</nav>");} catch (IOException e) {e.printStackTrace();}return SKIP_BODY;}private String append(String url, String key, int value) {return append(url, key, String.valueOf(value));}/*** 为url 参加参数对儿* * @param url* @param key* @param value* @return*/private String append(String url, String key, String value) {if (url == null || url.trim().length() == 0) {return "";}if (url.indexOf("?") == -1) {url = url + "?" + key + "=" + value;} else {if(url.endsWith("?")) {url = url + key + "=" + value;} else {url = url + "&amp;" + key + "=" + value;}}return url;}/*** 为url 添加翻页请求参数* * @param url* @param pageContext* @return* @throws javax.servlet.jsp.JspException*/private String resolveUrl(String url, javax.servlet.jsp.PageContext pageContext) throws JspException{//UrlSupport.resolveUrl(url, context, pageContext)Map params = pageContext.getRequest().getParameterMap();for (Object key:params.keySet()) {if ("page".equals(key) || "rows".equals(key)) continue;Object value = params.get(key);if (value == null) continue;if (value.getClass().isArray()) {url = append(url, key.toString(), ((String[])value)[0]);} else if (value instanceof String) {url = append(url, key.toString(), value.toString());}}return url;}/*** @return the bean*/public String getBean() {return bean;}/*** @param bean the bean to set*/public void setBean(String bean) {this.bean = bean;}/*** @return the url*/public String getUrl() {return url;}/*** @param url the url to set*/public void setUrl(String url) {this.url = url;}public void setNumber(int number) {this.number = number;}}

转载于:https://my.oschina.net/u/3677987/blog/1531532

jsp自定自定义标签相关推荐

  1. 深入体验JavaWeb开发内幕——简述JSP中的自定义标签叫你快速学会

    转载自   深入体验JavaWeb开发内幕--简述JSP中的自定义标签叫你快速学会 自定义标签,顾名思义,就是自己定义的标签.那么我们为什么要自己定义一些标签呢? 我们知道,如果要在JSP中获取数据我 ...

  2. 自定义标签的使用jsp实例_JSP自定义标签示例教程

    自定义标签的使用jsp实例 Today we will look into JSP custom tags. Earlier we learned about JSP Action Elements, ...

  3. JSP GridView --使用自定义标签实现ASP.NET的控件

    JSP用自定义标签实现ASP.net的gridview.datasource组件 第一部分:使用说明 使用过ASP.NET的人都知道,gridview控件功能很强大,使用很方便,提高了开发效率.而且表 ...

  4. JSP笔记——7.自定义标签

    jsp标签具有与html标签一样的格式,可以用来代替jsp中的Java脚本,使代码简介.使用自定义标签之前需要建立一个*.tld文件,每个文件对应一个标签库,里面可以包含很多的自定义标签. 每一个标签 ...

  5. JSP页面tdl自定义标签的做法

    思路: 首先tdl自定义标签就是比如类似input.div.ul.li之类的标签,只是名字自己来定义,但实际上要在页面上看到效果还是需要些html代码,只是在页面上只需要写自己标签就可以代表一部分ht ...

  6. java ee jsp_EE JSP:使用自定义标签库生成动态内容

    java ee jsp 在Web应用程序中开发View层时,您希望尽量不要重复JSP文件中的内容. JSP spec API允许您通过使用标记库来减少这种重复. 定制JSP标记是用户定义的xml标记元 ...

  7. EE JSP:使用自定义标签库生成动态内容

    在Web应用程序中开发View层时,您希望尽量不要重复JSP文件中的内容. JSP spec API允许您通过使用标记库来减少这种重复. 定制JSP标记是用户定义的xml标记元素,您可以将其插入JSP ...

  8. javaweb学习总结(二十三)——jsp自定义标签开发入门

    一.自定义标签的作用 自定义标签主要用于移除Jsp页面中的java代码. 二.自定义标签开发和使用 2.1.自定义标签开发步骤 1.编写一个实现Tag接口的Java类(标签处理器类) 1 packag ...

  9. JSP自定义标签_控制标签体是否执行

    自定义标签,在类中控制该自定义标签是否显示: import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.Tag; i ...

最新文章

  1. Pytorch源码与运行原理浅析--网络篇(一)
  2. 10个重构小技巧,去掉代码中的S味
  3. jenkins安装与配置---window,mis包直接安装
  4. svn更新提交等操作报svn: E155004错误,解决办法
  5. Java修改全文数字,求大神帮我修改下java计算机代码,数字键只有0和8能用
  6. python中的函数def和函数的参数
  7. java动态生成柱状图3D_在android上动态实现ichartjs的3D柱形图
  8. fopen的路径怎么写_用C++写光线追踪:单根光线的渲染
  9. JDK,JRE,JVM三者关系
  10. 【论文笔记】PTE:预测性文本嵌入
  11. WPF编程基础入门 ——— 第三章 布局(四)布局面板StackPanel
  12. 设备管理器里“SM总线控制器”、“其它PCI桥设备”驱动有问题
  13. python 获得时间戳_Python 获取时间戳
  14. 系分 02 软件工程
  15. 计算机网络各层设备故障及可行的解决方案
  16. 神奇的递归!一文读懂函数递归(python实现)
  17. 3D Vision Rebuttal
  18. 待字闺中之此起彼伏分析
  19. 【金猿产品展】拍乐云——新一代实时音视频云服务,构建云上的每一次美好互动...
  20. mysql timestamp 默认_MySQL数据库TIMESTAMP怎么设置默认值 | 学步园

热门文章

  1. 彩蛋还是陷阱?我所经历的期权往事
  2. js实现复制文本内容到剪切板
  3. Java 解惑:Comparable 和 Comparator 的区别
  4. Exchange2010 控制台提示您的权限不足,无法查看此数据
  5. 手机密钥连接linux主机
  6. [吴恩达机器学习笔记]12支持向量机3SVM大间距分类的数学解释
  7. Uber网站国际化的工程实践(CMS篇)
  8. java日记(2)------定时任务quartz浅析
  9. 自定义控件添加自定义属性问题
  10. stat用法:获取文件对应权限的数字