前端向后端传递特殊字符‘%’,并且后端根据特殊字符做模糊查询

本文探讨了在SpringMVC项目中,如何处理URL中特殊字符的问题,通过使用encodeURIComponent()进行前端转码,并介绍了在SQL中使用LIKE和ESCAPE进行模糊查询的方法。

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

在项目中遇到根据名称模糊查询的场景,

如果传递正常字符串,springmvc正常传递接值,持久端正将解析查询,但是有时会穿一些特殊字符的参数,这里就会产生问题。

1.通过http请求拼接url时,特殊字符不会被当做参数,例如上图中,‘%’在后台action中接不到,所以需要在前端做一下处理,转码转义一下,encodeURIComponent();

unction pagination(currentPage,pageSize){
	   var name = encodeURIComponent($.trim($("#searchTitle").val()));
	   var startTime = $.trim($("#searchStartTime").val());
	   var endTime = $.trim($("#searchEndTime").val());
	   var searchType = $("#searchType").val();
	   location.href="${adminPath }/funds/queryList?pageNum="+currentPage+
"&pageSize="+pageSize+"&projectName="+name+"&startTime="+startTime+"&endTime="+endTime;
	   	}

这样后端action就可以接到特殊字符了。

2.sql做模糊查询时,通常是用like,%作为通配符,所以参数‘%’需要加/转义一下,并且用ESCAPE关键字明确转义字符

最终sql为

select * from a where  a.project_name like CONCAT('%',#{entity.projectName,jdbcType=VARCHAR},'%') ESCAPE '/'

关于LIKE以及ESCAPE的用法,参考

https://blog.youkuaiyun.com/q343509740/article/details/80602537

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值