我想在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>
我们如何处理所有需要传递的特殊字符?
答案 0 :(得分:1)
尝试使用url编码和解码。它将处理所有特殊字符以及url中的其他非支持字符
答案 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)
<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);