我的问题出现在我的循环中,该循环将java中SQL查询的结果显示为HTML
我需要添加一个";添加到购物车";链接<a href='?id=id&name=name等>但问题在于,其中一个结果是该名称具有如";约翰的史密斯";。
这个单引号结束了我的href链接,而不是将其添加到链接的名称部分。
有什么建议吗?
do {
out.println("<tr><td class='col-md-1'> <a href='addcart.jsp?id="+rst.getString(1)+"&name="+rst.getString(2)+"&price="+rst.getString(4)+"'>Add to cart</a></td><td>"+rst.getString(2)+"</td><td>"+rst.getString(3)+"</td><td>"+rst.getString(4)+"</td></tr>");
} while (rst.next());
提前感谢!
处理href中任意和未知字符的最佳方法是使用URL编码,这样您使用的引号(单引号或双引号(或引号的嵌套方式就无关紧要了。
Java有一个URLEncoder类专门用于实现这一点。
通常,如果url的其余部分是已知的并且是固定的,那么您会在查询字符串中使用它。我建议构建查询字符串,对其进行url编码,并然后将其添加到您的输出中,类似于:
final String query =
"id=" + rst.getString(1) +
"&name=" + rst.getString(2) +
"&price=" + rst.getString(4);
out.println("<tr><td class='col-md-1'> <a href='addcart.jsp?" +
URLEncoder.encode(query) +
"etc. the rest");
本Java URL编码/解码指南可能会有所帮助。