今天去找工作,我说我用过jstl标签.然后他问我 有没有试过自定义标签.我说没有.后来他说他们会五天内通知我,让我回去准备一下.
上次我们班有个同学找工作,别人问个问题,他不会.回来也不管,结果去笔试又考了这个题....悲剧了.
这次我一定要吸取教训,把问过的几个问题都搞懂了.
先来看看自定义标签.
自定义标签使用方法
1、写一个类,继承TagSupport,这个类就是用来处理标签的.
类里主要有2个方法doStartTag()和doEndTag(),分别对开始闭合标签进行处理
2、写.tld标签文件
3、在web.xml中对tld文件进行配置
废话少说,直接看代码.下面写个显示当前时间的自定义标签
代码比较简单,大家一看就懂.
ShowTime.java
package org.zzp.tag;
import java.io.IOException;
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 ShowTime extends TagSupport {
private static final long serialVersionUID = 3593807751447286551L;
@Override
public int doEndTag() throws JspException {
JspWriter out=pageContext.getOut();
Date date=new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");ot;);ot;);
try {
out.println(sdf.format(date));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return super.doEndTag();
}
@Override
public int doStartTag() throws JspException {
return super.doStartTag();
}
}
MyTag.tld
<?xml version="1.0" encoding="UTF-8" ?>gt;?>?>?>?>
<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"quot;quot;
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">gt;;>;>
<taglib>gt;
<tlib-version>1.0</tlib-version>gt;gt;
<jsp-version>1.0</jsp-version>gt;gt;
<short-name>mytags</short-name>gt;gt;
<tag>gt;
<name>time</name>gt;gt;
<tag-class>org.zzp.tag.ShowTime</tag-class>gt;gt;
</tag>gt;
</taglib>gt;
web.xml
<web-app>gt;
<jsp-config>gt;
<taglib>gt;
<taglib-uri>/mytag</taglib-uri>gt;gt;
<taglib-location>/WEB-INF/MyTag.tld</taglib-location>gt;gt;
</taglib>gt;
</jsp-config>gt;
</web-app>gt;
其中,taglib-location是tld文件的位置
tag.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"quot;quot;quot;quot;
pageEncoding="UTF-8"%>gt;%>%>
<%@taglib prefix="mine" uri="/mytag" %>gt;%>%>%>%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">gt;;>;>;>;>
<html>gt;
<head>gt;
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">gt;;>;>;>;>
<title>Insert title here</title>gt;gt;
</head>gt;
<body>gt;
<mine:time></mine:time>gt;gt;
</body>gt;
</html>gt;