jstl自定义标签
来源:互联网 发布:mysql 字符转日期函数 编辑:程序博客网 时间:2024/06/08 10:43
<span style="font-size:14px;">用过jstl和el表达式的人都觉得这个用起来很方便,今天我要说的不是怎么用它,而是怎么自定义一个jstl标签!写一个jstl标签其实很简单,它的底层都是通过java写一个方法实现相应的功能,然后将其封装成一个jar包,需要时调用即可。</span>
我以输出格式化后的时间作为自定义jstl标签的案例来讲解具体的步骤,首先要在WEB-INF目录下建一个xxx.tld文件,我的是yctaglibs.tld文件。按照官方给出的c.tld文件写。先上代码,然后再进行讲解。
<span style="font-size:14px;"><?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"> <description>yc standard tag lib</description> <display-name>yc tag lib</display-name> <tlib-version>1.0</tlib-version> <short-name>yc</short-name> <uri>http://www.hyycinfo.com/taglib/yc</uri> <tag> <name>time</name> <tag-class>com.yc.web.taglibs.TimeTag</tag-class> <body-content>empty</body-content> <attribute> <!-- 属性名 --> <name>format</name> <!-- 是否是必填字段 --> <required>false</required> <!-- 是否支持el表达式 --> <rtexprvalue>false</rtexprvalue> </attribute> </tag></taglib></span>上述代码中 第一行声明以及taglib中的参数都必须按照 官方给出的c.tld文件写,最好是复制粘提,避免出错。
description 描述
diaplay-name 展示名字
tlib-version 版本号
short-name 简名
uri 标签文件的访问路径 (重要)在jsp页面中访问时需要这个地址
<tag></tag>之间
tag-class:自定义的标签类的全称
body-content:自定义标签是否有标签体内容 (empty:没有 JSP:有)
attribute:标签的属性
接着写自定义标签的类TimeTage.java
<span style="font-size:14px;">package com.yc.web.taglibs;import java.io.IOException;import java.io.PrintWriter;import java.text.SimpleDateFormat;import java.util.Date;import javax.servlet.jsp.JspException;import javax.servlet.jsp.JspWriter;import javax.servlet.jsp.tagext.TagSupport;public class TimeTag extends TagSupport {private String format="";@Overridepublic int doStartTag() throws JspException {Date d=new Date();//在页面输出 (用流)//PrintWriter out=null;JspWriter out=null;try {//得到 响应对象 取出流//out = super.pageContext.getResponse().getWriter();//jsp标准流,按照http协议输出out=super.pageContext.getOut();if(format!=null && !"".equals(format)){SimpleDateFormat sdf=new SimpleDateFormat(format);out.write(sdf.format(d));out.flush();}else{out.write(d+"");out.flush();}} catch (IOException e) {e.printStackTrace();}//out.close();return super.SKIP_BODY;}public void setFormat(String format) {this.format = format;}}</span>在这个类中要输出就必须获取流,获取流有两种方式:第一种就是通过响应对象获得流,第二种是jsp标准流。前者在页面输出时,html标签无效,如换行不会有;而后者则不会出现这种情况,因为后是遵循http协议输出。我个人的理解就是,用前者输出时,先输出,然后才会读取其他html标签元素。这个在jsp编译成xxx.java文件中可以很容易看出,而后者在编译后的java文件中不会出现这种情况。
最后一步就是index.jsp页面了,在声明语句之后,引用自定义标签的类
<span style="font-size:14px;"><%@ taglib prefix="yc" uri="http://www.hyycinfo.com/taglib/yc"%></span>第一个引用的是自定义的标签,uri就是在yctaglibs.tld定义的地址
<span style="font-size:14px;"><span style="white-space:pre"></span><!-- 输出当前时间 --><yc:time /><hr /><yc:time format="yyyy年MM月dd日" /><hr /></span>写到这里,自定标签已经写完了,具体结果如下:
相信看到这里, 大家对自定义标签有了一定的了解,那么赶紧行动起来,自己写一个自定义标签!
0 0
- JSTL自定义标签问题
- 自定义jstl标签库
- JSTL - 自定义标签
- JSTL自定义标签
- jstl自定义标签
- JSTL自定义标签
- JSTL自定义标签
- JSTL自定义标签
- 自定义JSTL标签
- JSTL自定义标签
- JSTL 自定义标签
- jstl自定义标签
- 自定义jstl标签库
- 自定义JSTL标签
- jstl自定义标签
- jstl之自定义标签
- 自定义标签JSTL+国际化
- 自定义JSTL标签
- Android NDK c调用java代码
- Java实现一个简单的随机点名器
- Eclipse MAT插件下载地址
- YouCompleteMe——一个神奇的Vim插件
- [MySQL] - errno:150
- jstl自定义标签
- cocos2d-x 二进制文件的读写
- Apache自带工具测试高并发
- 52页22题
- TCP协议中,Client和Server是如何通信的?三次握手中第一次发送的内容是什么?
- 黑马程序员—C语言指针与数组
- Cisco交换机ACL的配置
- app后端设计--数据增量更新
- 多线程