---------- android培训 、java培训、期待与您交流! ----------
一,自定义标签的定义
1,自定义标签用于移除Jsp页面中的Java代码。
2,要使用自定义标签移除Jsp页面中的Java代码,只需要完成以下两个步骤:
a,编写一个实现Tag接口的Java类,把页面Java代码移到这个Java类中(标签 处理器类)。
b,编写标签库描述符(tld)文件,在tld文件中把标签处理器类描述成一个标 签。
例:
import java.io.IOException;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.SimpleTagSupport;
public class ForeachTag extends SimpleTagSupport {
private Object items;
private String var;
private Collection collection;
public void setItems(Object items) {
this.items = items;
if(items instanceof List){
collection=(Collection) items;
}
if(items instanceof Map){
Map map=(Map) items;
collection=map.entrySet();
}
if(items.getClass().isArray()){
collection=new ArrayList();
int length=Array.getLength(items);
for(int i=0;i<length;i++){
Object value=Array.get(items, i);
collection.add(value);
}
}
}
public void setVar(String var) {
this.var = var;
}
@Override
public void doTag() throws JspException, IOException {
Iterator it=this.collection.iterator();
while(it.hasNext()){
Object value=it.next();
this.getJspContext().setAttribute(var, value);
this.getJspBody().invoke(null);
}
}
}
<tag>
<name>foreach</name>
<tag-class>cn.itcast.web.simpletag.ForeachTag</tag-class>
<body-content>scriptless</body-content>
<attribute>
<name>items</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>var</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
记住:jsp中不能出现java代码,但有java代码一定要用自定义标签技术移除。
二,自定义标签功能扩展
1,开发人员在编写Jsp页面时,经常还需要在页面中引入一些逻辑,例如:
a,控制jsp页面某一部分内容是否执行。
b,控制整个jsp页面是否执行。
c,控制jsp页面内容重复执行。
d,修改jsp页面内容输出。
2,自定义标签除了可以移除jsp页面java代码外,它还可以实现以上功能。
3,tld文件中的四种标签体类型。
·EMPTY,JSP,scriptless,tagdepentend
三,开发带属性的标签
1,要想让一个自定义标签具有属性,通常需要完成两个任务:
a,在标签处理器中编写每个属性对应的setter方法。
b,在tld文件中描述标签的属性。
2,为自定义标签定义属性时,每个属性都必须按照JavaBean的属性命名方式,在标签处理器中定义属性名对应的 setter方法,用来接收Jsp页面调用自定义标签时传递进来的属性值。例如属性的url,在标签处理器类中就要定 义相应的setUrl(String url)方法。
3,在标签处理器中定义相应的set方法后,JSP引擎在解析执行开始标签前,也就是调用doStartTag方法前,会调用 set属性方法,为标签设置属性。
四,simpletag简单标签
五,jstl标签库
1,<c:out value='' default='' escapeXml=''></c:cout> 输入文本。
2,<c:set></c:set> 可以往域、JavaBean、Map里设置值。