我已经制作了editbooks.jsp
页面。问题是它是在不更新表格的情况下将我重定向到admin.jsp
页面。
更明确editbooks.jsp
无效。
我的代码看起来很好,但我无法重新定位问题所在。
//editbooks.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ page import='java.io.*,java.sql.*' %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form method="post" action="editbooks.jsp">
<%
if(request.getParameter("add")!=null)
{
try
{
String id=request.getParameter("id");
String bname=request.getParameter("bname");
String author=request.getParameter("author");
String pub=request.getParameter("pub");
String price=request.getParameter("price");
String cat=request.getParameter("cat");
String qty=request.getParameter("qty");
String pic=request.getParameter("pic");
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection("jdbc:mysql://localhost/bookstore?user=root&password=admin");
String update="update books set bname=?,author=?,pub=?,price=?,cat=?,qty=?,pic=? where bid=?";
PreparedStatement ps=con.prepareStatement(update);
ps.setString(1, bname);
ps.setString(2, author);
ps.setString(3, pub);
ps.setString(4, price);
ps.setString(5, cat);
ps.setString(6, qty);
ps.setString(7, pic);
ps.setString(8, id);
ps.executeUpdate();
response.sendRedirect("admin.jsp");
}
catch(Exception e)
{
out.println(e.getMessage());
}
}
%>
<table>
<tr>
<td><label>Book Name:</label></td>
<td><input type="text" name="bname" id="bname"/></td>
</tr>
<tr>
<td><label>Author:</label></td>
<td><input type="text" name="author" id="author"/></td>
</tr>
<tr>
<td><label>Publication:</label></td>
<td><input type="text" name="pub" id="pub"/></td>
</tr>
<tr>
<td><label>Price:</label></td>
<td><input type="text" name="price" id="price"/></td>
</tr>
<tr>
<td><label>Category:</label></td>
<td><input type="text" name="cat" id="cat"/></td>
</tr>
<tr>
<td><label>Quantity:</label></td>
<td><input type="text" name="qty" id="qty"/></td>
</tr>
<tr>
<td><label>Screenshot:</label></td>
<td><input type="file" name="pic" id="pic"/></td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="add" id="add" value="Update"/></td>
</tr>
</table>
</form>
</body>
</html>
我有另一个页面“admin.jsp”,我发送了值id
<td><a href="editbooks.jsp?id=<%= id %>">Edit</a></td>
当我点击编辑时,我得到了在网址上显示正确ID的editbooks.jsp页面
例如:http://localhost:8082/bookstore/editbooks.jsp?id=4
但仍无效。
答案 0 :(得分:0)
您使用从请求参数获取的where bid=?
更新数据库:
String id=request.getParameter("id");
但是你没有发送任何名为“id”的参数。因此,不满足sql语句,也没有更新记录。
我认为您已将您的ID存储在request scope
中。如果是,那么您应该使用隐藏字段将值存储在表单中:
<input type="hidden" name="id" value="${id}" />
<强>更新强>
如果您将其作为参数发送到edit.jsp
,则需要将其分配给隐藏字段以将值存储在表单中。然后仅它将作为参数传递到下一页:
<input type="hidden" name="id" value="${param['id']}" />