0

我编写了一个 Java Servlet,它查询数据库并将结果返回给 JSP。我正在根据从 URL 传递的参数执行 SQL 语句

//Reading Parameter
String User = request.getParameter("userid");

//Executing the SQL
String sqluser = "SELECT 1  FROM <table name> WHERE username = ?

pstmt = con.prepareStatement(sqluser);
pstmt.setString(1, User);
rset = pstmt.executeQuery();

示例 URL:http:\testenv.com\test?userid=tana

上面的 URL 显示正确的结果,因为 user='tana'。

但是有些用户的用户名中带有“#”。

例如:http:\testenv.com\test?userid=la#na

SQL 语句不返回任何值,因为在上述情况下 User= 'la' 即使 URL 具有“la#na”。我可以使用 getParameter 获取值“la#na”吗?如果是这样,我需要做什么?

谢谢。

4

2 回答 2

1

哈希字符需要正确编码,因为它通常用作内部链接。

http://testenv.com/test?userid=la%23na
于 2012-06-26T19:35:00.890 回答
0

'#' 在 URL 中有一个角色,它不是一个常规字符。它被称为锚点,它在请求的页面中标记了某个位置。锚点之后的部分只供浏览器使用,因此它不是查询字符串的一部分,也不会发送到服务器。所以你的服务器得到la, 并且na停留在浏览器上。

如果您可以控制发送的 URL,请将其编码。否则,你无能为力。

于 2012-06-26T19:39:20.307 回答