前后台交互中特殊字符的处理

一、特殊字符需要做处理

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 '/' ;

    

LocalDateTime在Java是一个用于表示日期时间值的对象,并且它不包含时区信息。因此,在进行后端交互的时候,处理日期时间数据时需要特别注意时区的问题。 ### 后台处理后台通常需要将日期时间数据存储到数据库,或者通过API提供给端。由于数据库系统可能会保存时区特定的时间戳,而端应用则可能基于用户所在的时区显示日期时间。所以在向数据库发送日期时间数据之,应该将其转换成统一的时区。这通常是将所有数据转换为UTC(协调世界时)时间再进行存储。 ```java import java.time.LocalDateTime; import java.time.ZoneId; import java.time.ZonedDateTime; public void saveDateTimeToDB(LocalDateTime localDateTime) { ZonedDateTime utcDateTime = localDateTime.atZone(ZoneId.of("UTC")); // 此处可以将utcDateTime转换为数据库支持的格式并存储 } ``` ### 端显示: 端在接收并展示来自后台的数据时,也需要考虑时区差异。为了给用户正确的体验,端应能够接受并解析不同时区的时间数据,并将其转换成用户所在时区的日期时间。 #### JavaScript示例: ```javascript function formatDateTime(dateTimeString) { const dateTime = new Date(dateTimeString); const userTimeZoneOffset = new Date().getTimezoneOffset() * -1; // 转换为分钟数 const offsetMillis = userTimeZoneOffset * 60 * 1000; return new Date(dateTime.getTime() + offsetMillis).toLocaleString(); } // 使用示例 const serverDateTime = "2023-10-04T15:30Z"; // UTC时间字符串,其Z代表零时区 document.getElementById('display').innerHTML = formatDateTime(serverDateTime); ``` ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值