2011-08-25 73 views
0

我想处理在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> 

如何处理需要通过的所有这些特殊字符?

回答

0

见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);

0

JSTL core taglib看看:

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

在Java中,你应该每个URL参数编码与java.net.URLEncoder

在JSP中,你不应该使用scriptlets。使用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> 
0
String userName="abc&def>ghi<j#kl"; 
String[] strArr = userName.split("[&$#<>]+"); 
userName = ""; 
for (String str : strArr){ 
    userName += str; 
} 
System.out.println(userName);