JSP-使用自定义标签来操作数据库

      JSP-使用自定义标签来操作数据库

范例一:使用自定义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("sun.jdbc.odbc.JdbcOdbcDriver");
  }
  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:odbc:StuDataBase");
   statement=connection.createStatement();
   rset=statement.executeQuery("select * from stuInformation");
   out.print("以下使用Tag输出学生的基本信息");
   out.print("<hr>");
   out.print("<table width=\"80%\" border=\"1\"><tr><td>StuNumber</td><td>StuName</td><td>StuNum</td></tr>");
   while(rset.next())
   {
    out.print("<tr><td>"+rset.getString(1)+"</td><td>"+rset.getString(2)+"</td><td>"+rset.getString(3)+"</td></tr>");
   }
   out.print("</table>");
  
  }
  catch(Exception e)
  {
   e.printStackTrace();
  }
  return EVAL_PAGE;
}
}


time.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/time.tld</taglib-location>
    </taglib>
</web-app>

tagTest.jsp文件如下
<%@ page contentType="text/html;charset=gb2312" %>
<%@ taglib uri="DB" prefix="mytag" %>
<mytag: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("sun.jdbc.odbc.JdbcOdbcDriver");
     }
     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:odbc:StuDataBase");
       statement=connection.createStatement();
       String sql="insert into stuInformation(StuNumber,StuName,StuNum) values('"+strNumber+"','"+strName+"',"+strNum+")";
       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>strNumber</name>
         <required>true</required>
         <rtexprvalue>true</rtexprvalue>
       </attribute>
        <attribute>
         <name>strName</name>
         <required>true</required>
         <rtexprvalue>true</rtexprvalue>
       </attribute>
       <attribute>
         <name>strNum</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/time.tld</taglib-location>
    </taglib>
</web-app>

tagTest.jsp文件如下

<%@ page contentType="text/html;charset=gb2312" %>
<%@ taglib uri="DBInsert" prefix="mytag" %>
<mytag:insert strNumber="1007" strName="李四" strNum="10"/>
<%@ taglib uri="DB" prefix="tagmy" %>
<tagmy: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 strNumber;
Connection connection=null;
Statement statement=null;
public TagDelete()
{
  try
  {
   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");  
  }
  catch(ClassNotFoundException e)
  {
   e.printStackTrace();
  }
}
public void setStrNumber(String strNumber)
{
  this.strNumber=strNumber;
}
public int doStartTag()throws JspTagException
{
  try
  {
   JspWriter out=pageContext.getOut();
   connection=DriverManager.getConnection("jdbc:odbc:stuDataBase");
   statement=connection.createStatement();
   String sql="delete * from stuInformation where StuNumber='"+strNumber+"'";
   int i=statement.executeUpdate(sql);
   if(i>0)
   {
    out.print("删除成功<br>");
   }
   else
   {
       out.print("删除失败<br>");
   }
   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>strNumber</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/time.tld</taglib-location>
    </taglib>
    <taglib>
      <taglib-uri>Deltag</taglib-uri>
      <taglib-location>/WEB-INF/delete.tld</taglib-location>
    </taglib>
</web-app>

tagTest.jsp测试代码如下

<%@ page contentType="text/html;charset=gb2312" %>
<%@ taglib uri="Deltag" prefix="tagDel" %>
<tagDel:delete strNumber="1005"/>
<%@ taglib uri="DB" prefix="tagmy" %>
<tagmy: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测试文件如下
<%@ taglib uri="mytag" prefix="test" %>
<test:Convert>
Hello WORLD;
</test:Convert>

你可能感兴趣的:(java,sql,tomcat,jsp,Web)