自定义标签的作用

                1)控制标签体内容是否输出

                            2)控制标签余下内容是否输出

                            3)控制重复输出标签体内容

                            4)改变标签体内容

                            5)带属性的标签

package com.loaderman.demo.a_tag;import java.io.IOException;
import java.io.StringWriter;import javax.servlet.jsp.JspException;
import javax.servlet.jsp.SkipPageException;
import javax.servlet.jsp.tagext.JspFragment;
import javax.servlet.jsp.tagext.SimpleTagSupport;
/*** 标签处理器类* @author APPle**/
public class DemoTag extends SimpleTagSupport{//1.声明属性的成员变量private Integer num;//2.关键点: 必须提供公开的setter方法,用于给属性赋值public void setNum(Integer num) {this.num = num;}@Overridepublic void doTag() throws JspException, IOException {System.out.println("执行了标签");/*** 1)控制标签内容是否输出*    输出: 调用jspFrament.invoke();*    不输出: 不调用jspFrament.invoke();*///1.1 得到标签体内容JspFragment jspBody = this.getJspBody();/*** 执行invoke方法: 把标签体内容输出到指定的Writer对象中*///1.2 往浏览器输出内容,writer为null就是默认往浏览器输出//JspWriter out = this.getJspContext().getOut();//jspBody.invoke(out);jspBody.invoke(null);//等价于上面的代码/*** 3)控制重复输出标签体内容*     方法: 执行多次jspBody.invoke()方法*//*for(int i=1;i<=num;i++){jspBody.invoke(null);}*//*** 4)改变标签体内容*///4.1 创建StringWriter临时容器/*StringWriter sw = new StringWriter();//4.2 把标签体拷贝到临时容器jspBody.invoke(sw);//4.3 从临时容器中得到标签体内容String content = sw.toString();//4.4 改变内容content = content.toLowerCase();//System.out.println(content);//4.5 把改变的内容输出到浏览器//jspBody.invoke(null); 不能使用此方式输出,因为jsbBody没有改变过this.getJspContext().getOut().write(content);*//*** 2)控制标签余下内容是否输出*   输出: 什么都不干!*   不输出: 抛出SkipPageException异常*/throw new SkipPageException();}
}

loaderman.tld文件

<?xml version="1.0" encoding="UTF-8" ?><taglib xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"version="2.1"><!-- 标签库的版本 --><tlib-version>1.1</tlib-version><!-- 标签库前缀 --><short-name>loaderman</short-name><!-- tld文件的唯一标记 --><uri>http://loaderman.cn</uri><tag><name>demoTag</name><tag-class>com.loaderman.demo.a_tag.DemoTag</tag-class><body-content>scriptless</body-content><!-- 属性声明 --><attribute><!-- 属性名称 --><name>num</name><!-- 是否必填 --><required>true</required><!-- 是否支持EL表达式 --><rtexprvalue>false</rtexprvalue></attribute></tag></taglib>

 


 

转载于:https://www.cnblogs.com/loaderman/p/10002360.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/248964.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端之模拟数据 - HackerVirus - 博客园

阅读目录 玩转前端之模拟数据 回到目录 玩转前端之模拟数据 博客园主页&#xff1a;http://www.cnblogs.com/handoing/ 是否还在为前端模拟数据头疼&#xff1f; 是否还在为后端返回数据格式较多内心烦躁&#xff1f; 是否还想吸一支烟压压精&#xff1f; 看下去吧&#x…

Leetcode No.146 ****

运用你所掌握的数据结构&#xff0c;设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作&#xff1a; 获取数据 get 和 写入数据 put 。 获取数据 get(key) - 如果密钥 (key) 存在于缓存中&#xff0c;则获取密钥的值&#xff08;总是正数&#xff09;&#xff…

三元运算符运算(Day02)

三元运算符运算(Day02) 运算符&#xff1a;用来对常量或者变量连接的符号&#xff0c;称为运算符。表达式&#xff1a;用运算符连接起来的整个式子成为表达式。比如&#xff1a;a10,1020运算符有以下五种&#xff1a;1、算术运算符2、赋值运算符3、关系运算符4、逻辑运算符5、三…

JS正则表达式验证数字非常全 - 吾心无所 - 博客园

JS正则表达式验证数字非常全 Js代码 <script type"text/javascript"> function SubmitCk() { var reg /^([a-zA-Z0-9][_|\_|\.]?)*[a-zA-Z0-9]([a-zA-Z0-9][_|\_|\.]?)*[a-zA-Z0-9]\.[a-zA-Z]{2,3}$/; if (!reg.test($("#txtEmail").val())) {…

datagrid 的标题的内容不对应整齐

$(document).ready(function(){ var column "[[" "{title:工号,field:grantorCode,sortable:true,hidden:true,width:fixWidth(0)}," "{title:外出告知人,field:grantor,sortable:true,width:fixWidth(0.15)}," "{title:开始时间…

laravel 分页

2.1 基于查询构建器分页 有多种方式实现分页&#xff0c;最简单的方式就是使用查询构建器或Eloquent模型的paginate方法。该方法基于当前用户查看页自动设置合适的偏移&#xff08;offset&#xff09;和限制&#xff08;limit&#xff09;。默认情况下&#xff0c;当前页通过HT…

Postfix常用命令和邮件队列管理(queue)

本文主要介绍一下postfix的常用命令及邮件队列的管理: Postfix有以下四种邮件队列&#xff0c;均由管理队列的进程统一进行管理&#xff1a; maildrop&#xff1a;本地邮件放置在maildrop中&#xff0c;同时也被拷贝到incoming中。 incoming&#xff1a;放置正在到达队列或管理…

异步加载js文件并执行js方法:实现异步处理网页的复杂效果

异步加载js文件并执行js方法&#xff1a;实现异步处理网页的复杂效果 有这么一个场景&#xff0c;当你的网页页面效果过多就会造成了打开页面的速度变得缓慢&#xff0c;长时间处于加载的状态&#xff0c;这样的效果通常会让用户感到不友好&#xff0c;通常的处理方法是先…

1.java的基础和数据类型

一.学习要求1.听课一定要全神贯注2.课堂笔记&#xff0c;一定要自己总结&#xff0c;而且要有很严谨的逻辑关系。提纲很重要3.作业不折不扣的完成&#xff0c;并且多完成4.阶段项目一定要独立完成5.每天早上由一位同学来进行早分享&#xff0c;内容可以是昨天或者明天的学习内容…

JavaScript DOM操作 提高篇

做为一个web前端&#xff0c;处理和了解浏览器差异一个重要问题.下面将介绍本人在工作中的一些笔记总结&#xff0c;先介绍没有使用js库的情况。 1.  setAttribute方法设置元素类名 &#xff1a; 在jQuery中&#xff0c;直接使用attr()方法即可&#xff0c;可在原生的JS中 e…

《算法竞赛进阶指南》0.5排序

103. 电影 莫斯科正在举办一个大型国际会议&#xff0c;有n个来自不同国家的科学家参会。 每个科学家都只懂得一种语言。 为了方便起见&#xff0c;我们把世界上的所有语言用1到109之间的整数编号。 在会议结束后&#xff0c;所有的科学家决定一起去看场电影放松一下。 他们去的…

Spring Cloud Gateway(五):路由定位器 RouteLocator

本文基于 spring cloud gateway 2.0.1 1、简介 直接 获取 路 由 的 方法 是 通过 RouteLocator 接口 获取。 同样&#xff0c; 该 顶 级 接口 有多 个 实现 类&#xff0c; RouteLocator 路由定位器&#xff0c;顾名思义就是用来获取路由的方法。该路由定位器为顶级接口有多个实…

CommonJS,AMD,CMD区别 - 郑星阳 - ITeye博客

CommonJS&#xff0c;AMD&#xff0c;CMD区别 博客分类&#xff1a; seajs和requirejs JavaScript zccst转载 学得比较晕&#xff0c;再次看commonjs&#xff0c;amd, cmd时好像还是没完全弄清楚&#xff0c;今天再整理一下&#xff1a; commonjs是用在服务器端的&#xff…

739. Daily Temperatures

根据每日 气温 列表&#xff0c;请重新生成一个列表&#xff0c;对应位置的输入是你需要再等待多久温度才会升高的天数。如果之后都不会升高&#xff0c;请输入 0 来代替。 例如&#xff0c;给定一个列表 temperatures [73, 74, 75, 71, 69, 72, 76, 73]&#xff0c;你的输出应…

【NOIP2018】DAY2T2——填数游戏(轮廓线状压的dp?搜索打表)

描述 小 D 特别喜欢玩游戏。这一天&#xff0c;他在玩一款填数游戏。 这个填数游戏的棋盘是一个n m的矩形表格。玩家需要在表格的每个格子中填入一个数字&#xff08;数字 0 或者数字 1&#xff09;&#xff0c;填数时需要满足一些限制。 下面我们来具体描述这些限制。 为了方…

Mysql中遇到的错误

Caused by: java.sql.SQLException: Unknown system variable ‘tx_isolation’ 这种错误是因为数据库版本新的但是mysql的jar包是旧的&#xff0c;所以导入最新的mysqljar包 注意实体类和数据库字段的映射关系&#xff0c;实体类中使用驼峰式的命名规则&#xff0c;大写的字母…

Express 入门之Router - worldtree_keeper的专栏 - CSDN博客

要了解Router我们需要先知道到Application&#xff0c;首先&#xff0c;每一个express实例本身内部就内建了router&#xff0c;所以我们先从简单的下手&#xff0c;先使用application&#xff1b;另外这里我们只选择get方法&#xff0c;作为我们Router.Method, 之所以使用get是…

rest测试定义

1.为什么要做接口测试&#xff1a; 1.因为很多系统关联都是基于接口实现的&#xff0c;接口测试可以将系统复杂的系统关联进行简化 2.接口工程比较单一&#xff0c;能够比较好的进行测试覆盖&#xff0c;也相对容易实现自动化持续集成 3.接口相对于界面功能 &#xff0c;会更底…

团队开发进度报告9

&#xff08;1&#xff09;站立会议 &#xff08;2&#xff09;任务面板 &#xff08;3&#xff09;具体内容 昨天&#xff1a;完成了界面控件按钮的设置问题&#xff1a;PHP数据处理&#xff0c;如何实现在线数据交互问题今天&#xff1a;hbuilder后台环境搭建 转载于:https:/…

nodejs+express整合kindEditor实现图片上传 - 木子丰咪咕晶 - 开源中国

kindEditor官网上中提供了ASP,ASP.NET,JSP相关的整合应用,http://kindeditor.net/docs/upload.html可以参照实现nodejs的整合,发现实用nodejs更简单 环境: unbuntu 14.10 nodejs 0.10.35 express 4.11.2 formidable 1.0.16 kindEditor 4.1.10 webStorm 8 1.通过IDE或终端创建…