SimpleTagSupport类别顾名思义,就是可以处理一些简单的自订标签需求,它是在JSP 2.0之后新增的类别,对于一些简单的自订标签页求,您可以继承它来实作标签处理类别,而不用为了处理一些TagSupport、 BodyTagSuppourt类别中回传值的问题。

为了使用上的简单而降低了复杂性,另一方面就是SimpleTagSupport类别所处理的功能受了些限制,它只处理标签与本体,要不要显示本体文字取决于您,对于标签之后的页面则不在SimpleTagSupport处理的范围之内(虽然您还是可以使用forward之类的方式来决定要不要显示之后的页面,但直接实作TagSupport会更方便一些),另外SimpleTagSupport类别的本体文字不能设定为JSP,这也是使用 SimpleTagSupport上的一些限制。

尽管有了一些限制,对于简单的自订标签需求,使用SimpleTagSupport还是比较容易的,它实作了SimpleTag介面,您只要重新定义 doTag()方法就可以实作自订标签的处理,先来看一个简单的范例:

步骤:
创建web应用程序xgtimesTag
创建标记库描述符xgtimes.tld
内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.0" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd">
<tlib-version>1.0</tlib-version>
<short-name>xgtimes</short-name>
<uri>/WEB-INF/tlds/xgtimes</uri> 
</taglib>
创建标记库处理程序xgtimes.tlds.print.java
这里,该标签有三个属性body、loo p、br,body是显示的文字的内容,loop设置显示的次数,br设置显示一次是否换行。
完成之后,这些属性会在标记库描述符xgtimes.tld中增加该标记的属性描述。如下:
 <tag>
    <name>print</name>
    <tag-class>xgtimes.tlds.print</tag-class>
    <body-content>scriptless</body-content>
    <attribute>
      <name>body</name>
      <required>true</required>
      <rtexprvalue>true</rtexprvalue>
      <type>java.lang.String</type>
    </attribute>
    <attribute>
      <name>loop</name>
      <rtexprvalue>true</rtexprvalue>
      <type>int</type>
    </attribute>
    <attribute>
      <name>br</name>
      <rtexprvalue>true</rtexprvalue>
      <type>boolean</type>
    </attribute>
 </tag>
然后我们在标记处理程序xgtimes.tlds.print.java中输入内容如下:
package xgtimes.tlds;
import javax.servlet.jsp.tagext.*;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.JspException;
/**
*
* @author 昆仑追风◇XG时代中国
* @version 1.0
*/
public class print extends SimpleTagSupport {
private java.lang.String body;
private int loop;
private boolean br;
public void doTag() throws JspException {
JspWriter out=getJspContext().getOut();
try {
for(int i=0;i<loop;i++){
out.print(this.body);
if(this.br) out.print("<br>");
}           
JspFragment f=getJspBody();
if (f != null) f.invoke(out);
} catch (java.io.IOException ex) {
throw new JspException(ex.getMessage());
}
}
public void setBody(java.lang.String value) {
this.body = value;
}
public void setLoop(int value) {
this.loop = value;
}
public void setBr(boolean value) {
this.br = value;
}
}
在部署描述符(web.xml)中引入标记库
在web-app标记中插入:
<taglib>       
<taglib-uri>/xgtimes/tlds</taglib-uri>
<taglib-location>/WEB-INF/tlds/xgtimes.tld</taglib-location>
</taglib>
在index.jsp中使用定制标签
首先引入标记库到页面
<%@ taglib prefix="xgtimes" uri="/xgtimes/tlds" %>
然后,插入定制标签
<xgtimes:print body="hello,xgtimes!" br="true" loop="10" />
效果如下:

源文件下载:http://dl2.csdn.net/down4/20070711/11185816896.docx

利用SimpleTagSupport创建定制标签相关推荐

  1. 第六章_编写定制标签

    6.1.定制标签概述 利用jsp标准动作指令访问和操作javaBeans,是首次尝试将表现代码和业务逻辑实现分离.但是,标准动作指令的功能不够强大,单独使用时,开发者经常要使用jsp页面中的java代 ...

  2. 怎样自己定制标签(Custom Tag)

    怎样自己定制标签(Custom Tag)  (整理的学习笔记)  步骤1.创建一个Tag handler class(标记处理器类)  package  javax.servlet.jsp.tagex ...

  3. tensorflow 开始——创建定制化 Estimator(创建自定义评估器)

    参考文章:创建定制化 Estimator 文章目录 创建定制化 Estimator 预制 vs. 定制化 创建功能列 写一个模型函数 定义模型 定义输出层 隐藏层 输出层 实现训练.评估.预测 {#m ...

  4. ⑥又是星期五,小试牛刀(编写定制标签)

    前言 今天有点迷茫.是身体累了,还是心累了.有种觉得想大哭而无力的感觉(可能心还没成熟,或是昨天羽毛球打累了).加油,Jeff Li. 活在当下,坚持打好基础,坚持刷ACM,坚持coding. 今天下 ...

  5. bcdedit添加linux引导,Linux_利用Bcdedit创建Linux系统引导,Bcdedit在Windows Vista中的一个命 - phpStudy...

    利用Bcdedit创建Linux系统引导 Bcdedit在Windows Vista中的一个命令行工具,用于建立和重新配置bootloader,无须再使用boot.ini文件.下面我们来谈谈如何用bc ...

  6. JSP——JSTL定制标签 - 递归标签显示属性结构

    编写定制标签分为三个步骤:编写标签处理器.配置标签.使用标签. 1.标签处理器 标签处理器和标签是一一对应的关系 package com.oolong.utils.customtags;import ...

  7. 利用thinkphp创建一个简单的站点

    本文我们将利用thinkphp创建一个简单的站点,这里所使用的thinkphp版本是5.0.24,这里是它的中文文档.如果有需要可以参考它的中文文档. thinkphp框架是一个典型的MVC框架,该框 ...

  8. Docker学习之路04:创建定制Nginx镜像

    Docker学习之路04:创建定制Nginx镜像 Docker学习路线传送门: Docker学习之路01:Docker的安装 Docker学习之路02:阿里云镜像加速器 Docker学习之路03:Do ...

  9. 利用Office 365 定制企业合同管理平台之定制合同文档!

    对于企业来说,文档库是必须配置的组件,因为非结构化的数据在企业中占据了大部分.比如说文档.音频.视频等等文件都是我们的非结构化数据,这些非结构化数据处理占用了我们的每天工作的80%的时间,因此这部分数 ...

最新文章

  1. 2021全球最具影响力 AI 学者榜单: 中国占比11.1%,位列第二
  2. Xamarin Android提示内存溢出错误
  3. uglifyjs压缩js文件
  4. nyoj1121周期串
  5. Flex与.NET互操作系列文章
  6. 优酷复制的html代码怎么用,关于网页上增加视频功能的代码
  7. 数据库AngularJs
  8. Android 缓存处理和图片处理
  9. Spring Boot单元测试入门实战之关于JUnit
  10. 三调业务摘要201709
  11. 在OSPF中引入直连路由时调用Route-Policy
  12. JS逻辑运算符的与,或,非
  13. Android开发关于调用摄像头黑屏没反应的问题
  14. 为什么我们创业失败了和选择创业公司的思考
  15. CAD学习笔记中级课【导入导出】
  16. 【java集合】ConcurrentHashMap源码分析
  17. --------------------------------------MYSQL批量修改字段类型---------------------------------
  18. java list 包含_如何判断ListStringlist中是否包含某个字符串
  19. mq服务器与客户端消息同步,RocketMQ:主从同步的实现
  20. 关于第一次面试总结(嵌入式软件开发工程师)

热门文章

  1. JAVA计算机毕业设计学术会议信息网站Mybatis+源码+数据库+lw文档+系统+调试部署
  2. SQLServer中区分中英文标点符号
  3. 这可能是你见过最硬核的微服务入门指南!
  4. 有未经处理的异常 0xC00000FD Stack overflow (参数: 0x00000000, 0x00842000)
  5. 51单片机实例5——基于单片机的花样彩灯
  6. 苹果Usb连接linux,Mac使用数据线连接ios,安装deb
  7. @umijs/plugin-locale使用
  8. AI面相手相V3.2.0无限多开版h5公众号版本源码(含搭建教程+运营文案图片)
  9. Charles 配置 https
  10. C语言数组大小极限,C中允许的最大静态数组大小是多少?