JAVA WEB 自定义标签

来源:互联网 发布:淘宝白菜用什么app 编辑:程序博客网 时间:2024/05/21 11:05

JavaBean技术、MVC模式和JSP EL技术已经让JSP页面的Java代码数量大大减少了,为了在JSP页面更彻底地“消灭”Java代码,也为了更多范围地重用代码,可以使用定制标记库技术。就是可以让开发人员按照一定的规则自己定义JSP中可以重复使用的类似JSP动作的标记(Tag).

要输出日期:<%String format="yyyy-MM-dd  HH:mm:ss";SimpleDateFormat sdf=new SimpleDateFormat(format);String date=sdf.format(new Date());Out.println(date);%>用标签表示时:<util:date/>

自定义标签一般可以由JavaBean、标签库描述、标签处理器、配置web.xml文件、标签库声明五部分构成:

 

标签库描述:一般使用tld文件对标签进行描述,也就是使用一个xml配置文件,其中记录了自定义标签的属性、信息及位置。并且由服务器来确定通过该文件应该调用哪一个标签。

标签处理器:自定义标签的核心元素就是标签处理器。它是用来处理标签的定义、属性、标签体的内容、信息及位置等。

标签库声明:开发完自定义标签并且需要在JSP页面上进行声明,此时便可以使用自定义标签了。

标记处理类: java源文件public class DateTimeTag extends TagSupport {private static final long serialVersionUID = -5859963565466458832L;private String pattern = "yyyy-MM-dd hh:mm:ss";private Date date;public void setDate(Date date) {this.date = date;}public void setPattern(String pattern) {this.pattern = pattern;}public int doEndTag() throws JspTagException {SimpleDateFormat sdf = new SimpleDateFormat(pattern);if (date == null) {date = new Date();}JspWriter out = pageContext.getOut();try {out.println(sdf.format(date));} catch (IOException e) {throw new JspTagException(e);}return EVAL_PAGE;}}


 

<?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 web-jsptaglibrary_2_1.xsd" version="2.1"><tlib-version>1.0</tlib-version><short-name>util</short-name><uri>http://v512.com/taglib/util</uri><display-name>utlitytags</display-name><description>custom web utility tags</description><tag><name>dateTime</name><tag-class>edu.cn.DateTimeTag</tag-class>  //包名加类名<body-content>empty</body-content><attribute><name>date</name><required>false</required><rtexprvalue>true</rtexprvalue><description>input date</description></attribute><attribute><name>pattern</name><required>false</required><rtexprvalue>false</rtexprvalue><description>date time format pattern</description></attribute></tag></taglib>


 

Util.tld是当前定制标记库的配置描述文件,标记库的所有标记都要在这个文件中进行配置后才能被JSP页面使用。

先设置tld文件的Scheme

tlib-version:版本号;

short-name:前缀名称;

Uri:标记库的引用地址

Display-name:标记的显示名称;

 

Tag标记的配置信息:

Name:标记名称;

Tag-class:标记的处理类;

Body-content,对标记所包含的内容如何处理

Attribute:属性

Jsp页面<%@ page language="java" contentType="text/html; charset=UTF-8"%><%@taglib prefix="util" uri="http://v512.com/taglib/util"%><html><head><title>demo using timer tag</title></head>  <body>    <util:dateTime pattern="yyyy年MM月dd日" date="<%=new java.util.Date(107,4,10)%>"/><br>  </body></html>