后台数据输出到前台页面转义问题

后台数据输出到前台页面转义问题

操作1:
    要操作的数据库数据:*&^~!=<。
    目的:原样输出到浏览器。
    操作:把数据传到前台的input隐藏域中,然后通过jQuery获取数据,最后把数据拼接到标签中。
    操作发现浏览器输出的结果是:*&^~!=<。
    用浏览器调试功能查看了一下标签input中的value数据,发现是我的数据*&^~!=<,没有错误,但是用jQuery获取的数据却是*&^~!=<,然后拼接到浏览器也是这个*&^~!=<。
    问题:浏览器把"<"转义成了"<",这明显不是我所想要的,此时我就想既然浏览器把我的数据转义了,那我就先把数据转义,然后再传给浏览器,这样应该就可以了吧,然后我就做了以下操作:

操作2:
    java代码处理数据:str.replace("&", "&")
    (注:其中&是&的实体编号)
    然后把数据传到前台,然后发现并不是我所想的那样。
    此时的结果是:input的value值是*&^~!=&lt;
    jQuery依然是:*&^~!=<,这就不地道了啊,我写<你把他转成<我没话说,怎么我把&转义成&实体后jQuery依然把我的数据给转义了,难道jQuery拿到数据这个过程对我的数据做了两次转义。然后我又做了以下操作:

操作3:
    在原本的java代码后面在对数据转义:str.replace("&", "&").replace("&", "&")
    此时再测试发现前台显示的数据是正确的。
    附:
    java代码:
        public static String escape(String point) {
            point = point.replace("&", "&").replace("&", "&");
            return point;
        }
    jsp测试代码:
        
        
        
        


总结:jQuery拿到数据时会对数据进行一次转义,然后把数据拼接,通过浏览器显示到页面上时,此时浏览器对拼接的数据解析又进行了一次转义,也就是说通过js处理后台数据时,这个数据应该在后台转义两次;如果不通过js处理数据,此时后台只需要转义一次即可。 第一次写,小激动啊,不足之处望多多指教!

你可能感兴趣的:(java相关)