标签:
自定义标签
step1,写一个java类,继承SimpleTagSupport类,有属性的话给get、set方法
step2,在doTag方法里面,编写相应的处理逻辑。
step3,描述标签。要在.tld文件里面描述,并且, .tld文件要放到WEB-INF\下。
注意:
body-content用来告诉容器,标签有没有标签体,如果有,可以出现哪些内容。
//没有标签体
<body-content>empty</body-content>
//可以有标签体,但是,标签体的内容不能够
//出现java代码(<% %>,<%= %>,<%! %>)
<body-content>scriptless</body-content>
//有标签体,并且,标签体的内容可以出现java
//代码。只有复杂标签技术才支持JSP,简单
//标签技术只支持empty,scriptless
<body-content>JSP</body-content>
如:自定义一个标签,实现给定字符串,在页面打印指定次数的功能
新建mytag包,新建HelloTag类,继承SimpleTagSupport类
package mytag; import java.io.IOException; import javax.servlet.jsp.JspContext; import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.tagext.SimpleTagSupport; /** * 自定义标签 * 需要继承SimpleTagSuppor类,属性需要get,set方法,重写doTag方法 * 在WEB-INF下面新建对应的.tld文件并完成相关的配置 * 这样在JSP页面就可以使用自定义的标签了 */ public class HelloTag extends SimpleTagSupport { private String str; private int count; @Override public void doTag() throws JspException, IOException { JspContext jspContext = this.getJspContext(); JspWriter out = jspContext.getOut(); for (int i = 0; i < count; i++) { out.println(str+"<br/>"); } } public String getStr() { return str; } public void setStr(String str) { this.str = str; } public int getCount() { return count; } public void setCount(int count) { this.count = count; } }
在WEB-INF下面新建.tld文件,并进行配置
<?xml version="1.0" encoding="UTF-8" ?> <taglib xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd" version="2.1"> <tlib-version>1.1</tlib-version> <short-name>cc</short-name> <uri>com.liuijunfen.mytag</uri> <tag> <name>ps</name> <tag-class>mytag.HelloTag</tag-class> <body-content>empty</body-content> <attribute> <name>count</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>str</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> </tag> </taglib>
这样我们在JSP页面就可以使用我们自定义的标签
<%@ page import="java.util.*" pageEncoding="UTF-8" contentType="text/html;charset=UTF-8"%> <%@taglib uri="com.liuijunfen.mytag" prefix="cc" %> <html> <head> </head> <body><br> <cc:ps str="Hello" count="10" /> </body> </html>
说明:cc就是short-name,ps就是tag里name的值str,和count是属性
这样就完成了在页面打印10次Hello的功能
标签:
原文地址:http://www.cnblogs.com/liujunfen/p/4609752.html