首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用get方法通过URL将包含双引号的字符串从jsp传递给servlet

如何使用get方法通过URL将包含双引号的字符串从jsp传递给servlet
EN

Stack Overflow用户
提问于 2010-07-29 15:54:28
回答 3查看 9.2K关注 0票数 3

我希望将jsp参数设置为可能包含特殊符号的属性值,然后使用表单servlet提交将参数传递给GET控制器。例如,参数为:

<input type="hidden" name="searchTerms" value="${sessionScope.combTerms}"></input>

我注意到如果sessionScope.combTerms包含双引号,例如。location:"LOC1",则控制器将只接收其中LOC1"消失的searchTerms的值为location:。我应该怎么做才能确保sessionScope.combTerms中的任何字符串都被正确地传递给控制器?提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-07-29 19:31:43

在填充HTML输入值时,请始终使用fn:escapeXml()。它不仅可以清理HTML实体中的值(引号表示属性值的末尾,这就是值的剩余部分丢失的原因),还可以在重新显示用户控制输入的地方避免XSS injection attack risks

代码语言:javascript
复制
<%@ 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中得到正确的结果。例如,你在服务器端得到的是",而不是&#34;

票数 3
EN

Stack Overflow用户

发布于 2012-07-03 03:02:57

代码语言:javascript
复制
<% String st = str.replaceAll("\"", "&quot;");%> ,and use st instead of str.
票数 2
EN

Stack Overflow用户

发布于 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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3360419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档