我希望将jsp参数设置为可能包含特殊符号的属性值,然后使用表单servlet提交将参数传递给GET控制器。例如,参数为:
<input type="hidden" name="searchTerms" value="${sessionScope.combTerms}"></input>
我注意到如果sessionScope.combTerms包含双引号,例如。location:"LOC1",则控制器将只接收其中LOC1"消失的searchTerms的值为location:。我应该怎么做才能确保sessionScope.combTerms中的任何字符串都被正确地传递给控制器?提前谢谢。
发布于 2010-07-29 19:31:43
在填充HTML输入值时,请始终使用fn:escapeXml()。它不仅可以清理HTML实体中的值(引号表示属性值的末尾,这就是值的剩余部分丢失的原因),还可以在重新显示用户控制输入的地方避免XSS injection attack risks。
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<input type="hidden" name="searchTerms" value="${fn:escapeXml(sessionScope.combTerms)}">不需要来URLEncode它。网络浏览器已经可以自动完成了。自己尝试一下,在值中输入&。您将看到see浏览器将其更改为%26。URL浏览器还将负责解析XML实体,以便它们在URL中得到正确的结果。例如,你在服务器端得到的是",而不是"。
发布于 2012-07-03 03:02:57
<% String st = str.replaceAll("\"", """);%> ,and use st instead of str.发布于 2010-07-29 16:34:35
在将值放入表单之前对其进行编码,然后在serlvet中对其进行解码。
(您可能已经在URL参数中看到这是%20 )
下面是各自的类。
http://download-llnw.oracle.com/javase/1.5.0/docs/api/java/net/URLEncoder.html
http://download-llnw.oracle.com/javase/1.5.0/docs/api/java/net/URLDecoder.html
https://stackoverflow.com/questions/3360419
复制相似问题