[英]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中,您应该使用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.