猿教程 Logo

JSP自定义标签的属性

可以为任何自定义标记定义许多属性。 要定义属性,您需要执行两个任务:

  • 使用属性名定义TagHandler类中的属性并定义setter方法

  • 定义TLD文件中标签元素内的属性元素

让我们通过下面的标签来理解属性:

<m:cube number="4"></m:cube>

这里m是前缀,cube是标签名称,number是属性。


JSP自定义标记中属性的简单示例

在这个例子中,我们将使用返回任何给定数字的立方体的cube标签。 这里,我们定义了多维数据集标签的number属性。 我们在这里使用三个文件:

  • index.jsp

  • CubeNumber.java

  • mytags.tld

相关实例:

index.jsp

<%@ taglib uri="WEB-INF/mytags.tld" prefix="m" %>  
Cube of 4 is: <m:cube number="4"></m:cube>

CubeNumber.java:

package com.javatpoint.taghandler;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;

public class CubeNumber extends TagSupport{
private int number;
	
public void setNumber(int number) {
	this.number = number;
}

public int doStartTag() throws JspException {
	JspWriter out=pageContext.getOut();
	try{
		out.print(number*number*number);
	}catch(Exception e){e.printStackTrace();}
	
	return SKIP_BODY;
}
}

mytag.tld:

<?xml version="1.0" encoding="ISO-8859-1" ?>  
<!DOCTYPE taglib  
        PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"  
        "http://java.sun.com/j2ee/dtd/web-jsptaglibrary_1_2.dtd">  
  
<taglib>  
  <tlib-version>1.0</tlib-version>  
  <jsp-version>1.2</jsp-version>  
  <short-name>simple</short-name>  
  <uri>http://tomcat.apache.org/example-taglib</uri>  
  <description>A simple tab library for the examples</description>  
  
  <tag>  
    <name>cube</name>  
    <tag-class>com.javatpoint.taghandler.CubeNumber</tag-class>  
    <attribute>  
    <name>number</name>  
    <required>true</required>  
    </attribute>  
  </tag>  
</taglib>

输出

Cube of 4 is: 64

JSP自定义标签属性示例

让我们创建一个自定义标签,为给定的表名和ID打印特定的表记录。

因此,您必须在标记处理程序类中有两个属性。

PrintRecord.java

package com.javatpoint;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
import java.sql.*;

public class PrintRecord extends TagSupport{
private String id;
private String table;

public void setId(String id) {
	this.id = id;
}
public void setTable(String table) {
	this.table = table;
}

public int doStartTag()throws JspException{
	JspWriter out=pageContext.getOut();
	try{ 
		Class.forName("oracle.jdbc.driver.OracleDriver");
		Connection con=DriverManager.getConnection(
                 "jdbc:oracle:thin:@localhost:1521:xe","system","oracle");
		PreparedStatement ps=con.prepareStatement("select * from "+table+" where id=?");
		ps.setInt(1,Integer.parseInt(id));
		ResultSet rs=ps.executeQuery();
		if(rs!=null){
		ResultSetMetaData rsmd=rs.getMetaData();
		int totalcols=rsmd.getColumnCount();
		//column name
		out.write("<table border='1'>");
		out.write("<tr>");
		for(int i=1;i<=totalcols;i++){
			out.write("<th>"+rsmd.getColumnName(i)+"</th>");
		}
		out.write("</tr>");
		//column value
		
		if(rs.next()){
			out.write("<tr>");
				for(int i=1;i<=totalcols;i++){
				out.write("<td>"+rs.getString(i)+"</td>");
			}
			out.write("</tr>");
				
		}else{
			out.write("Table or Id doesn't exist");
		}
		out.write("</table>");
		
		}
		con.close();
	}catch(Exception e){System.out.println(e);}
	return SKIP_BODY;
}
}

m.tld

<?xml version="1.0" encoding="ISO-8859-1" ?>    
<!DOCTYPE taglib    
        PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"    
    "http://java.sun.com/j2ee/dtd/web-jsptaglibrary_1_2.dtd">    
    
<taglib>  
  
  <tlib-version>1.2</tlib-version>  
  <jsp-version>2.0</jsp-version>  
  <short-name>c</short-name>  
  <uri>javatpoint</uri>  
  
<tag>  
<name>printRecord</name>  
<tag-class>com.javatpoint.PrintRecord</tag-class>  
<attribute>  
<name>id</name>  
<required>true</required>  
</attribute>  
<attribute>  
<name>table</name>  
<required>true</required>  
</attribute>  
  
</tag>  
</taglib>

index.jsp

<%@ taglib uri="javatpoint" prefix="j" %>  
<j:printRecord table="user874" id="1"></j:printRecord>

输出



版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/Jsp/attributes-in-jsp-custom-tag.html