栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Spring:绑定到命令时转义输入

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring:绑定到命令时转义输入

如果使用的是FormController,则可以通过重写initBinder(HttpServletReques,ServletRequestDataBinder)方法来注册新的属性编辑器。此属性编辑器可以转义html,javascript和sql注入。

如果使用的是属性编辑器,则请求对象中的值将在分配给命令对象之前由编辑器处理。

注册编辑器时,我们必须指定其值必须由编辑器处理的项目的类型。

抱歉,现在我没有该方法的语法。但是我确信这就是我们实现这一目标的方式。

已编辑

我认为以下语法可以工作

在您的控制器中覆盖如下所示的以​​下方法

    @Override    protected void initBinder(HttpServletRequest request,        ServletRequestDataBinder binder) throws Exception {        super.initBinder(request, binder);        binder.registerCustomEditor(String.class,          new StringEscapeEditor(true, true, false));    }

然后创建以下属性编辑器

public class StringEscapeEditor extends PropertyEditorSupport {    private boolean escapeHTML;    private boolean escapeJavascript;    private boolean escapeSQL;    public StringEscapeEditor() {        super();    }    public StringEscapeEditor(boolean escapeHTML, boolean escapeJavascript, boolean escapeSQL) {        super();        this.escapeHTML = escapeHTML;        this.escapeJavascript = escapeJavascript;        this.escapeSQL = escapeSQL;    }    public void setAsText(String text) {        if (text == null) { setValue(null);        } else { String value = text; if (escapeHTML) {     value = StringEscapeUtils.escapeHtml(value); } if (escapeJavascript) {     value = StringEscapeUtils.escapeJavascript(value); } if (escapeSQL) {     value = StringEscapeUtils.escapeSql(value); } setValue(value);        }    }    public String getAsText() {        Object value = getValue();        return (value != null ? value.toString() : "");    }}

希望这对您有帮助



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/623935.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号