自定义标签

摘要:
如果要实现自定义标记,需要执行以下操作:编写一个继承或实现相关类或接口的标记处理类。编写标记描述文件。该文件是一个XML文件,必须将其放在网站的WEB-INF目录中,才能在JSP中导入标记,并使用taglib指令导入标记库,然后使用它。Serviizable----|标记接口此接口主要描述标记处理类的共性,但实现此接口的类不能处理标记体。该接口定义了标记处理类和JSP页面之间的通信协议------| TagSupport类主要负责处理标记的属性。

在实际的开发中,如为了简化JSP中出现大量的JSP脚本,那么我们需要使用标准标签库和EL表达式,但是和新标签库中提供的标签是有限的,不可能完全满足开发的需要。如:分页。因此需要学习如何自定义自己的标签库。

如果要实现自定义标签,那么需要如下几步:

  1. 编写标签处理类

需要继承或者实现相关的类或者接口

  1. 编写标签描述文件

该文件是一个XML文件,而且必须放在网站的WEB-INF目录中

  1. 在JSP中引入标签且使用

使用taglib指令引入标签库,随后使用。

自定标签的类体系

详细了解下一下几个类和接口:

---| JspTag接口

该接口是一个典型的标记接口。主要标记实现该接口的类可以处理标签。Seralizable

----| Tag接口

该接口主要描述的是标签处理类的共性,但是实现该接口的类不能处理标签体,该接口中定义了标签处理类和JSP页面之间的通信协议。而且提供生命周期方法如:在标签开始和接结束的时候自动执行的方法。

------| TagSupport类

主要负责处理标签的属性。

-------| BodyTagSupport类

该类主要的是处理标签的标签体。

自定义标签第1张

 实现带标签体的自定义标签

1.标签处理类

 1 public class ShowDateByBody extends BodyTagSupport {
 2     // 为了便于获取属性,那么直接在处理类中定义和属性同名的属性变量即可且提供get和set方法
 3     private String pattern;
 4     public String getPattern() {
 5         return pattern;
 6     }
 7     public void setPattern(String pattern) {
 8         this.pattern = pattern;
 9     }
10 
11     // 标签开始的时候自动执行
12     public int doStartTag() throws JspException {
13         // 创建日期对象
14         Date date = new Date();
15         // 创建格式化对象
16         SimpleDateFormat format = new SimpleDateFormat(getPattern());
17         // 格式化
18         String str = format.format(date);
19         // 获取JSP上下文对象
20         PageContext pageContext = this.pageContext;
21         // 获取JSP的OUT输出流
22         JspWriter out = pageContext.getOut();
23         // 获取标签提的内容
24         BodyContent body = this.getBodyContent();
25         String tag_body = body.getString();
26         str = "<font color='red'>"+tag_body+"</font>"+str;
27         // 输出
28         try {
29             out.write(str);
30         } catch (IOException e) {
31             e.printStackTrace();
32         }
33         return super.doStartTag();
34     }
35 }

2. 描述文件

 1   <tag>  
 2     <name>showdate2</name>
 3     <tag-class>cn.itcast.custom.ShowDateByBody</tag-class>
 4     <body-content>JSP</body-content>
 5     <attribute>
 6         <name>pattern</name>
 7         <required>true</required>
 8         <rtexprvalue>true</rtexprvalue>
 9     </attribute>
10   </tag>

3. 引入和使用

<date:showdate2 pattern="yyyy-MM-dd">系统时间:</date:showdate2>

免责声明:文章转载自《自定义标签》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Python Scrapy项目创建(基础普及篇)OpenCV cv::Mat.type() 以及各类型数据转换下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Java中Cookie常用操作类(Spring中操作Cookie)

说明:Cookie下用Key取值没有快速的方法,只能便利循环去取。 技巧:置0则cookie会立即删除,设置-1,负值则会在关闭浏览器后删除。切记一定要增加路径:setPath("/"),不然不会生效。在获取Cookie时要看下是否设置了域名:setDomain,不然本地调试时获取不到。 Cookie 的限制: 大多数浏览器支持最大为4096字节(4KB)...

服务对外提供接口以供不同站点之间使用:Spring Cloud Feign使用记录及携带token请求

  在开发 Spring Cloud 微服务的时候,我们知道,服务之间都是以 HTTP 接口的形式对外提供服务的,因此消费者在进行调用的时候,底层就是通过 HTTP Client 的这种方式进行访问。当然我们可以使用JDK原生的 URLConnection、Apache 的 HTTP Client、Netty 异步 Http Client,Spring 的...

【转】Android世界的Swift

最近Oracle又在和Google撕的厉害,才知道还有这么Kotlin在Android像Swift在Mac的地位一说。 Kotlin是一门与Swift类似的静态类型JVM语言,由JetBrains设计开发并开源。与Java相比,Kotlin的语法更简洁、更具表达性,而且提供了更多的特性,比如,高阶函数、操作符重载、字符串模板。它与Java高度可互操作,可以...

文件上传细节处理

文件上传中,我们会遇到很多问题,例如: 1、上传文件名的中文乱码和上传数据的中文乱码: upload.setHeaderEncoding("UTF-8"); //解决上传文件名的中文乱码//表单为文件上传,设置request编码无效,只能手工转换1.1 value = new String(value.getBytes("iso8859-1"),"UTF-...

对json进行封装

项目中经常用到对于JSON的各种转换处理,保存一份,免得以后忘了。 using System; using System.Collections.Generic; using System.Text; using System.Reflection; using System.Data; using System.Collections; using CR...

delphi 操作xml示例(DelphiBBS)

自:http://www.delphibbs.com/keylife/iblog_show.asp?xid=20713 ================================================================ 2005-9-23 21:05:34xml基础操作实例,因为刚开始学,如果有不对的地方,请批评指正,代码...