Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 字符串被巧妙地保存在html隐藏输入中_Java_Html_Jsp - Fatal编程技术网

Java 字符串被巧妙地保存在html隐藏输入中

Java 字符串被巧妙地保存在html隐藏输入中,java,html,jsp,Java,Html,Jsp,我有一个字符串,如下所示,来自服务器端 String productIDs = "[{"productID":"226167","productName":"It is my life (Bingo)"},{"productID":"3193","productName":"It is your name (jingo)"},{"productID":"273838","productName":"It's the same milk/Butter i drink/ate yesterday

我有一个字符串,如下所示,来自服务器端

  String productIDs = "[{"productID":"226167","productName":"It is my life (Bingo)"},{"productID":"3193","productName":"It is your name (jingo)"},{"productID":"273838","productName":"It's the same milk/Butter i drink/ate yesterday"}]"
现在我将它保存在一个隐藏的输入字段中

<input type="hidden" class="hiddenInput" value="<%=productIDs %>"  />

但当我通过firebug检查它时,它保存得非常精巧,如下所示

<input type="hidden" class="hiddenInput" yesterday"}]"="" is ="" my ="" Butter ="" life ="" (Bingo)"},{"productid":"273838","productname":"It ="" crmo="" (paar)"},{"productid":"3193","productname":"It ="" milk="" same ="" flip-off="" productid":"226167","productname":"It ="" value="[{" />


有人知道为什么会发生这种情况吗?

如果字符串中有引号,则在将其粘贴到HTML之前需要将其转义。

如果字符串中有引号,则在将其粘贴到HTML之前需要将其转义。

尝试以下方法:

String productIDs = "[{\"productID\":\"226167\",\"productName\":\"It is my life (Bingo)\"},{\"productID\":\"3193\",\"productName\":\"It is your name (jingo)\"},{\"productID\":\"273838\",\"productName\":\"It's the same milk/Butter i drink/ate yesterday\"}]";
试试这个:

String productIDs = "[{\"productID\":\"226167\",\"productName\":\"It is my life (Bingo)\"},{\"productID\":\"3193\",\"productName\":\"It is your name (jingo)\"},{\"productID\":\"273838\",\"productName\":\"It's the same milk/Butter i drink/ate yesterday\"}]";

问题在于保存字符串的方式,必须切换使用的引号类型,否则js不知道字符串的结束和开始位置

在你的问题中,它看起来是这样的:

String productIDs = "[{'productID':'226167','productName':'It is my life (Bingo)'},{'productID':'3193','productName':'It is your name (jingo)'},{'productID':'273838','productName':'It's the same milk/Butter i drink/ate yesterday'}]"
你也可以用
\“
代替
,但对我来说,这更让人困惑

编辑

可以使用以下代码执行此操作:

strUWantToChange.replace('"',"'");

问题在于保存字符串的方式,必须切换使用的引号类型,否则js不知道字符串的结束和开始位置

在你的问题中,它看起来是这样的:

String productIDs = "[{'productID':'226167','productName':'It is my life (Bingo)'},{'productID':'3193','productName':'It is your name (jingo)'},{'productID':'273838','productName':'It's the same milk/Butter i drink/ate yesterday'}]"
你也可以用
\“
代替
,但对我来说,这更让人困惑

编辑

可以使用以下代码执行此操作:

strUWantToChange.replace('"',"'");

正如其他答案已经说过的,引用必须转义。这些不是应该转义的唯一字符<代码>、
&
应该在HTML中系统地转义。风险在于

  • 无效的HTML
  • 断页
  • XSS攻击和安全漏洞
当您必须显示数据时,如果您不能绝对确定该数据是否包含任何此类字符(例如:直接或间接来自用户的数据、一般的自由文本数据),请转义此数据

这在JSP中通过两个简单的构造完成:

  • JSTL
    标记:
  • JSTL
    fn:escapeXml
    EL函数:
    ${fn:escapeXml(productIDs)}

Scriptlet在JSP中不应使用多年。使用JSTL、其他自定义标记和EL。

正如其他答案所述,引号必须转义。这些不是应该转义的唯一字符<代码>、
&
应该在HTML中系统地转义。风险在于

  • 无效的HTML
  • 断页
  • XSS攻击和安全漏洞
当您必须显示数据时,如果您不能绝对确定该数据是否包含任何此类字符(例如:直接或间接来自用户的数据、一般的自由文本数据),请转义此数据

这在JSP中通过两个简单的构造完成:

  • JSTL
    标记:
  • JSTL
    fn:escapeXml
    EL函数:
    ${fn:escapeXml(productIDs)}

Scriptlet在JSP中不应使用多年。使用JSTL、其他自定义标记和EL。

问题在于从何处获得它。你可以用另一种方式来做。。。将
'
放在字符串的外部,然后将
放在内部…另请参见编辑…问题是从何处获取它。您可以通过另一种方式进行操作…将
'
放在字符串的外部,然后将
放在内部。。。另请参见编辑。。。