如何在JSP的href中传递两个字符串参数?结果集参数传递失败
问题:JSP中HREF无法传递结果集获取的参数
你提到在JSP的href链接里传递两个参数时,通过session.getAttribute()拿到的employee_id能正常传递,但从结果集(ResultSet)中获取的第二个参数怎么都传不到URL里。你给出的代码片段如下:
<html> <body> <table border="1" align="center" background="images\blue-wallpaper-7.jpg"> <tr> <td>PROJECT_NAME </td> <td>HEADER</td> <td>DESCRIPTION</td> <td> TASK_DATE</TD> <td>STATUS</td> </tr> <% Stri...
结合你的场景,我整理了几个最可能的原因和对应的解决方案:
1. 参数未从结果集正确提取
大概率是你在获取结果集参数时出了小问题:要么是列名拼写错了,要么是没正确调用ResultSet的get方法。比如你要拿的是project_id,但写成了projectId,或者数据库列名是大写你用了小写(部分数据库是区分大小写的)。
2. URL拼接语法错误
拼接href时很容易犯引号没闭合、变量拼接漏了加号这类小错误,导致参数根本没被拼进URL里。
3. 结果集遍历逻辑问题
如果是在循环里生成链接,可能没正确调用rs.next()迭代结果集,导致所有链接都用了同一个(甚至是空的)参数值。
修复后的示例代码
假设你要传递的第二个参数是project_id,以下是正确的写法:
<% // 从session获取employee_id String employeeId = (String) session.getAttribute("employee_id"); // 假设rs是你的ResultSet对象,已经正确执行查询 while(rs.next()){ String projectName = rs.getString("PROJECT_NAME"); String header = rs.getString("HEADER"); String description = rs.getString("DESCRIPTION"); String taskDate = rs.getString("TASK_DATE"); String status = rs.getString("STATUS"); // 关键:正确从结果集提取第二个参数,确保列名和数据库一致 String projectId = rs.getString("PROJECT_ID"); %> <tr> <td><%= projectName %></td> <td><%= header %></td> <td><%= description %></td> <td><%= taskDate %></td> <td><%= status %></td> <td> <!-- 正确拼接URL,注意引号和变量的连接 --> <a href="target-page.jsp?employee_id=<%= employeeId %>&project_id=<%= projectId %>">查看详情</a> </td> </tr> <% } // 记得关闭结果集、连接等资源 rs.close(); %>
额外注意事项
- 特殊字符编码:如果参数值包含空格、
&、=这类特殊字符,一定要用URLEncoder.encode()编码,避免URL解析失败:<a href="target-page.jsp?employee_id=<%= URLEncoder.encode(employeeId, "UTF-8") %>&project_id=<%= URLEncoder.encode(projectId, "UTF-8") %>">查看详情</a> - 调试验证:可以在页面里临时输出参数值,确认是否从结果集拿到了正确的值:
<%= "当前项目ID:" + projectId %> - 资源关闭:用完ResultSet、Statement、Connection后一定要记得关闭,避免资源泄漏。
内容的提问来源于stack exchange,提问作者Aties
相关产品推荐
相关产品推荐

