您的位置:首页 > 其它

自定义标签

2015-06-30 10:47 162 查看
自定义标签
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的功能
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: