如何用eclipse做一个Taglib的helloWorld例子
helloWorld:
马克- to-win:马克 java社区:防盗版实名手机尾号: 73203。
注意当你做下面的项目,首先选择还是老样子,做Dynamic Web project,但是当选择dynamic web module version版本时,过去我们选择2.3,这次我们选择2.4。注意不要错,否则做不过去。从这个例子里可以清楚地看出,标签的前缀greeter定位配置文件的位置。标签本身Hello会在配置文件当中说明它对应哪一个类。
例 1.2.1
hello.jsp:
<%@ page contentType="text/html; charset=GBK" %>
<%@ taglib uri="/WEB-INF/tagExampleLib.tld" prefix="greeter" %>
<html>
<body>
<greeter:Hello/>
</body>
</html>
tagExampleLib.tld:(这是个Taglib项目所特有的文件,在WEB-INF目录下,在eclipse中,只需增加这个普通文本文件即可。)
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
"http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<taglib>
<tlibversion>1.0</tlibversion>
<jspversion>1.1</jspversion>
<shortname>mark-to-win</shortname>
<tag>
<name>Hello</name>
<tagclass>com.marktowin.HelloWorldTag</tagclass>
<bodycontent>empty</bodycontent>
</tag>
</taglib>
HelloWorldTag.java(eclipse中,这只是一个普通类而已,其中pageContext就对应着jsp的页面):
package com.marktowin;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
import java.io.*;
/*when type, directly type in TagSupport, can import jars, also you can use this to help you to memorize. */
public class HelloWorldTag extends TagSupport {
public int doStartTag() {
try {
this.pageContext.getOut().print("你好,马克-to-win World!");
} catch (IOException ex) {
ex.printStackTrace();
}
return this.SKIP_BODY;
}
}
浏览器中输出:
你好,马克-to-win World!
2)doEndTag的例子:
上面的Helloworld例子只说明了起始标签儿对应doStartTag这个方法。下面的例子就会说明终止标签对应doEndTag这个方法,其中返回值EVAL_BODY_INCLUDE表明,把标签的body也输出,不要忽略。EVAL_PAGE的意思就是继续输出页面下面的部分,而不忽略。
例 1.2.2
hello.jsp:
<%@ page contentType="text/html; charset=GBK" %>
<%@ taglib uri="/WEB-INF/tagExampleLib.tld" prefix="greeter" %>
<html>
<body>
<greeter:Hello>
this is body身体
</greeter:Hello>
this is in jsp end结束
</body>
</html>
tagExampleLib.tld:(这里bodycontent不能为empty)
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
"http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<taglib>
<tlibversion>1.0</tlibversion>
<jspversion>1.1</jspversion>
<shortname>mark-to-win</shortname>
<tag>
<name>Hello</name>
<tagclass>com.marktowin.HelloWorldTag</tagclass>
</tag>
</taglib>
HelloWorldTag.java:
package com.marktowin;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
import java.io.*;
public class HelloWorldTag extends TagSupport {
public int doStartTag() {
try {
pageContext.getOut().print("Hello, World1!");
} catch (Exception ex) {
ex.printStackTrace();
}
return EVAL_BODY_INCLUDE;
}
public int doEndTag() {
try {
pageContext.getOut().print("<br> this is 结束 tag");
} catch (IOException e) {
e.printStackTrace();
}
return EVAL_PAGE;
}
}
运行jsp后,浏览器中输出结果是:
Hello, World1! this is body身体
this is 结束 tag this is in jsp end结束
3)带有属性的标签的例子:
下面的例子说明标签如何带有属性。
例 1.2.3:
hello.jsp:
<%@ page contentType="text/html; charset=GBK" %>
<%@ taglib uri="/WEB-INF/tagExampleLib.tld" prefix="greeter" %>
<html>
<body>
<greeter:Hello name1="马克-to-win" name2="mark-to-win"/><br>
<greeter:Hello name1="马克-to-win"/><br>
<greeter:Hello/>
</body>
</html>
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
"http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<taglib>
<tlibversion>1.0</tlibversion>
<jspversion>1.1</jspversion>
<shortname>mark-to-win</shortname>
<tag>
<name>Hello</name>
<tagclass>com.marktowin.HelloWorldTag</tagclass>
<bodycontent>empty</bodycontent>
<attribute>
<name>name1</name>
</attribute>
<attribute>
<name>name2</name>
</attribute>
</tag>
</taglib>
package com.marktowin;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
import java.io.*;
public class HelloWorldTag extends TagSupport {
private String name1 = "没名字1", name2 = "没名字2";
public void setName1(String name1) {
this.name1 = name1;
}
public void setName2(String name2) {
this.name2 = name2;
}
public int doStartTag() {
try {
pageContext.getOut().print(name1+" "+name2);
} catch (IOException e) {
e.printStackTrace();
}
return SKIP_BODY;
}
}
运行jsp后,浏览器中输出结果是:
马克-to-win mark-to-win
马克-to-win 没名字2
没名字1 没名字2