2016-01-11 33 views
0

「這裏是代碼插入數據後,它不能轉發索引頁請幫助我..... 之後,我無法取數據也... 「 ‘插入數據後無法轉發響應已提交

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

嘗試在'try'塊末尾關閉'out'作爲'out.close()'。 – Parth

+0

謝謝對於響應,但仍然.getting this ....警告:StandardWrapperValve [insertData]:Servlet.service()爲servlet插入數據拋出異常 java.lang.IllegalStateException:無法轉發響應後已提交 \t at org.apache .catalina.core.ApplicationDispatcher.doDispatch(ApplicationDispatcher.java:448) \t在org.apache.catalina.core.ApplicationDispatcher.dispatch(ApplicationDispatcher.java:428) \t在org.apache.catalina.core.ApplicationDispatcher.forward (ApplicationDispatcher.java:378) \t at insertData.processRequest(insertData.java:66) \t at insertData.doGet(insertData.java:84) –

+0

正面臨任何錯誤?如果是這樣,請發佈堆棧跟蹤 – Parth

回答

0

當有異常情況發生按照上面的代碼它會轉發請求將RequestDispatcher用於error.jsp。一旦發生這種情況,您的請求已承諾,現在您無法對其執行任何操作

但是你有一個finally塊 - 無論事實try塊是成功還是拋出異常,它都會被執行。您再次嘗試獲取RequestDispatcher,並轉發到index.jsp,從而得到上述錯誤。

不確定您的確切用例,但覺得您可以重定向到index.jsp作爲Try塊的最後一步,並完全刪除finally塊。

還有一點需要注意的是,不建議在Servlet本身中編寫與JDBC/DB相關的代碼,您可以爲此創建一個單獨的DAO類,並且這將導致更好的抽象和模塊化。

+1

非常感謝這個有用的信息...... –

相關問題