jsp自定自定义标签
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 + "&" + 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自定自定义标签相关推荐
- 深入体验JavaWeb开发内幕——简述JSP中的自定义标签叫你快速学会
转载自 深入体验JavaWeb开发内幕--简述JSP中的自定义标签叫你快速学会 自定义标签,顾名思义,就是自己定义的标签.那么我们为什么要自己定义一些标签呢? 我们知道,如果要在JSP中获取数据我 ...
- 自定义标签的使用jsp实例_JSP自定义标签示例教程
自定义标签的使用jsp实例 Today we will look into JSP custom tags. Earlier we learned about JSP Action Elements, ...
- JSP GridView --使用自定义标签实现ASP.NET的控件
JSP用自定义标签实现ASP.net的gridview.datasource组件 第一部分:使用说明 使用过ASP.NET的人都知道,gridview控件功能很强大,使用很方便,提高了开发效率.而且表 ...
- JSP笔记——7.自定义标签
jsp标签具有与html标签一样的格式,可以用来代替jsp中的Java脚本,使代码简介.使用自定义标签之前需要建立一个*.tld文件,每个文件对应一个标签库,里面可以包含很多的自定义标签. 每一个标签 ...
- JSP页面tdl自定义标签的做法
思路: 首先tdl自定义标签就是比如类似input.div.ul.li之类的标签,只是名字自己来定义,但实际上要在页面上看到效果还是需要些html代码,只是在页面上只需要写自己标签就可以代表一部分ht ...
- java ee jsp_EE JSP:使用自定义标签库生成动态内容
java ee jsp 在Web应用程序中开发View层时,您希望尽量不要重复JSP文件中的内容. JSP spec API允许您通过使用标记库来减少这种重复. 定制JSP标记是用户定义的xml标记元 ...
- EE JSP:使用自定义标签库生成动态内容
在Web应用程序中开发View层时,您希望尽量不要重复JSP文件中的内容. JSP spec API允许您通过使用标记库来减少这种重复. 定制JSP标记是用户定义的xml标记元素,您可以将其插入JSP ...
- javaweb学习总结(二十三)——jsp自定义标签开发入门
一.自定义标签的作用 自定义标签主要用于移除Jsp页面中的java代码. 二.自定义标签开发和使用 2.1.自定义标签开发步骤 1.编写一个实现Tag接口的Java类(标签处理器类) 1 packag ...
- JSP自定义标签_控制标签体是否执行
自定义标签,在类中控制该自定义标签是否显示: import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.Tag; i ...
最新文章
- Pytorch源码与运行原理浅析--网络篇(一)
- 10个重构小技巧,去掉代码中的S味
- jenkins安装与配置---window,mis包直接安装
- svn更新提交等操作报svn: E155004错误,解决办法
- Java修改全文数字,求大神帮我修改下java计算机代码,数字键只有0和8能用
- python中的函数def和函数的参数
- java动态生成柱状图3D_在android上动态实现ichartjs的3D柱形图
- fopen的路径怎么写_用C++写光线追踪:单根光线的渲染
- JDK,JRE,JVM三者关系
- 【论文笔记】PTE:预测性文本嵌入
- WPF编程基础入门 ——— 第三章 布局(四)布局面板StackPanel
- 设备管理器里“SM总线控制器”、“其它PCI桥设备”驱动有问题
- python 获得时间戳_Python 获取时间戳
- 系分 02 软件工程
- 计算机网络各层设备故障及可行的解决方案
- 神奇的递归!一文读懂函数递归(python实现)
- 3D Vision Rebuttal
- 待字闺中之此起彼伏分析
- 【金猿产品展】拍乐云——新一代实时音视频云服务,构建云上的每一次美好互动...
- mysql timestamp 默认_MySQL数据库TIMESTAMP怎么设置默认值 | 学步园