[英]How to pass a radio button value of a table from one jsp to another
我有2个JSP页面i.adminhome.jsp ii.deletecontroller.jsp
adminhome.jsp显示客户端表
我希望管理员根据需要从客户端表中删除特定行。 所以我需要使用一个单选按钮从客户端表中选择clientid,然后按“删除”按钮删除该选定行
但是由于无法将所选的clientid值作为会话变量传递给deletecontroller页面,因此无法获得所需的输出。 因此,我得到空值。
这是2页的代码
1. adminhome.jsp
<%
try
{
Connection conn=null;
Statement stmt=null;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn=DriverManager.getConnection("jdbc:odbc:xyz","sa","pass");
stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("Select UserID,Username,Location,Gender,EmailID from Client");
while(rs.next()){%>
<table border="1" align="center" >
<tr>
<td><input name="district" type="radio" value="<%=rs.getString("UserID") %>" required="true"/></td>
<td><%=rs.getString("Username") %></td>
<td><%=rs.getString("Location") %></td>
<td><%=rs.getString("Gender") %></td>
<td><%=rs.getString("EmailID") %></td>
<%
String x = request.getParameter("district");
session.setAttribute("userid", x);
%>
<td><input type="submit" name="btn1" value="Delete"></td>
</tr>
</table>
</div>
<br/><br/>
<%}
}
catch(Exception e){e.printStackTrace();}
%></form>
2.删除控制器.jsp
<%@ page import="java.util.*" %>
<%@ page language="java" import="java.sql.*" errorPage="" %>
<%
String x=session.getAttribute( "userid" ).toString();
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection("jdbc:odbc:xyz;","sa","pass");
Statement stmt=null;
stmt = con.createStatement();
String del="Delete from Client where UserID='"+x+"' ";
stmt.executeUpdate(del);
response.sendRedirect("index.jsp");
%>
让我们来看一下代码的作用
<td><input name="district" type="radio" value="<%=rs.getString("UserID") %>" required="true"/></td>
...
<%
String x = request.getParameter("district");
session.setAttribute("userid", x);
%>
您正在输出带有表单域的HTML表单。 同时,您正在从请求中读取分区并将其保存到会话中。 由于区不在请求中,因此您正在读取NULL,并将NULL保存在会话中。 您现在输出表单时,请求中的情况如何? 在您将表单输出给用户之前,用户无法提交表单,可以吗?
然后,当您提交表单时,在servlet中,您正在从会话中读取:
String x=session.getAttribute( "userid" ).toString();
您正在读取构建表单时保存到会话中的NULL。 您没有在阅读用户实际提交的表单。
你应该怎么做? 从servlet中的请求中读取:
String x = request.getParameter("district");
当用户提交表单时,将生成带有参数区的请求,因此该请求将被发送到servlet,您应该从那里读取请求。
或者,另一种方法是从rs.getString("UserID")
保存到会话:
<%
session.setAttribute("userid", rs.getString("UserID"));
%>
那可能就是您想要的,因为UserID可能应该是会话范围而不是请求,并且您不希望用户更改表单中的userid并进行操作。 然后,您仍然可以从Servlet中的会话中读取信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.