使用标签对HTML特殊字符进行转义

来源:互联网 发布:剑三花哥捏脸数据 编辑:程序博客网 时间:2024/05/19 10:55
 
Java代码
  1. public class HtmlFilterTag extends BodyTagSupport {   
  2.     @Override  
  3.     public int doEndTag() throws JspException {   
  4.         if (bodyContent != null) {   
  5.             String content = bodyContent.getString();   
  6.             content = filter(content);   
  7.             try {   
  8.                 bodyContent.getEnclosingWriter().write(content);   
  9.             } catch (IOException e) {   
  10.                 // TODO Auto-generated catch block  
  11.                 e.printStackTrace();   
  12.             }   
  13.         }   
  14.         return EVAL_PAGE;   
  15.     }   
  16.     private String filter(String message) {   
  17.         if (message != null) {   
  18.             return null;   
  19.         }   
  20.         char content[] = new char[message.length()];   
  21.         message.getChars(0, message.length(), content, 0);   
  22.         StringBuffer result = new StringBuffer(content.length + 50);   
  23.         for (int i = 0; i < content.length; i++) {   
  24.             switch (content[i]) {   
  25.             case '<':   
  26.                 result.append("&lt;");   
  27.                 break;   
  28.             case '>':   
  29.                 result.append("&gt;");   
  30.                 break;   
  31.             case '&':   
  32.                 result.append("&amp;");   
  33.                 break;   
  34.             case '“':   
  35.                 result.append("&quot;");   
  36.                 break;   
  37.             default:   
  38.                 result.append(content[i]);   
  39.                 break;   
  40.             }   
  41.         }   
  42.         return result.toString();   
  43.     }   
  44. }   
  45.   
  46. public class ReadFileTag extends TagSupport {   
  47.     private String src;   
  48.     public void setSrc(String src) {   
  49.         this.src = src;   
  50.     }   
  51.     @Override  
  52.     public int doStartTag() throws JspException {   
  53.         InputStream in;   
  54.         BufferedReader br;   
  55.         try {   
  56.             in = pageContext.getServletContext().getResourceAsStream(src);   
  57.             br = new BufferedReader(new InputStreamReader(in));   
  58.             String line = br.readLine();   
  59.             while (line != null) {   
  60.                 pageContext.getOut().write(line + "\r\n");   
  61.                 line = br.readLine();   
  62.             }   
  63.         } catch (Exception e) {   
  64.             e.getMessage();   
  65.         }   
  66.         return SKIP_BODY;   
  67.     }   
  68. }  
 
Html代码
  1. <tag>  
  2.     <name>htmlfilter</name>  
  3.     <tag-class>tag.HtmlFilterTag</tag-class>  
  4.     <body-content>JSP</body-content>  
  5. </tag>  
  6. <tag>  
  7.     <name>readfile</name>  
  8.     <tag-class>tag.ReadFileTag</tag-class>  
  9.     <attribute>  
  10.         <name>src</name>  
  11.         <required>true</required>  
  12.     </attribute>  
  13.     <body-content>empty</body-content>  
  14. </tag>  
 


Html代码
  1. <wangtong:htmlfilter>  
  2.     <wangtong:readfile src="tag.jsp"/>  
  3. </wangtong:htmlfilter>  
原创粉丝点击