自定义标签的步骤:

  1、确定需求,如:用<my:date/>输出当前时间

  2、编写Java类:需要实现实现接口javax.servlet.jsp.tagext.JspTag

          具体的接口为:

              javax.servlet.jsp.tagext.SimpleTag,简单标签,JSP2.0**
                      javax.servlet.jsp.tagext.Tag,经典标签

  3、编写tdl文件(xml)

Demo:

 public class MyTag implements SimpleTag {

     private PageContext pageContext;
public void setJspContext(JspContext pc) { this.pageContext=(PageContext) pc;//设置pageContext
} public void doTag() throws JspException, IOException { SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss:SSS");
String date=format.format(new Date());
pageContext.getOut().print(date);//输出到页面
} public JspTag getParent() {
// TODO Auto-generated method stub
return null;
} public void setJspBody(JspFragment arg0) {
// TODO Auto-generated method stub }
 <?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.0</tlib-version>
<short-name>my</short-name> <!-- 建议引入当前便签库是,使用的简写-->
<uri>http://www.cnblogs.com/liuwt365/mytag</uri> <!-- 为当前标签库配置文件,起一个名称        * 内容:自定义,全球唯一         --> <tag>
<name>date</name> <!-- 确定标签名称 -->
<tag-class>cn.test.simpleTag.MyTag</tag-class> <!-- 确定实现类 -->
<body-content>empty</body-content> <!-- 格式化当前标签的body内容-->
</tag> </taglib>
 <%@ taglib uri="http://www.cnblogs.com/liuwt365/mytag" prefix="my" %>   <!--  页面注册  -->

 <my:date/>

PS:如果标签中含有属性,则tdl中需要设置:<my:maxValue num1="13" num2="15"></my:maxValue>

  

 <tag>
<name>max</name>
<tag-class>cn.test.simpleTag.MyMaxTag</tag-class>
<body-content>empty</body-content>
<attribute>
<name>num1</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
<type>java.lang.Integer</type>
</attribute> <attribute>//设置属性
<name>num2</name>//属性名
<required>true</required>//是否必须 true|false (yes|no)(非必须)
<rtexprvalue>true</rtexprvalue> //runtime expression value 运行时表达式
<type>java.lang.Integer</type>   //类型(非必须)
</attribute>
</tag>

  如果含有标签体,tdl中设置如下:<my:toUpper>JUHjdksds</my:toUpper>

<tag>
<name>toUpper</name>
<tag-class>cn.test.simpleTag.MyToUpperTag</tag-class>
<body-content>scriptless</body-content> <!-- 确定标签体的类型
            * empty:没有标签体
            * JSP:支持JSP所有的语法,在Tag中使用
            * scriptless:对于JSP页面的脚本不支持 <%%>
            * tagdependent:标签体不做处理,原样输出
--> </tag>

如果含有标签体 ,java类中的

 public void setJspBody(JspFragment jf) {
this.jspFragment=jf; //获取
}

向jsp页面输出时

 StringWriter stringWriter=new StringWriter();//获得流

         this.jspFragment.invoke(stringWriter);//将数据写入到流中
String data=stringWriter.toString().toUpperCase(); this.pageContext.getOut().print(data);
this.jspFragment.invoke(pageContext.getOut())=this.jspFragment.invoke();

自定义标签(JSTL)的更多相关文章

  1. 12 自定义标签/JSTL标签库/web国际化/java web之设计模式和案例

    EL应用      自定义一个标签,实现两个字符串的相加 1回顾      1.1servlet生命周期           init(ServletConfig)           service ...

  2. javaEE(7)_自定义标签&JSTL标签(JSP Standard Tag Library)

    一.自定义标签简介 1.自定义标签主要用于移除Jsp页面中的java代码,jsp禁止出现一行java脚本. 2.使用自定义标签移除jsp页面中的java代码,只需要完成以下两个步骤: •编写一个实现T ...

  3. JavaWeb学习篇之----自定义标签&&JSTL标签库详解

    今天来看一下自定义标签的内容,自定义标签是JavaWeb的一部分非常重要的核心功能,我们之前就说过,JSP规范说的很清楚,就是Jsp页面中禁止编写一行Java代码,就是最好不要有Java脚本片段,下面 ...

  4. Java Web 自定义标签

    1.   自定义标签 由于在JSP页面中直接嵌入Java代码会导致页面开起来非常混乱,不方便和美工等配合工作,为此,JSP提供了自定义标签技术,可以代替直接嵌入Java代码的方式提供动态逻辑,但自定义 ...

  5. JSTL 自定义标签

    编写描述标签的tld文件,把这个文件放到web-inf/目录下,才能在jsp页面上调用自定义的标签 package test.yz; import java.io.IOException; impor ...

  6. 使用自定义标签模拟jstl的<c:for each>标签

    一.自定义标签的基本编写 下面编写一个自定义标签,它可以输出当前的时间. 1.编写标签类 类可以通过继承SimpleTagSupport类实现一个标签类编写.父类为我们提供了一些编写自定义标签的快捷的 ...

  7. 自定义标签 与 JSTL(JSP Standard Tag Library)

    1.自定义标签 [理解]     [1]简介            > 在JSP2.0以后,在jsp页面中不建议使用脚本片段<% %>和JSP表达式<%= %>     ...

  8. JSTL自定义标签

    这节我们总结一下JSTL自定义标签相关内容. 1. 自定义标签简介 自定义标签主要用于移除JSP页面中的Java代码.Jsp页面主要是用来显示给前台的,如果里面有过多的java代码的话,会显得很乱,但 ...

  9. 学会怎样使用Jsp 内置标签、jstl标签库及自定义标签

    学习jsp不得不学习jsp标签,一般来说,对于一个jsp开发者,可以理解为jsp页面中出现的java代码越少,对jsp的掌握就越好,而替换掉java代码的重要方式就是使用jsp标签.  jsp标签的分 ...

  10. Javaweb学习笔记——(十三)——————JSTL、JSTL核心标签库、自定义标签、有标签体的标签、带有属性的标签、MVC、Javaweb三层框架

    JSTLApache提供的标签库 jar包:jstl-1.2.jar,如果传MyEclipse,他会在我们导入jar包,无需自己导入,如果没有使用MyEclipse那么需要自行导入.--------- ...

随机推荐

  1. linux磁盘空间用满的处理方法

    linux下空间满可能有两种情况 可以通过命令 df -h  查看磁盘空间占用,实际上是查看磁盘块占用的文件(block) df -i  查看索引节点的占用(Inodes) 磁盘块和索引节点其中之一满 ...

  2. 0X0000124

     求教卡饭网友,都快疯掉了.      最近搞设计,电脑频发出现蓝屏,今晚都出现三次了,新装的win7 64位系统,都是安装的原版光驱.     错误代码基本上都是:0x00000124 (0x000 ...

  3. OpenStack JEOS 镜像

    JEOS:Just Enough Operating System 维基百科地址:http://en.wikipedia.org/wiki/Just_enough_operating_system O ...

  4. 上传文件 file upload 学习笔记

    这里我只会说说一些完成 file upload 的基础 API. 很多项目我们需要上传文件. 有简单的 input file, 有需要验证的,有需要压缩的(img),有需要分段的(video),有需要 ...

  5. owncloud乱码问题

    没有人回答那我就献丑了,废话有点多,请跳着看. 先说结论:最后我选择了 Seafile 我去年之前用box同步个人文件,前几个月的时候吧,发现box不能上传几百M的文件,我才知道之前为什么会丢文件了… ...

  6. RTSP,RTP,RTCP的区别

    下面的文章讲解的都非常详细,可以参考OpenRTSP的源码学习.这个是live555库里面的工具Demo http://www.360doc.com/content/12/0516/23/782850 ...

  7. css样式-表格优化

    1.表格的初步优化 index.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8&qu ...

  8. appium 并发测试

    Android并发测试 Appium提供了在一台设备上启动多个Android会话的方案,而这个方案需要你输入不同的指令来启动多个Appium服务来实现. 启动多个Android会话的重要指令包括: - ...

  9. Oracle 常用语句汇总

    1.查询当前用户的建表SQL: SELECT DBMS_METADATA.GET_DDL('TABLE','COL_MERCH_INFO') FROM DUAL; 2.查询当前用户的所有表: SELE ...

  10. (转)在Android的webview中定制js的alert,confirm和prompt对话框的方法

    1.首先继承android.webkit.WebChromeClient实现MyWebChromeClient. 2.在MyWebChromeClient.java中覆盖onJsAlert,onJsC ...