今天去找工作,我说我用过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");

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" ?>

<!DOCTYPE taglib

PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"

"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">

<taglib>

<tlib-version>1.0</tlib-version>

<jsp-version>1.0</jsp-version>

<short-name>mytags</short-name>

<tag>

<name>time</name>

<tag-class>org.zzp.tag.ShowTime</tag-class>

</tag>

</taglib>

 


web.xml

<web-app>

 

<jsp-config>

<taglib>

<taglib-uri>/mytag</taglib-uri>

<taglib-location>/WEB-INF/MyTag.tld</taglib-location>

</taglib>

</jsp-config>

</web-app>

其中,taglib-location是tld文件的位置

 

tag.jsp

 

 

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@taglib prefix="mine" uri="/mytag" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

</head>

<body>

<mine:time></mine:time>

</body>

</html>

 

 

 

 

...

今天去找工作,我说我用过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");

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" ?>

<!DOCTYPE taglib

PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"

"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">

<taglib>

<tlib-version>1.0</tlib-version>

<jsp-version>1.0</jsp-version>

<short-name>mytags</short-name>

<tag>

<name>time</name>

<tag-class>org.zzp.tag.ShowTime</tag-class>

</tag>

</taglib>

web.xml

<web-app>

<jsp-config>

<taglib>

<taglib-uri>/mytag</taglib-uri>

<taglib-location>/WEB-INF/MyTag.tld</taglib-location>

</taglib>

</jsp-config>

</web-app>

其中,taglib-location是tld文件的位置

tag.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<%@taglib prefix="mine" uri="/mytag" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

</head>

<body>

<mine:time></mine:time>

</body>

</html>