`
wangtong40
  • 浏览: 249051 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多
public class HtmlFilterTag extends BodyTagSupport {
    @Override
    public int doEndTag() throws JspException {
        if (bodyContent != null) {
            String content = bodyContent.getString();
            content = filter(content);
            try {
                bodyContent.getEnclosingWriter().write(content);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        return EVAL_PAGE;
    }
    private 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("&lt;");
                break;
            case '>':
                result.append("&gt;");
                break;
            case '&':
                result.append("&amp;");
                break;
            case '“':
                result.append("&quot;");
                break;
            default:
                result.append(content[i]);
                break;
            }
        }
        return result.toString();
    }
}

public class ReadFileTag extends TagSupport {
    private String src;
    public void setSrc(String src) {
        this.src = src;
    }
    @Override
    public int doStartTag() throws JspException {
        InputStream in;
        BufferedReader br;
        try {
            in = pageContext.getServletContext().getResourceAsStream(src);
            br = new BufferedReader(new InputStreamReader(in));
            String line = br.readLine();
            while (line != null) {
                pageContext.getOut().write(line + "\r\n");
                line = br.readLine();
            }
        } catch (Exception e) {
            e.getMessage();
        }
        return SKIP_BODY;
    }
}
 
    <tag>
        <name>htmlfilter</name>
        <tag-class>tag.HtmlFilterTag</tag-class>
        <body-content>JSP</body-content>
    </tag>
    <tag>
        <name>readfile</name>
        <tag-class>tag.ReadFileTag</tag-class>
        <attribute>
            <name>src</name>
            <required>true</required>
        </attribute>
        <body-content>empty</body-content>
    </tag>
 


<wangtong:htmlfilter>
    <wangtong:readfile src="tag.jsp"/>
</wangtong:htmlfilter>
 

 

分享到:
评论

相关推荐

    彻底根治Spring @ResponseBody JavaScript HTML特殊字符

    Spring MVC下彻底解决@ResponseBody转义html特殊字符问题,解决包括尖角号(),单引号('),双引号("),按位与(&),反斜杠(\)。

    Python对HTML转义字符进行反转义的实现方法

    ,&gt; 用于标签中,& 用于转义),他们不能在 HTML 代码中直接使用,如果要在网页中显示这些符号,就需要使用 HTML 的转义字符串(Escape Sequence),例如 &lt; 的转义字符是 &lt;,浏览器渲染 HTML 页面时,会自动把...

    Vue第一天学习笔记.txt

    v-text 经过转义会显示标签等 v-html 不会经过转义 v-on:click 点击事件: v-on:click还有一种简短的形式:@click click函数定义在Vue实例 methods里面 调用函数方法形式:函数名:function(参数){内容} 属性绑定和数据...

    详解用Python处理HTML转义字符的5种方式

    ,&gt; 用于标签中,& 用于转义),他们不能在 HTML 代码中直接使用,如果要在网页中显示这些符号,就需要使用 HTML 的转义字符串(Escape Sequence),例如 &lt; 的转义字符是 &lt;,浏览器渲染 HTML 页面时,会自动把...

    最常用的HTML转义字符 Escape Sequence

    HTML中&lt;,&gt;,&等有特殊含义(&lt;,&gt;,用于链接签,&用于转义),不能直接使用。...为了在HTML文档中使用这些符号,就需要定义它的转义字符串。当解释程序遇到这类字符串时就把它解释为真实的字符。在输入转义字

    layui 对table中的数据进行转义的实例

    今天小编就为大家分享一篇layui 对table中的数据进行转义的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    老版本PHP转义Json里的特殊字符的函数

    数据中有个字段叫 content,里面保存了文章内容,含有大量 HTML 标签,这个字段在转 json 的时候需要转义,因为有大量的特殊字符会破坏 json 的结构。 比如这么一段 content: 复制代码 代码如下: ‘Lorem ipsum ...

    EscapeHTML.zip

    EscapeHTML 是一个简单的 Swift 库用来对 HTML 中的特殊字符进行转义。 示例代码: import EscapeHTML escape("&lt;p&gt;some html&lt;/p&gt;") 标签:EscapeHTML

    浅谈html转义及防止javascript注入攻击的方法

    有的时候页面中会有一个...html转义是将特殊字符或html标签转换为与之对应的字符。如:&lt; 会转义为 &lt;&gt; 或转义为 &gt;像“[removed]alert&#40;‘test’&#41;;[removed]”这段字符会转义为:“[removed]alert(‘test

    html-template-tag:-用于编译HTML模板字符串的ES6标记模板

    ES6带标签的模板,用于编译HTML模板字符串。 安装 该软件包通过npm分发: ... 但是,它可以转义HTML特殊字符,而不会在循环中使用它! var html = require ( "html-template-tag" ) ; // - or - import {

    前端css+html+布局笔记

    这种样式只会对当前标签起作用,不能对样式进行复用,不方便后期维护,不推荐使用 2.内部样式表 将样式表编写到head中的style标签中 &lt;style type="text/css"&gt;&lt;/style&gt; 使用内部样式表,进一步将表现和结构...

    Python autoescape标签用法解析

    2.autoescape标签:DTL模板中默认已经开启了自动转义,会将那些特殊字符串进行转义,比如会将“&lt;”转义成&lt;会将“&gt;”转移成“&gt;”,使用DTL的自动转义,可以使网站不容易出现XSS漏洞。 如果变量是可信任的,那么...

    php过滤html标记属性类

    HTML Attribute Filter * Func: * public strip 过滤属性 * public setAllow 设置允许的属性 * public setException 设置特例 * public setIgnore 设置忽略的标记 ...* private protect 特殊字符转义

    Pyparsing.pdf

    引号字符串(使用单个或双引号,除了',''转义情况外) HTML与XML标签(包含上下级以及属性操作) 逗号分隔以及被限制的列表表达式 轻量级封装-Pyparsing的代码包含在单个python文件中,容易放进site-packages目录下,...

    java 正则表达式

    下表包含了元字符的完整列表以及它们在正则表达式上下文中的行为:字符 说明 \将下一字符标记为特殊字符、文本、反向引用或八进制转义符。例如,“n”匹配字符“n”。“\n”匹配换行符。序列“\\”匹配“\”,“\(”...

    FreeMark学习笔记

    直接指定字符串值使用单引号或双引号限定,如果字符串值中包含特殊字符需要转义,看下面的例子: ${"我的文件保存在C:\\盘"} ${'我名字是\"annlee\"'} 输出结果是: 我的文件保存在C:\盘 我名字是"annlee" FreeMarker...

    《javaScrip开发技术大全》源代码

    • sample02.htm 使用转义字符 • sample03.htm 数组直接量的使用方法 • sample04.htm 数组直接量 • sample05.htm 函数直接量的使用方法 • sample06.htm 对象直接量 第...

    正则表达式经典实例.pdf

    5.14 对正则表达式元字符进行转义 第6章 数字 6.1 整数 6.2 十六进制数字 6.3 二进制数 6.4 删除前导 6.5 位于某个特定范围之内的整数 6.6 在某个特定范围之内的十六进制数 6.7 浮点数 6.8 含有千位分隔符的数 6.9 ...

    正则表达式经典实例

    5.14 对正则表达式元字符进行转义 第6章 数字 6.1 整数 6.2 十六进制数字 6.3 二进制数 6.4 删除前导 6.5 位于某个特定范围之内的整数 6.6 在某个特定范围之内的十六进制数 6.7 浮点数 6.8 含有千位分隔符...

Global site tag (gtag.js) - Google Analytics