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

时间:2011-08-25 08:58:31

标签: java jsp

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

爪哇:

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>

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

5 个答案:

答案 0 :(得分:1)

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

HTTP URL Address Encoding in Java

答案 1 :(得分:1)

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

在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>

答案 2 :(得分:0)

请参阅Apache的StringEscapeUtils ApiDoc。

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

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

String escapedString = StringEscapeUtils.escapeJava(stringToEscape);

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

答案 3 :(得分:0)

查看JSTL core taglib

<c:url value="expression" context="expression"
    var="name" scope="scope">
  <c:param name="expression" value="expression"/>
  ...
</c:url>

答案 4 :(得分:0)

String userName="abc&def>ghi<j#kl";
String[] strArr = userName.split("[&$#<>]+");
userName = "";
for (String str : strArr){
   userName += str;
}
System.out.println(userName);