我有一個應該從我的數據庫中刪除記錄的servlet。 我從一個帶有刪除按鈕的jsp頁面中獲取選定的行,並使用javascript。 問題是,tomcat顯示HTTP狀態405 - 此方法不支持HTTP方法GET,頁上:http://localhost:8084/DeleteRecord?i=35
(35是選定的行將被刪除)。Servlet無法刪除數據庫中的記錄
這裏是我的Servlet:
package package_ergasia;
import java.sql.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.ArrayList;
public class DeleteRecord extends HttpServlet
{
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
response.setContentType("text/html");
Connection connection= null;
String url = "jdbc:mysql://localhost:3306/";
String dbName = "ergasia";
String user = "root";
String password = "password";
PreparedStatement deleteProtein = null;
ResultSet resultSet = null;
ArrayList al = null;
PrintWriter out = response.getWriter();
int i;
try {
connection = DriverManager.getConnection(url + dbName, user, password);
i = Integer.parseInt(request.getParameter("i"));
deleteProtein = connection.prepareStatement("DELETE FROM protein WHERE i = '"+i+"'");
resultSet = deleteProtein.executeQuery();
RequestDispatcher view = request.getRequestDispatcher("http://localhost:8084/secured/all_proteins.jsp");
view.forward(request, response);
}
catch(Exception e){
e.printStackTrace();
System.out.println("Error!");
}
}
@Override
public String getServletInfo() {
return "info";
}
}
,並在用戶選擇刪除記錄的all_proteins.jsp:
<%@ page language="java" import="java.sql.*,java.util.* "%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<link rel="stylesheet" type="text/css" href="../CSS/mystyle.css">
<title>Database management</title>
</head>
<body class="menu">
<h1>Welcome to KSPO Database, the Database of Porins with known 3D Structure</h1>
<script type="text/javascript">
function deleteRecord(i){
url = "DeleteRecord";
window.location.href = "http://localhost:8084/"+url+"?i="+i;
}
function editRecord(i){
url = "EditRecord";
window.location.href = "http://localhost:8084/"+url+"?i="+i;
}
</script>
<table border="1">
<%
int count = 0;
int i=-1;
if (request.getAttribute("protein_data") != null) {
ArrayList al1 = (ArrayList) request.getAttribute("protein_data");
request.getAttribute("protein_data");
Iterator itr = al1.iterator();
while (itr.hasNext()) {
count++;
i++;
ArrayList pList = (ArrayList) itr.next();
%>
<tr>
<td><%=pList.get(0)%></td>
<td><%=pList.get(1)%></td>
<td><%=pList.get(2)%></td>
<td><%=pList.get(3)%></td>
<td><input type="submit" value="Edit" name="edit" onclick="editRecord(<%=pList.get(4)%>);"></td>
<td><input type="submit" value="Delete" name="delete" onclick="deleteRecord(<%=pList.get(4)%>);"></td>
</tr>
<%
}
}
%>
</table>
</body>
</html>
任何想法?
http://www.unixwiz.net/techtips/sql-injection.html – BalusC