JSP 标签学习笔记
canca
2010-04-10 12:51
1
0
特别注意,这些标签接口(类)是有缓存的,这个对线程安全非常不利。
这个接口没有缓冲,每次调用标签就创建一个新的实例。
但是要设置.tld文件中<tag>的<body-content>tagdependent</body-content>
de><?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.0" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd">
<tlib-version>1.0</tlib-version>
<short-name>writer</short-name>
<uri>tags/MessageWriter</uri>
<tag>
<name>write</name>
<tag-class>com.lilijun.tags.MessageWriterTagHandler</tag-class>
<body-content>JSP</body-content>
<attribute>
<name>fontColor</name>
<required>true</required>>
</attribute>
</tag>
</taglib>
5.在jsp中使用
有三种方法:
(1)web.xml中配置一个<taglib>节点,如下:
<jsp-config>
<taglib>
<taglib-uri>
de>
de>/mytag</taglib-uri>
<taglib-location>
/WEB-INF/tlds/hello.tld</taglib-location>
</taglib>
</jsp-config>
JSP中如下写:
<%@ taglib uri="/mytag" prefix="mytag" %>
(2)不在web.xml中配置,直接在JSP中使用TLD文件的位置:
JSP中如下写:
<%@ taglib uri="/web-inf/tlds/hello.tld" prefix="mytag" %>
(3)在jsp中直接指定tag的url
<%@ taglib uri="/mytag" prefix="mytag" %>
下面是一个基于SimpleTag的例子:
标签动作Java类:
package tag;
imp
ort java.io.IOException;
imp
ort javax.servlet.jsp.JspContext;
imp
ort javax.servlet.jsp.JspException;
imp
ort javax.servlet.jsp.JspWriter;
imp
ort javax.servlet.jsp.tagext.JspFragment;
imp
ort javax.servlet.jsp.tagext.SimpleTagSupport;
/***
* 测试的简单标签
* @author liheyuan
*
*/
public class HelloTag1 extends SimpleTagSupport
{
/**测试属性name*/
private String name;
/**标签体*/
private JspFragment body;
public void setJspBody(JspFragment body)
{
this.body = body;
}
public void doTag()throws JspException,IOException
{
JspContext ctx = this.getJspContext();
JspWriter out = ctx.getOut();
out.println("<h1>"+name+",</h1>");
body.invoke(out);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
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.2</jsp-version>
<short-name>tagSample</short-name>
<uri>/mytag</uri>
<tag>
<name>hello1</name>
<tag-class>tag.HelloTag1</tag-class>
<body-content>tagdependent</body-content>
<attribute>
<name>name</name>
<type>java.lang.String</type>
</attribute>
</tag>
</taglib>
JSP
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="/mytag" prefix="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>
<mytag:hello1 name="李赫元" >
你好!
</mytag:hello1>
</body>
</html>
发表评论