自定义标签的步骤:

  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. PHPCMS v9构建模块

    ■补课: 1.phpcms v9帮助文件,上面会写关于二次开发的一些方法. http://v9.help.phpcms.cn/ 2.找一个后台还没安装的模块,先把代码看一边.比如dianping模块 ...

  2. Js自动截取字符串长度,添加省略号“……”

    JavaScript字符串处理函数,根据定义的长度截取字符串,超出部分裁掉追加……,很多时候网页上显示的内容需要缩成“...”该方法用于处理字符串显示固定长度,超长部分用“...”代替: /**参数说 ...

  3. jquery与discuz冲去的解决方法

    把相应的JQUERY代码天下如下代码: <script type="text/javascript"> jQuery.noConflict(); </script ...

  4. Python学习之--异常处理

    Python中的Exceptions是所有异常的基类,内置的异常类都放在了exceptions模块中,通过dir()函数可以看到这些内置的类 通过raise 语句触发异常,如 >>> ...

  5. C语言+ODBC+SQL 连接

    第一步:配置ODBC. ①.在控制面板找到ODBC,或者在控制面板上搜索ODBC.如图: ②.点击ODBC的添加按钮,选择SQL Server,这是会出现创建SQL Server的新数据源的对话框,我 ...

  6. OC 代码规范

    我们写出来的代码会给很多人看,为了使代码清晰简洁,方便阅读理解,都会统一遵从一定的代码规范,Objective-C同样如此.   主要参考规范:   1. Google Objective-C Sty ...

  7. [JS]_proto_和prototype到底有啥区别

    是时候拿出我珍藏多年的这张图了: 首先,要明确几个点: 1.在JS里,万物皆对象.方法(Function)是对象,方法的原型(Function.prototype)是对象.因此,它们都会具有对象共有的 ...

  8. 用存储过程生成订单号ID

    DECLARE @sonumber BIGINTSELECT @sonumber=CONVERT(BIGINT, @serverId + Substring(CONVERT(VARCHAR(4), D ...

  9. 在keil中使用printf()函数的要点

    在keil中printf默认是向串口中发送数据的,所以,如果应用该函数,必须先初始化串口,否则可能引起死机的情况,并且在printf之前应该先将TI置位,摘抄原因如下: 1.printf函数是调用pu ...

  10. QT程序制作deb包并安装在应用程序菜单

    制作原理:打包:将QT制作的源程序(没有编译的)用debian压缩打包(这里是用脚本对源程序再编译)安装:将deb包中的源程序解压(默认解压到根目录)到规定系统文件中并编译(postinst脚本)卸载 ...