a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁(yè) > 編程 > JSP > 正文

jsp簡(jiǎn)單自定義標(biāo)簽的forEach遍歷及轉(zhuǎn)義字符示例

2024-09-05 00:22:05
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
這篇文章主要介紹了jsp簡(jiǎn)單自定義標(biāo)簽的forEach遍歷及轉(zhuǎn)義字符,需要的朋友可以參考下

接著昨天的,如果<forEach>中的items類(lèi)型是map或者Collection類(lèi)型的,怎樣使用增強(qiáng)for循環(huán);
首先還是創(chuàng)建一個(gè)標(biāo)簽處理器類(lèi),定義兩個(gè)屬性,String var; Object items;
因?yàn)閕tems要迭代各種集合,所以要使用Object;
然后重寫(xiě)setter方法;
聲明一個(gè)成員變量,集合類(lèi)型的, 和上面兩個(gè)屬性是不相同的,這個(gè)是用在類(lèi)里的,
在items的setter方法中,判斷items的類(lèi)型
然后繼承他的doTag方法;

復(fù)制代碼 代碼如下:


public class ForEachTag2 extends SimpleTagSupport {
private String var;
private Object items;
private Collection collection;
public void setVar(String var){
this.var=var;
}
public void setItems(Object items){
this.items=items;
if(items instanceof Map){
Map map = (Map) items;
collection = map.entrySet();
}
if(items instanceof Collection){//set list
collection =(Collection) items;
}
if(items.getClass().isArray()){
collection = new ArrayList();
int len = Array.getLength(items);
for(int i=0;i<len;i++){
Object obj= Array.get(items, i);
collection.add(obj);
}
}
}
@Override
public void doTag() throws JspException, IOException {
Iterator iterator = collection.iterator();
while(iterator.hasNext()){
Object obj = iterator.next();
this.getJspContext().setAttribute(var, obj);
this.getJspBody().invoke(null);
}
}
}


然后,寫(xiě)tld描述標(biāo)簽

復(fù)制代碼 代碼如下:


<tag>
<name>forEach2</name>
<tag-class>com.csdn.items.ForEachTag2</tag-class>
<body-content>scriptless</body-content>
<attribute>
<name>var</name>
<required>true</required>
</attribute>
<attribute>
<name>items</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>


最后在jsp文件中寫(xiě)items的各種類(lèi)型

復(fù)制代碼 代碼如下:


<%
Map map = new HashMap();
map.put("aa","aaaa");
map.put("bb","bbbb");
map.put("cc","cccc");
map.put("dd","dddd");
map.put("ee","eeee");
request.setAttribute("map",map);
%>
<c:forEach2 var="str" items="${map}">
${str.key }-----${str.value }<br />
</c:forEach2>
<%
String[] strs ={"aa","bb","cc"} ;
request.setAttribute("strs",strs);
%>
<c:forEach2 var="str" items="${strs}">
${str}<br>
</c:forEach2>


接下里是一個(gè)轉(zhuǎn)義的自定義標(biāo)簽:
步驟都一樣:

復(fù)制代碼 代碼如下:


public void doTag() throws JspException, IOException {
JspFragment jf = this.getJspBody();//獲取jsp文件中的內(nèi)容
StringWriter sw = new StringWriter();//獲取一個(gè)流對(duì)象
jf.invoke(sw);//吧內(nèi)容放到流對(duì)象中
String s =sw.toString();//把jsp內(nèi)容轉(zhuǎn)成字符串
s= filter(s);//獲取進(jìn)行轉(zhuǎn)義之后的字符
this.getJspContext().getOut().write(s);//寫(xiě)入瀏覽器
}
public String filter(String message) {//對(duì)字符串進(jìn)行轉(zhuǎn)義的方法
if (message == null)
return (null);
char content[] = new char[message.length()];
message.getChars(0, message.length(), content, 0);
StringBuffer result = new StringBuffer(content.length + 50);
for (int i = 0; i < content.length; i++) {
switch (content[i]) {
case '<':
result.append("<");
break;
case '>':
result.append(">");
break;
case '&':
result.append("&");
break;
case '"':
result.append(""");
break;
default:
result.append(content[i]);
}
}
return (result.toString());
}
}


接下來(lái)就一樣了,

復(fù)制代碼 代碼如下:


<tag>
<name>htmlFilter</name>
<tag-class>com.csdn.items.HTMLFilter</tag-class>
<body-content>scriptless</body-content>
</tag>
<c:htmlFilter>
<a href=""> aaa</a>
</c:htmlFilter>


Jsp標(biāo)簽文件的內(nèi)容原樣輸出;
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 黄色地址 | 久久性视频 | 成人性视频免费网站 | 成人激情视频在线观看 | 在线色网 | 日韩 国产 在线 | 干干干操操操 | 日韩av免费 | 麻豆一区一区三区四区 | 久久亚洲精品中文字幕蜜潮电影 | 日韩不卡一区 | 91精品国产91久久久久久吃药 | 黄a一级 | 久久久国产一区二区三区四区小说 | 91在线免费看 | 亚洲一区久久 | 午夜影院入口 | 欧美成人一区二区 | 日韩精品免费一区二区在线观看 | 韩国三级中文字幕hd久久精品 | 日韩一区二区三区视频 | 日本一本不卡 | 日韩中文一区二区三区 | 亚洲精品乱码久久久v下载方式 | 韩国三级中文字幕hd爱的色放 | 欧美精品亚洲精品 | 欧美 日韩 国产 一区 | 日韩三级电影在线免费观看 | 日韩欧美在线观看一区 | 精品成人 | 久久精品国产久精国产 | 三级视频在线观看 | 美女久久久久 | 国产美女精品人人做人人爽 | 97色资源 | 免费黄色成人 | 国产免费一区二区三区 | 日本一区二区三区视频在线 | 欧洲天堂网 | 免费看男女www网站入口在线 | 亚洲精品一区中文字幕乱码 |