这个程序是实现读取数据库的内容并显示给客户端,首先看看目录结构:
数据库操作类MyDBAccess.java 在DB目录下
描述文件MyDBAccess.tld 在WEB-INF 下
测试程序tagTEST.jsp 在ROOT下
MyDBAccess.java内容如下
package DB ; //重要 目录名字
import java.io.IOException;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
public class MyDBAccess extends TagSupport
{
String str = null;
public void setStr(String str)
{
this. str = str;
}
public int doEndTag() throws JspException
{
return EVAL_PAGE;
}
public int doStartTag() throws JspException
{
JspWriter out = pageContext.getOut();
try
{
out.println(str);
}
catch ( IOException e)
{
e.printStackTrace();
}
return SKIP_BODY;
}
}
注意:1:这个文件是真正的处理文件,必须从TagSupport继承,重载他的2个函数。经测试,如果修改了MyDBAccess.java,则必须要重新编译这个文件成class并且重启tomcat,这样才能生效!!!
2: public void setStr(String str); 参数str是tagTEST.jsp传来的参数,函数名必须是set+变量名(首字母大写)= setStr
MyDBAccess.tld内容如下:
<?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>
//标签库依赖的JSP版本
<jspversion>2.0</jspversion>
//标签库名,随便起的。
<shortname>MyDBAccess</shortname>
//关于标签库的详细信息,随便起
<info>A Tag library</info>
<tag>
//定义标签的名,随便起的,但是tagTEST.jsp要调用。
<name>mysql</name>
//根据MyDBAccess .java文件里定义的 目录名+类名
<tagclass>DB.MyDBAccess</tagclass>
//此标签体的定义,tagdependent表示有内容要穿
<body-content> tagdependent </body-content>
//参数说明!注意str即可
<attribute>
<name>str</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
测试程序tagTEST.jsp:
<%@include file ="head.jsp" %>
<%@ taglib uri="/WEB-INF/MyDBAccess.tld" prefix="test" %>
<test:mysql str="test" ></test:mysql>
注意:str表示要传的参数,test:mysql这句就自动调用MyDBAccess。java了
好了编译并重启,直接在地址栏输入http://localhost:8080/tagTEST.jsp 就可以得到结果 test 了