範例一:使用自定義Tag去讀數據庫中的信息
TagDB.java代碼如下
package tag.test;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
import java.io.*;
import java.sql.*;
public class TagDB extends TagSupport
{
Connection connection=null;
Statement statement=null;
ResultSet rset=null;
public TagDB()
{
try
{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
}
catch(ClassNotFoundException e)
{
e.printStackTrace();
}
}
public int doStartTag()throws JspTagException
{
return EVAL_BODY_INCLUDE;
}
public int doEndTag()throws JspTagException
{
try
{
JspWriter out=pageContext.getOut();
connection=DriverManager.getConnection("jdbc:sqlserver://localhost;databaseName=pubs;user=sa;password=1234");
statement=connection.createStatement();
rset=statement.executeQuery("select * from authors");
out.print("以下使用Tag輸出作者的基本信息");
out.print("
");
out.print("
au_id |
au_lname |
au_fname |
phone |
address |
city |
"+rset.getString(1)+" |
"+rset.getString(2)+" |
"+rset.getString(3)+" |
"+rset.getString(4)+" |
"+rset.getString(5)+" |
"+rset.getString(6)+" |
");
}
catch(Exception e)
{
e.printStackTrace();
}
return EVAL_PAGE;
}
}
author.tld描述文件如下
<?xml version="1.0" encoding="ISO-8859-1"?><taglib><tlib-version>1.2</tlib-version><jsp-version>1.2</jsp-version><short-name>DB</short-name><description>
this taglib provides tag to show date
</description><tag><name>DBShow</name><tag-class>tag.test.TagDB</tag-class><body-content>empty</body-content></tag></taglib>
web.xml文件內容如下
<?xml version="1.0" encoding="ISO-8859-1"?><web-app><display-name>welcome to Tomcat</display-name><description>
Welcome to Tomcat
</description><taglib><taglib-uri>DB</taglib-uri><taglib-location>/WEB-INF/author.tld</taglib-location></taglib></web-app>
tagTest.jsp文件如下
<dbshow></dbshow>
範例二:使用Tag標籤向數據庫中查入數據,插入成功後將所有記錄顯示出來.
InfoTagDB.java 代碼如下
package tag.test;
import java.io.*;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
import java.sql.*;
public class InfoTagDB extends TagSupport
{
String strNumber;
String strName;
int strNum;
Connection connection=null;
Statement statement=null;
public InfoTagDB()
{
try
{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
}
catch(ClassNotFoundException e)
{
e.printStackTrace();
}
}
public void setStrNumber(String strNumber)
{
this.strNumber=strNumber;
}
public void setStrName(String strName)
{
this.strName=strName;
}
public void setStrNum(int strNum)
{
this.strNum=strNum;
}
public int doStartTag()throws JspTagException
{
JspWriter out=pageContext.getOut();
try
{
connection=DriverManager.getConnection("jdbc:sqlserver://localhost;databaseName=pubs;user=sa;password=1234");
statement=connection.createStatement();
String sql="insert into authors(au_id,au_lname,au_fname,phone,address,city) values('"+au_id+"','"+au_lname+"','"+au_fname+"','"+phone+"','"+address+"','"+city + "')";
int i=statement.executeUpdate(sql);
if(i>0)
{
out.print("插入成功");
}
else
{
out.print("插入失敗");
}
statement.close();
connection.close();
}
catch(Exception e)
{
e.printStackTrace();
}
return SKIP_BODY;
}
}
insert.tld標籤描述文件如下
<?xml version="1.0" encoding="ISO-8859-1"?><taglib><tlib-version>1.2</tlib-version><jsp-version>1.2</jsp-version><shor-name>mytag</shor-name><description>the info test example</description><tag><name>insert</name><tag-class>tag.test.InfoTagDB</tag-class><body-content>empty</body-content><attribute><name>au_id</name><required>true</required><rtexprvalue>true</rtexprvalue></attribute><attribute><name>au_lname</name><required>true</required><rtexprvalue>true</rtexprvalue></attribute><attribute><name>au_fname</name><required>true</required><rtexprvalue>true</rtexprvalue></attribute><attribute><name>phone</name><required>true</required><rtexprvalue>true</rtexprvalue></attribute><attribute><name>address</name><required>true</required><rtexprvalue>true</rtexprvalue></attribute><attribute><name>city</name><required>true</required><rtexprvalue>true</rtexprvalue></attribute></tag></taglib>
web.xml配置文件如下
<?xml version="1.0" encoding="ISO-8859-1"?><web-app><display-name>welcome to Tomcat</display-name><description>
Welcome to Tomcat
</description><taglib><taglib-uri>DBInsert</taglib-uri><taglib-location>/WEB-INF/insert.tld</taglib-location></taglib><taglib><taglib-uri>DB</taglib-uri><taglib-location>/WEB-INF/author.tld</taglib-location></taglib></web-app>
tagTest.jsp文件如下
<insert au_id="888_666" au_lname="jane" au_fname="peng" phone="15853208264" address="中國海洋大學" city="青島"></insert><dbshow></dbshow>
對於tagTest.jsp文件中的第二個標籤是範例一TagDB.java中的代碼,大家可以參考。
範例三:使用Tag刪除數據庫中的記錄,刪除後將所有數據庫中的內容顯示出來
TagDelete.java代碼如下
package tag.test;
import java.sql.*;
import java.io.*;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
public class TagDelete extends TagSupport
{
String au_id;
Connection connection=null;
Statement statement=null;
public TagDelete()
{
try
{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
}
catch(ClassNotFoundException e)
{
e.printStackTrace();
}
}
public void setAu_id(String s)
{
this.au_id=s;
}
public int doStartTag()throws JspTagException
{
try
{
JspWriter out=pageContext.getOut();
connection=DriverManager.getConnection("jdbc:sqlserver://localhost;databaseName=pubs;user=sa;password=1234");
statement=connection.createStatement();
String sql="delete * from authors where au_id='"+au_id+"'";
int i=statement.executeUpdate(sql);
if(i>0)
{
out.print("刪除成功
");
}
else
{
out.print("刪除失敗
");
}
statement.close();
connection.close();
}
catch(Exception e)
{
e.printStackTrace();
}
return SKIP_BODY;
}
public int doEndTag()throws JspException
{
return EVAL_PAGE;
}
}
delete.tld標籤描述文件如下
<?xml version="1.0" encoding="ISO-8859-1"?><taglib><tlib-version>1.2</tlib-version><jsp-version>1.2</jsp-version><shor-name>Deltag</shor-name><description>the info test example</description><tag><name>delete</name><tag-class>tag.test.TagDelete</tag-class><body-content>empty</body-content><attribute><name>au_id</name><required>true</required><rtexprvalue>true</rtexprvalue></attribute></tag></taglib>
web.xml配置文件如下
<?xml version="1.0" encoding="ISO-8859-1"?><web-app><display-name>welcome to Tomcat</display-name><description>
Welcome to Tomcat
</description><taglib><taglib-uri>DBInsert</taglib-uri><taglib-location>/WEB-INF/insert.tld</taglib-location></taglib><taglib><taglib-uri>DB</taglib-uri><taglib-location>/WEB-INF/author.tld</taglib-location></taglib><taglib><taglib-uri>Deltag</taglib-uri><taglib-location>/WEB-INF/delete.tld</taglib-location></taglib></web-app>
tagTest.jsp測試代碼如下
<delete au_id="172-32-8886"></delete><dbshow></dbshow>
對於tagTest.jsp文件中的第二個標籤是範例一TagDB.java中的代碼,大家可以參考
範例五:使用自定義標籤實現字符串的大小寫轉化。
ConvertTest.java代碼如下
package tag.test;
import java.io.*;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
public class ConvertTest extends BodyTagSupport
{
public int doAfterBody()throws JspException
{
try
{
BodyContent body=getBodyContent();
JspWriter out=body.getEnclosingWriter();
String text=body.getString();//獲取標籤中的內容
if(text!=null)
{
out.print(text.toLowerCase());
}
}
catch(Exception e)
{
e.printStackTrace();
}
return SKIP_BODY;
}
}
convert.tld標籤描述文件如下
<?xml version="1.0" encoding="ISO-8859-1"?><taglib><tlib-version>1.2</tlib-version><jsp-version>1.2</jsp-version><shor-name>mytag</shor-name><description>the info test example</description><tag><name>Convert</name><tag-class>tag.test.ConvertTest</tag-class><body-content>jsp</body-content></tag></taglib>
web.xml配置文件如下
<?xml version="1.0" encoding="ISO-8859-1"?><web-app><display-name>welcome to Tomcat</display-name><description>
Welcome to Tomcat
</description><taglib><taglib-uri>mytag</taglib-uri><taglib-location>/WEB-INF/convert.tld</taglib-location></taglib></web-app>
testTag.jsp測試文件如下
<convert>
Hello FRIEND! THIS A PROGRAMM TO CONVERT BIG CHAR TO SMALL CHAR;
</convert>