今天我们谈谈两个特殊字符的处理,第一个&,第二个>。&出现在参数值中时,&后面的数据会被当作另一个参数名称,>出现在参数值中,当我们再次展现时会被转义为>,其他特殊转义字符类似,但有时我们就是希望展现的就是>这几个字符,下面是两种情况的解决方法。
第一种:参数值中有&字符:
使用get方式传参,且参数值中包含特殊字符&则会出现错误。
如下面的请求:addUser.html?username=小明&age=18,这样是没有问题的,
现在把Name的值改为xiaoming&123,这时的请求如下:
addUser.html?username=xiaoming&123&age=18,这样问题就大了,这样会任务是传了三个参数:username、123、age,我们明明是只想传两个的。
问题解决:出现这种情况我们可以使用js提供的encodeURIComponent方法对参数进行编码,使参数值以另一种形式传输;
前端处理:
var usernameEncode = encodeURIComponent('xiaoming&123');
addUser.html?username=usernameEncode&age=18 ;
后台接到数据后是编码的数据,需要在后台解码!!!!!!!!!
Java后台代码如下:
String username= java.net.URLDecoder.decode(request.getParameter("username"),"UTF-8");
这时的username就是我们在前台输入的值了,就是酱紫。
第二种:参数值中有>字符:
当前端输入>字符时,我们可以通过上面的方法正确的将其传入后台并入库,但是当我们再次取值时>这个在前端会被转义为>,这时我们可将数据放如<xmp>标签中。如
<xmp>${username}</xmp>
虽然xmp标签是弃用标签,但是在一些浏览器还是支持,现在推荐的是<pre>和<code>标签,但是不知道是不是因为我用的是freemarker模板引擎,只有<xmp>标签是有用的,以后还想再研究。
今天就到这,谢谢阅读。