一、特殊字符需要做处理
1. 单引号
后台返回的json中包含单引号,可能会引起前端页面js报错,可以在前端对单引号进行转义,或者在后台进行转义,再生成json返回到前端。
后台根据前端传递的数据拼接sql时,单引号会导致sql语句报错,且不推荐直接使用字符串进行sql拼接,可以使用JDBC中的类,通过占位符传递参数,防止sql注入。
如果sql中有单引号导致sql语句报错,可以将两个单引号进行转义,如:select * from table where column like '''' ;
2. 百分号、下划线
前端get请求拼接的url中,如果有百分号,需要对百分号进行转义,否则后台将取不到该百分号,可以使用'%25'替换'%',如此,后台可以根据参数直接获取到%。
前端传递某个参数的值为%,如果后台不对它进行处理,直接作为条件进行模糊查询,将会把数据库中所有非空的数据查询出来; 如果参数的值为_,后台不对它进行处理,直接作为条件进行模糊查询,会匹配到数据库中该字段所有单个字符的数据。
如果遇到百分号、下划线作为查询条件,可以使用/+百分号或下划线进行转义,在本项条件后加 escape '/' 即可,如:
select * from tabl where column like '%/%%' escape '/' ;
select * from tabl where column like '%/_%' escape '/' ;