在一个页面上,我从我的数据库中显示了一个表,用户选择了一个部门。根据该选项,下一页将显示该部门内的项目。有没有办法可以将部门ID从第1页传递到第2页的SQL查询,以便只显示该部门的项目?
我唯一知道的是使用
打印页面上的部门编号 <%=session.getAttribute("deptid")>;
第一页:
<table>
<tr>
<td>Select Department</td>
<td><select name="deptid">
<option value="select">select</option>
<%
while(rs.next()){
String deptid= rs.getString("deptid");
%>
<option value=<%=deptid%>><%=deptid%></option>
<%
}
}catch(SQLException sqe){
out.println("showcourses"+sqe);
}
%>
</select></td>
</tr>
</table>
这是一个连接器JSP页面
String sql = "select * from courses where deptid=?";
String deptid= request.getParameter("deptid");
if(!(deptid.equalsIgnoreCase("select"))){
try{
Class.forName(driverName);
con = DriverManager.getConnection(url, user, dbpsw);
ps = con.prepareStatement(sql);
ps.setString(1, majorid);
rs = ps.executeQuery();
if(rs.next()){
userdeptid = rs.getString("deptid");
System.out.println(userdeptid );
if(deptid.equals(userdeptid )){
session.setAttribute("deptid",userdeptid);
response.sendRedirect("showitems.jsp");
}
}else
response.sendRedirect("error.jsp");
rs.close();
ps.close();
} catch(SQLException sqe){
out.println(sqe);
}
}
%GT;
答案 0 :(得分:0)
将所有内容包裹在<form>
元素中还添加提交按钮(我将name
的{{1}}更改为select
以避免混淆:
selected_dept_id
您可以<form action="second_page.jsp" method="get">
<table>
<tr>
<td>Select Department</td>
<td><select name="selected_dept_id">
<option value="select">select</option>
<%
while(rs.next()){
String deptid= rs.getString("deptid");
%>
<option value=<%=deptid%>><%=deptid%></option>
<%
}
}catch(SQLException sqe){
out.println("showcourses"+sqe);
}
%>
</select></td>
</tr>
</table>
<input type="submit" value="Show Items" />
</form>
querying request parameters之前的second_page.jsp
获取所选部门:
reqeust.getParameter("selected_dept_id");
另外,将用户输入发送到数据库时要小心。它可以用于SQL注入攻击。请参阅Preventing SQL Injection in Java上的这篇文章。