特殊字符保存拦截-html标签等

本文介绍如何在Spring MVC项目中使用拦截器进行请求参数的安全过滤,并通过自定义异常处理来确保系统的稳定运行。主要内容包括:配置Spring MVC的依赖、实现拦截器的具体方法、定义业务异常类以及前端页面的交互设计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


1. 设置拦截器前面文中已有


2. spring jar包版本前文已有

<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-webmvc</artifactId>
	<version>${spring.version}</version>
</dependency></span>


3.  在拦截器中实现

public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        Map params = request.getParameterMap();
        Iterator i$ = params.keySet().iterator();

        while(i$.hasNext()) {
            Object key = i$.next();
            Object value = params.get(key);
            if(value instanceof String[]) {
                String[] str = (String[])((String[])value);

                for(int result = 0; result < str.length; ++result) {
                    String result1 = HtmlUtils.htmlEscape(str[result]);
                    if(!result1.equals(str[result])) {
                        logger.getBuilder().error("包含非法字符:[{}]" + str[result]);
                        throw new BusinessException("您输入了非法字符,请检查修改后再操作,谢谢您的配合!");
                    }
                }
            }

            if(value instanceof String) {
                String var11 = (String)value;
                String var12 = HtmlUtils.htmlEscape(var11);
                if(!var12.equals(var11)) {
                    throw new BusinessException("您输入了非法字符,请检查修改后再操作,谢谢您的配合!");
                }
            }
        }

        return true;
    }


4. 抛出 的BusinessException捕获,异常统一处理前文已有


5. BusinessException 异常定义

public class BusinessException extends RuntimeException {
    private static final long serialVersionUID = xxxxxxxxxxL;

    public BusinessException(String msg) {
        super(msg);
    }

    public BusinessException(String msg, Throwable ex) {
        super(msg, ex);
    }
}


6. 前台页面

layer.confirm("确定要提交吗?", {title: "提示信息"}, function () {
	$.ajax({
		type: 'post',
		url: '/xx/save',
		data: $("#xxForm").serialize(),
		error: function (data) {
			showError(data);
		},
		success: function (data) {
			if (data.code == 0) {
				layer.msg(data.desc,{time:1000});
			} else {
				layer.alert(data.desc, {icon: 2, skin: 'layer-ext-moon', title: '提示信息'});
			}
		}
	});
});


7. 错误统一处理  showError方法

function showError(obj) {
    if(obj.status != 500) {
        layer.alert("超时或系统异常", {icon: 2, skin: 'layer-ext-moon', title: '提示信息'});
    } else {
        layer.alert(obj.responseText, {icon: 2, skin: 'layer-ext-moon', title: '提示信息'});
    }
}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值