如何从URL中读取参数中的HashMark

时间:2012-06-26 19:27:05

标签: java

我编写了一个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();

示例网址: HTTP?:\ testenv.com \测试的userid =塔纳

以上网址显示正确的结果,因为user ='tana'。

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

例如: HTTP?:\ testenv.com \测试的userid = LA#娜

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

感谢。

2 个答案:

答案 0 :(得分:1)

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

http://testenv.com/test?userid=la%23na

答案 1 :(得分:0)

'#'在URL中有作用,它不是常规字符。它被称为锚,它标记了所请求页面中的某个位置。锚之后的部分仅由浏览器使用,因此它不是查询字符串的一部分,并且不会发送到服务器。因此,您的服务器获取lana保留在浏览器中。

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