茄子在线看片免费人成视频,午夜福利精品a在线观看,国产高清自产拍在线观看,久久综合久久狠狠综合

    <s id="ddbnn"></s>
  • <sub id="ddbnn"><ol id="ddbnn"></ol></sub>

  • <legend id="ddbnn"></legend><s id="ddbnn"></s>

    jsp簡單自定義標簽的forEach遍歷及轉義字符示例
    來源:易賢網 閱讀:1769 次 日期:2015-01-27 15:30:07
    溫馨提示:易賢網小編為您整理了“jsp簡單自定義標簽的forEach遍歷及轉義字符示例”,方便廣大網友查閱!

    這篇文章主要介紹了jsp簡單自定義標簽的forEach遍歷及轉義字符,需要的朋友可以參考下

    接著昨天的,如果<forEach>中的items類型是map或者Collection類型的,怎樣使用增強for循環(huán);

    首先還是創(chuàng)建一個標簽處理器類,定義兩個屬性,String var; Object items;

    因為items要迭代各種集合,所以要使用Object;

    然后重寫setter方法;

    聲明一個成員變量,集合類型的, 和上面兩個屬性是不相同的,這個是用在類里的,

    在items的setter方法中,判斷items的類型

    然后繼承他的doTag方法;

    代碼如下:

    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);

    }

    }

    }

    然后,寫tld描述標簽

    代碼如下:

    <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文件中寫items的各種類型

    代碼如下:

    <%

    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>

    接下里是一個轉義的自定義標簽:

    步驟都一樣:

    代碼如下:

    public void doTag() throws JspException, IOException {

    JspFragment jf = this.getJspBody();//獲取jsp文件中的內容

    StringWriter sw = new StringWriter();//獲取一個流對象

    jf.invoke(sw);//吧內容放到流對象中

    String s =sw.toString();//把jsp內容轉成字符串

    s= filter(s);//獲取進行轉義之后的字符

    this.getJspContext().getOut().write(s);//寫入瀏覽器

    }

    public String filter(String message) {//對字符串進行轉義的方法

    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());

    }

    }

    接下來就一樣了,

    代碼如下:

    <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標簽文件的內容原樣輸出;

    更多信息請查看IT技術專欄

    更多信息請查看網絡編程

    2026上岸·考公考編培訓報班

    • 報班類型
    • 姓名
    • 手機號
    • 驗證碼
    關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
    工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
    聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網