springMVC⾃动转义问题
今天遇到个神奇的问题,前端上传图⽚到⽂件服务器上,然后将图⽚地址传到后台,后台保存路径到数据库中,但是展⽰的时候路径⼀直有问题。
⽐如前端⼊参
...../953983fd-576b-44fb-ae11-57b5e78ced73?q-sign-algorithm=sha1&q-ak=AKIDmNksnTjNZeV9Y4qo37UcbS6WhdKtaI8j&q-sign-time=1582808716;1582809616&q-key-time=1582808716;
然后后台返回的却是
...../953983fd-576b-44fb-ae11-57b5e78ced73?q-sign-algorithm=sha1&q-ak=AKIDmNksnTjNZeV9Y4qo37UcbS6WhdKtaI8j&q-sign-time=1582808716;1582809616&q-key-time=1582808716;也就是会将&转义成&
出现这种问题的原因就是springMVC对于特殊字符会进⾏转义,例如&---->&
但是具体的源码没有到在哪,后⾯有时间再去⼀下。。。
解决⽅法可以有以下⼏种:
1、StringEscapeUtils
java中可以使⽤ org.apachemons.lang3 包中的 StringEscapeUtils.unescapeHtml4(String str) ⽅法来进⾏解码。
不过会提⽰这个⽅法被弃⽤了,可以使⽤StringEscapeUtils,maven依赖如下:
<dependency>
springmvc考试选择题<groupId>org.apachemons</groupId>
<artifactId>commons-text</artifactId>
<version>1.1</version>
</dependency>
String unescapeHtml4 = StringEscapeUtils.ImgPath());
通过这个⽅法就能将已经被转义的字符还原回来。
2、base64编码
前端在传⼊参数的时候,可以对参数进⾏base64的编码,然后再传⼊到后端,然后拿到后端返回数据的时候,进⾏base64的解码。
引⼊js⽂件:
<script src="js/jquery-3.2.1.min.js" type="text/javascript"></script>
<script src="js/jquery.base64.js" type="text/javascript"></script>
使⽤⽅法:
//对 123321 进⾏加密
var str = $.de('123321');
alert(str);
//对 str 进⾏解密
var dstr = $.base64.decode(str);
alert(dstr)
3、urlEncode与urlDecode
这个原理也是⼀样的,因为我这边的⼊参是图⽚地址,是⼀个url,因此可以使⽤这种⽅式进⾏encode与decode
编码
var str = encodeURIComponent('中⽂');
解码
var str = decodeURIComponent(UrlEncode);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论