Ниже приведен отчет, как бы исправить это. Я попытался вернуть requestdispatcher на doPost. . Может ли кто-нибудь объяснить, что происходит. Я просто вставляю параметры в базе данных, что не так с моим кодом? благодаряHTTP-статус 500 - не может переадресоваться после того, как ответ был зафиксирован. TOMCAT 7.55
type Exception report
message Cannot forward after response has been committed
description The server encountered an internal error that prevented it from fulfilling this request.
exception
java.lang.IllegalStateException: Cannot forward after response has been committed
EventHandler.InsertEvent.doPost(InsertEvent.java:75)
javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
сервлет
package EventHandler;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/AddEvent")
public class InsertEvent extends HttpServlet {
String title,description, founder, time, date, location, payment;
int price = 0;
int bank = 0;
String query;
Connection conn;
Statement stmt;
ResultSet rs;
DatabaseConnection dbconn;
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
try{
title = request.getParameter("title");
description = request.getParameter("description");
founder = request.getParameter("founder");
time = request.getParameter("time");
date = request.getParameter("date");
location = request.getParameter("location");
payment = request.getParameter("payment");
price = Integer.parseInt(request.getParameter("price"));
bank = Integer.parseInt(request.getParameter("bank"));
System.out.println(title);
System.out.println(description);
System.out.println(founder);
System.out.println(time);
System.out.println(date);
System.out.println(location);
System.out.println(payment);
System.out.println(price);
System.out.println(bank);
conn = dbconn.setConnection();
stmt = conn.createStatement();
query = "insert into event_list values('"+title+"','"+description+"','"+founder+"','"+time+"','"+date+"','"+location+"','"+payment+"',"+price+","+bank+")";
int i = stmt.executeUpdate(query);
}catch(Exception e){
request.setAttribute("Error", e);
RequestDispatcher rd = request.getRequestDispatcher("error.jsp");
rd.forward(request, response);
}finally{
RequestDispatcher rd = request.getRequestDispatcher("CreateEvent.jsp");
rd.forward(request, response);
}
}
}
DBConnection
package EventHandler;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class DatabaseConnection {
Connection conn;
Statement stmt;
ResultSet rs;
String url = "jdbc:mysql://localhost:3306/form";
String driver = "com.mysql.jdbc.Driver";
String userName = "root";
String password = "Incorrect00!";
public DatabaseConnection(){
}
public Connection setConnection(){
try{
Class.forName(driver);
conn = DriverManager.getConnection(url, userName, password);
}catch(Exception e){
}
return conn;
}
public ResultSet getResult(String sql, Connection conn){
this.conn = conn;
try{
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
}catch (Exception e){
}
return rs;
}
}
JSP
<html>
<head>
<title>Create An event</title>
<script src="js/jquery.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/bootstrap-datetimepicker.min.js"></script>
<script src="js/CreateEvent.js"></script>
<link href="css/bootstrap.css" rel="stylesheet" type="text/css"/>
<link href="css/bootstrap-datetimepicker.min.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<form method="post" action="AddEvent" >
<br>
Title: <input type="text" name="title" ><br><br>
Event Founder: <input type="text" name="founder" ><br><br>
Description: <textarea name="description" ></textarea><br><br>
Time:
<input type='text' class="form-control" name="time" />
Day:
<input type='text' class="form-control" data-date-format="YYYY/MM/DD" name="date"/>
Where: <input type="text" name="location"> <br>
Include Payment? <br>
<input type="radio" name="payment" id="showprice" value="yes">Yes<br>
<input type="radio" name="payment" value="no">No<br>
<div id="price">
Price: <input type="text" value="0" name="price">
<br>
Bank Account Number : <input type="text" name="bank" value="0">
</div>
<input type="submit" value="Finish" class="btn btn-success"/>
</form>
<a href="/EventPlannerV3">Show List</a>
</body>
</html>
Не относится к вашему вопросу, а относится к опасному стилю, который вы используете для своего кода. Читайте о SQL-инъекции, затем используйте 'prepareStatement' и предоставляйте отдельные параметры, а не конкатенацию содержимого, которое вы читаете из запроса. Затем прочитайте о Little Bobby Tables здесь: http://xkcd.com/327/ –