“这里是插入数据后的代码,它不能转发索引页面请帮帮我...... 之后我也无法获取数据...... “ “
public class insertData extends HttpServlet {
String query;
static Connection conn;
//Statement st;
PreparedStatement pst;
ResultSet res;
ConnectionManager dbconn;
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
try (PrintWriter out = response.getWriter()) {
dbconn= new ConnectionManager();
String id=request.getParameter("id");
String fname=request.getParameter("fname");
String lname=request.getParameter("lname");
String pass=request.getParameter("pass");
String mobile=request.getParameter("mbl");
String email=request.getParameter("email");
conn=dbconn.getConnection();
//pst=conn.createStatement();
pst=conn.prepareStatement ("INSERT INTO reg(`id`, `fname`, `lname`, `pass`, `mbl`, `email`) VALUES (?,?,?,?,?,?)");
// query="insert into reg(id('"+id+"','"+fname+"','"+lname+"','"+pass+"','"+mobile+"','"+email+"')";
pst.setString(1, id);
pst.setString(2, fname);
pst.setString(3, lname);
pst.setString(4, pass);
pst.setString(5, mobile);
pst.setString(6,email);
int i=pst.executeUpdate();
}
catch(Exception e)
{
//System.out.println("Exception"+e.getMessage());
request.setAttribute("Error",e);
RequestDispatcher rd=request.getRequestDispatcher("/error.jsp");
rd.forward(request, response);
}
finally
{
RequestDispatcher rd=request.getRequestDispatcher("/index.jsp");
rd.forward(request, response);
}
}
所以......我怎么能解决这个问题,请帮助我......提前感谢您的帮助
答案 0 :(得分:1)
当按照上述代码发生异常时,它会使用RequestDispatcher
将请求转发给error.jsp。一旦发生这种情况,您的请求即被提交,现在您无法再使用。
但是你有一个finally
块 - 会被执行,无论try块是成功还是抛出异常。你再次尝试获得RequestDispatcher
在那里转发到index.jsp,从而得到上述错误。
不确定您的确切用例,但感觉您可以重定向到index.jsp
作为Try
阻止自身的最后一步。并完全删除finally块。
还有一点要注意的是,不建议在Servlet
本身编写与JDBC / DB相关的代码,您可以为此创建一个单独的DAO
类,它将带来更好的抽象和模块化。