我使用提交按钮使用Javascript为行获取唯一的“ID”,后者应该稍后将此id值传递给名为EditRecord的servlet。当我在表单中包含提交按钮时,按钮值(行的唯一ID)没有被传送到servlet,并且URL中没有值,但是当我在表单外面提交按钮时,我可以看到按钮值但是页面被重定向到空白页面。不知道问题出在哪里。
提前致谢。
这是javascript的代码
<script type="text/javascript">
function editRecord(id)
{
url="EditRecord";
window.location.href="http://localhost:8080/DbCon/"+url+"?id="+id;
user_id="?id="+id;
}
</script>
从表中获取记录的代码如下:
<TABLE align="Center" border="1px" width="80%">
<%Iterator itr;%>
<%List data=(List) request.getAttribute("UserData");
for(itr=data.iterator();itr.hasNext();)
{%>
<tr>
<% String s= (String) itr.next(); %>
<td><%=s %></td>
<td><%=itr.next() %></td>
<td><%=itr.next() %></td>
<td><%=itr.next() %></td>
<form action="EditRecord" method="post">
<td><input type="submit" value="Edit" name="edit" onclick="editRecord(<%=s %>);"> </td>
</form>
<td><input type="submit" value="Delete" name="delete" onclick="deleteRecord(<%=s %>);"></td>
<%} %>
</tr>
我的servlet代码如下所示
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Connection conn;
Statement stmt;
ResultSet res = null;
String id = null ;
String query;
DatabaseConnection dbconn;
// protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try{
id=request.getParameter(id);
System.out.println(id);
dbconn=new DatabaseConnection();
conn=dbconn.setConnection();
System.out.println(conn);
stmt=conn.createStatement();
System.out.println(stmt);
query="select * from user_details where User_id="+id;
res=dbconn.getResultSet(query, conn);
System.out.println(res);
}catch (Exception e)
{
}finally{
request.setAttribute("EditData", res);
RequestDispatcher rd=request.getRequestDispatcher("/editdata.jsp");
rd.forward(request, response);
out.close();
}
答案 0 :(得分:0)
您应该将包含参数名称的字符串传递给getParameter
,并传递id
变量,该变量定义为String id = null
。
您需要"id"
,而不是id
。
旁白
你有一个try / catch块,但是你没有对捕获做任何事情。如果您查看了生成的异常,您会发现调试代码要容易得多!
您正在将用户输入直接插入到某些SQL中。这使您容易受sql injection attacks攻击,并且您需要自己protect。