我的JSP中有一个查询字符串:
href='www.me-me.com/index.jsp?application=<%=
myBean.getApplication().replace("&","\\")
%>&appId=<%=
myBean.getAppId()
%>'>LINK
现在我正在使用appID
中的index.jsp
使用请求对象,并使用appId
我从数据库中提取数据以填充页面。
但是当myBean.getApplication
返回Application ##1
之类的内容时,我的屏幕显示为空白,当然因为查询在遇到"#"
后遭到攻击。
我可以使用"#"
方法替换replace()
,但我发现它不可靠和良好,因为我在index.jsp
页面中再次使用请求对象提取该应用程序名称而且更换哈希会让它变得丑陋。那么有没有办法保留"#"
?
任何其他开箱即用的解决方案都将受到赞赏。
答案 0 :(得分:3)
<c:url var="url" value="http://www.me-me.com/index.jsp">
<c:param name="application" value="${myBean.application}" />
<c:param name="appId" value="${myBean.appId}" />
</c:url>
<a href="${url}">LINK</a>
无需为旧式 scriptlet 烦恼。
答案 1 :(得分:0)
对值进行URL编码是正确的做法。
href='www.me-me.com/index.jsp?application=<%=
URLEncoder.encode(myBean.getApplication(), "UTF-8")
%>&appId=<%=
URLEncoder.encode(myBean.getAppId(), "UTF-8")
%>'>LINK
您可以将任何字符串值作为网址参数传输,但必须对其进行正确编码,否则您的网址会中断,就像您遇到的那样。
你需要一个
<%@ page import="java.net.*" %>
页面中的语句,因为这是定义URLEncoder
的位置。