创建自定义标签所需的jar如下
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>javax.servlet.jsp.jstl-api</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.2-b02</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
创建一个tld文件 mytag.tld
<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd"
version="2.0">
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>mytag</short-name>
<uri>http://www.zyc.com/mytag</uri>
<tag>
<name>isTrue</name>
<tag-class>com.zyc.tag.Mytag</tag-class>
<!-- 定义标签体 此值很重要 建议可以网上搜索一下具体的用法-->
<body-content>scriptless</body-content>
<!-- 定义属性 -->
<attribute> <name>role</name> <required>true</required> <fragment>true</fragment> </attribute> </tag></taglib>
接下来看我们com.zyc.tag.Mytag 这个类
package com.zyc.tag;
import java.io.IOException;
import java.io.Writer;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.SimpleTagSupport;
/**
* @author:
* @date:2017年7月29日 下午9:54:02
* @description:
* @version :
*
*/
public class Mytag extends SimpleTagSupport{
private String role;
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
@Override
public void doTag() throws JspException, IOException {
StringBuffer sb = new StringBuffer();
Writer out = getJspContext().getOut();
if(role.equalsIgnoreCase("admin")){
getJspBody().invoke(out);//如果此行代码不写将无法实现把标签中定义的内容输出
}else{
}
out.write(sb.toString());
}
}
我们创建一个jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="http://www.zyc.com/mytag" prefix="mytag"%>
<html>
<body>
<h2 style="height: ">Hello World!</h2>
<mytag:isTrue role="admin">
<input type="button" value="增加">
</mytag:isTrue>
<mytag:isTrue role="zyc">
<input type="button" value="删除">
</mytag:isTrue>
</body>
</html>
当角色是admin的时候会显示增加按钮,当角色为zyc的时候删除按钮不显示
此实例只是简单的运用自定义标签
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>javax.servlet.jsp.jstl-api</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.2-b02</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
创建一个tld文件 mytag.tld
<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd"
version="2.0">
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>mytag</short-name>
<uri>http://www.zyc.com/mytag</uri>
<tag>
<name>isTrue</name>
<tag-class>com.zyc.tag.Mytag</tag-class>
<!-- 定义标签体 此值很重要 建议可以网上搜索一下具体的用法-->
<body-content>scriptless</body-content>
<!-- 定义属性 -->
<attribute> <name>role</name> <required>true</required> <fragment>true</fragment> </attribute> </tag></taglib>
接下来看我们com.zyc.tag.Mytag 这个类
package com.zyc.tag;
import java.io.IOException;
import java.io.Writer;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.SimpleTagSupport;
/**
* @author:
* @date:2017年7月29日 下午9:54:02
* @description:
* @version :
*
*/
public class Mytag extends SimpleTagSupport{
private String role;
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
@Override
public void doTag() throws JspException, IOException {
StringBuffer sb = new StringBuffer();
Writer out = getJspContext().getOut();
if(role.equalsIgnoreCase("admin")){
getJspBody().invoke(out);//如果此行代码不写将无法实现把标签中定义的内容输出
}else{
}
out.write(sb.toString());
}
}
我们创建一个jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="http://www.zyc.com/mytag" prefix="mytag"%>
<html>
<body>
<h2 style="height: ">Hello World!</h2>
<mytag:isTrue role="admin">
<input type="button" value="增加">
</mytag:isTrue>
<mytag:isTrue role="zyc">
<input type="button" value="删除">
</mytag:isTrue>
</body>
</html>
当角色是admin的时候会显示增加按钮,当角色为zyc的时候删除按钮不显示
此实例只是简单的运用自定义标签