`
jamie.wang
  • 浏览: 347404 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Velocity 转义HTML

阅读更多

Velocity自带的转义对中文的支持不好,我们自己就写了转义的代码。

public class WebEscapeHtmlReference extends EscapeHtmlReference {

    @Override
    protected String escape(Object text) {
        return escapeHtml(text);
    }

    private static String escapeHtml(Object value) {
        if (value == null)
            return null;

        if (value instanceof String) {
            String result = value.toString();
            // "'<>&
            result = result.replaceAll("&", "&amp;").replaceAll(">", "&gt;")
                    .replaceAll("<", "&lt;").replaceAll("\"", "&quot;");
            return result;
        } else {
            return value.toString();
        }
    }
}

 Veloctiy配置

    <!-- Velocity config -->
    <bean id="velocityConfig" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
        <property name="resourceLoaderPath" value="/WEB-INF/views/" />
        <property name="velocityPropertiesMap">
            <props>
                <prop key="input.encoding">utf-8</prop>
                <prop key="output.encoding">utf-8</prop>
                <prop key="eventhandler.referenceinsertion.class">org.jamie.demo.springweb.framework.mvc.WebEscapeHtmlReference</prop>
                <prop key="eventhandler.escape.html.match">/^(?!\$\!?unesc_).*/</prop>
                <prop key="velocimacro.library">macros.vm</prop>
            </props>
        </property>
    </bean>
 对于某些不需要转义的输出(你必须肯定这个输出不包含用户的输入,或者用户的输入已经转义过),velocity变量以unesc_作为前缀。
分享到:
评论
2 楼 jamie.wang 2013-04-14  
不理解你的问题,详细点,或者把代码片段贴出来。
1 楼 IT_Spirit 2013-03-27  
前台数据显示时 要转义的数据变量名定义需遵循:
格式:_html_自定义名字
例如:_html_title、_html_userName等等


可是我去操作List 或实体对象的时候 就完全不行了,不知道是不是我错了。求解 呀

相关推荐

    velocity的jar包

    5. **事件驱动的处理机制**:Velocity 提供了一套事件驱动的处理机制,允许用户自定义处理器对模板进行预处理或后处理,如自动转义特殊字符,防止XSS攻击。 **velocity-tools-2.0.jar** `velocity-tools-2.0.jar`...

    Velocity 和 FreeMarker区别

    - **Velocity**则相对简单,支持基本的字符转义。 7. **数据绑定**: - **FreeMarker**支持更灵活的数据绑定方式,能够轻松地访问和操作Java对象的属性。 - **Velocity**的数据绑定功能虽然不如FreeMarker强大,...

    记录一下Velocity防Xss攻击

    例如,可以使用Velocity的内置宏或者自定义函数来自动转义HTML特殊字符,如 `、`&gt;`、`&` 和 `'`。 `EscapeRequestReference`可能是一个类,用于处理HTTP请求中的引用,并确保它们在被插入到Velocity模板中之前得到...

    velocity的学习资料

    Velocity在Web开发中常被用来生成HTML、XML、CSV或其他格式的文档,将内容和表现分离,让开发者专注于业务逻辑而不用关心页面布局。在这个"velocity的学习资料"压缩包中,我们很可能会找到关于Velocity的基本概念、...

    velocity-doc

    在Velocity的实现中,还可以通过转义字符实现对VTL特殊字符的转义,同时在输出文本时也可以使用转义字符以达到预期的显示效果。例如,可以使用转义字符来插入一个美元符号“$”而不引起变量解析。 VTL格式化问题...

    velocity学习资料.zip

    此外,了解Velocity的内置工具和宏库,如Escaper工具,可以帮助你更好地处理HTML转义和防止XSS攻击。 这个压缩包中的“velocity学习资料”很可能包含以下内容: 1. 基本教程:介绍Velocity的概念、安装和基本用法。...

    velocity document

    4. **内置方法**:Velocity提供了一些内置的方法,如`escape()`用于转义特殊字符,`format()`进行格式化输出。 **二、Velocity与Freemarker比较** 虽然Velocity和Freemarker都是视图模板引擎,但它们有各自的特性...

    Velocity 应用示例

    4. **逃逸机制(Escaping)**:Velocity 提供了 `##` 符号用于注释,`@` 符号用于转义特殊字符,防止变量或指令被误解析。 ** VelocityProject 示例** 在 "VelocityProject" 中,我们可能看到以下结构: - **...

    freemarker&velocity的使用

    4. **函数和宏**:Freemarker提供了内置函数,如`htmlEscape`用于转义HTML特殊字符,同时用户可以自定义宏来封装重复的模板片段。 5. **模板配置**:可以通过`freemarker.cfg.properties`文件配置模板解析的全局选项...

    Velocity Demo

    6. **自动转义(Auto-escaping)**:为了防止XSS攻击,Velocity提供了自动转义机制,确保模板中的动态内容安全输出。你可以根据需求开启或关闭这个功能。 在Velocity Demo中,你可能会看到以下的步骤: 1. **初始...

    Velocity的基本用法

    1. **模板(Template)**: 模板是Velocity的基石,它定义了HTML、XML或其他格式的静态文本结构,其中包含了一些特殊的指令(称为Velocity语句)来插入动态数据。 2. **上下文(Context)**: 上下文是模板和Java代码...

    velocity 使用手冊整理

    - **输出控制(Output Control)**: `#set` 用于设置变量,`#escape` 和 `#noescape` 控制 HTML 实体转义。 - **注释(Comments)**: `#comment` 和 `##` 分别用于单行和多行注释。 3. **最佳实践** - **保持...

    Velocity简介

    Velocity会自动处理变量的转义和安全问题,确保模板的输出是安全的。 在实际应用中,Velocity通过一个上下文(Context)对象来传递数据到模板。开发者可以在Java代码中设置Context对象的属性,这些属性可以在模板中...

    Velocity模板使用指南中文版

    Velocity是Apache软件基金会的一个开源项目,它是一种基于Java的模板引擎,用于将HTML、XML等静态页面与动态数据分离,使得开发者能够专注于业务逻辑,而设计师可以专注于页面布局和样式设计。Velocity通过简单的...

    Apache Velocity - Velocity User Guide

    1. **生成 Web 页面**:Velocity 可用于生成静态 HTML 页面或动态 Web 内容。 2. **SQL 生成**:它可以生成 SQL 查询,这对于数据库驱动的应用程序非常有用。 3. **PostScript 生成**:还可以生成 PostScript 文档,...

    Velocity用户手册.doc

    Velocity 还提供了对字符串、数值、范围操作的支持,以及对特殊字符的转义机制,确保模板的安全性和正确性。例如,货币符号和 VTL 引用的转义,以及大小写的替换。 在实际应用中,Velocity 不仅限于 Web 开发,还...

    struts2Velocity.zip_velocity

    6. **Velocity工具**:Velocity提供了一些内置工具,如`esc`用于转义HTML实体,`date`和`number`用于格式化日期和数字。Struts2也提供了额外的工具集,如`servlet`和`field`,可以方便地访问HTTP请求和表单字段。 7...

    Velocity用户手册(中文版)

    在实际项目中,Velocity常用于生成电子邮件、报表、动态HTML页面等内容。例如,你可以根据用户数据动态生成个性化邮件,或者在网站上展示动态生成的商品详情页。 通过阅读这份中文版的Velocity用户手册,你将能够...

    velocity中文资料以及实例详解

    5. 渲染:当VTL遇到一个变量,它会尝试将其转换为字符串并输出到最终的HTML或其他输出格式。 除了基础语法,Velocity还提供了一系列指令,用于控制模板的逻辑结构: 1. `Set`:设置变量的值,如 `#set($var = ...

Global site tag (gtag.js) - Google Analytics