繁体   English   中英

如何处理查询字符串中的特殊字符?

[英]How to handle special characters in query string?

我想在Java和JSP中的查询字符串中处理特殊字符(&,',“,$,#,<,>)。

Java的:

String userName="abc&def>ghi<j#kl";
String url = "/app/ProductAction.do?userName="+userName+"&pwd=test123";
response.sendRedirect(url);

JSP:

<%
    String userName="abc&def>ghi<j#kl";
    String url = "/app/ProductAction.do?userName="+userName+"&pwd=test123";
%>
<a href="<%= url %>"> click here </a>
<a href="javscript:callUrl('<%= url %>')"> forward </a>

我们如何处理所有需要传递的特殊字符?

尝试使用url编码和解码。 它将处理url中的所有特殊字符以及其他非支持字符

Java中的HTTP URL地址编码

在Java中,您应该使用java.net.URLEncoder对每个URL参数进行编码。

在JSP中,您不应该使用scriptlet。 使用JSP EL,JSTL和其他自定义标记。 生成URL的JSTL标记是<c:url> 它负责所有这些:

<c:url value="/app/ProductAction.do" var="theProperlyEncodedUrl">
    <c:param name="userName" value="${someBean.userName}"/>
    <c:param name="pwd" value="${someBean.pwd}"/>
</c:url>

<a href="<c:out value="${theProperlyEncodedUrl}"/>">click here</a>

请参阅Apache的StringEscapeUtils ApiDoc。

使用此类,您可以使用CSV,HTML,SQL,XML实体或遵循JAVA,JavaScript规则来转义字符串。

例如,遵循Java规则,您可以使用以下行:

String escapedString = StringEscapeUtils.escapeJava(stringToEscape);

此外,在Java中,您可以使用java.net.URL类,该类正确编码url字符串。 例如, URL myUrl = new URL(stringWithURL);

看一下JSTL核心taglib

<c:url value="expression" context="expression"
    var="name" scope="scope">
  <c:param name="expression" value="expression"/>
  ...
</c:url>
String userName="abc&def>ghi<j#kl";
String[] strArr = userName.split("[&$#<>]+");
userName = "";
for (String str : strArr){
   userName += str;
}
System.out.println(userName);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM