2010-08-13 42 views
2

我寫了一個代碼將用戶添加到數據庫中。當我們收到重複的條目時,我需要重定向到EmpInfo.jsp。我需要使用更多的例外,我也想知道如何重定向。如何接收2個或更多不同的例外?

response.setContentType("text/html"); 
    PrintWriter out = response.getWriter(); 
    Connection conn = null; 
    String url = "jdbc:mysql://localhost:3306/"; 
    String dbName = "cervlet"; 
    String driver = "com.mysql.jdbc.Driver"; 
    String userName = "root"; 
String password = "1234"; 
int Empid =Integer.parseInt(request.getParameter("Empid").toString()); 
String Name = request.getParameter("Name").toString(); 
int Age =Integer.parseInt(request.getParameter("Age").toString()); 
int Salary =Integer.parseInt(request.getParameter("Salary").toString()); 
PreparedStatement stmt; 
try { 
Class.forName(driver).newInstance(); 
conn = DriverManager.getConnection(url+dbName,userName,password); 
System.out.println("Connected to the database"); 
//ArrayList al=null; 
//ArrayList userList =new ArrayList(); 
String query = "insert into employee set Empid='"+Empid+"',name='"+Name+"',Age='"+Age+"',Salary='"+Salary+"'"; 
stmt = (PreparedStatement) conn.prepareStatement(query); 
    int i = 0; 
try { 
    i = stmt.executeUpdate(query); 
    } 
    catch (SQLException e) { 
    String nextj = "/AddUser.jsp"; 
    RequestDispatcher rd = getServletContext().getRequestDispatcher(nextj); 
    rd.forward(request, response); 
    } 
    System.out.println("i="+i); 
System.out.println("query: " + query); 
//if(i==0) 
//{ 
    //String nextj = "/EmpInfo.jsp"; 
    //RequestDispatcher cd = getServletContext().getRequestDispatcher(nextj); 
    //cd.forward(request, response); 
//response.sendRedirect("servletRecord"); 
//} 
response.sendRedirect("/EmpInfo.jsp"); 
conn.close(); 
System.out.println("Disconnected from database"); 

} catch (Exception e) { 
e.printStackTrace(); 

更新

我需要重定向到EmpInfo.jsp,當它增加了一個新的條目。 執行方法executeUpadte()後,我使用其返回的 值重定向到另一頁,名爲EmpInfo.jsp。 但它不重定向。我正在使用eclipse。告訴我多種重定向.jsp頁面的常用方法。

+0

與問題無關:因IllegalStateException異常導致轉發/重定向失敗,因爲您已更改了響應頭並在代碼的開頭獲得了響應寫入器。不要這樣做。在這種特殊情況下絕對沒有必要這樣做。刪除這些線。另外,您應該避免使用'PreparedStatement'進行SQL注入,並在'finally'中關閉JDBC資源。 – BalusC 2010-08-13 20:36:08

+0

你應該詢問另一個問題的重定向。 – jjnguy 2010-08-14 02:29:57

+0

您是否閱讀過我在問題更新前2小時發佈的評論? :) – BalusC 2010-08-14 03:25:03

回答

9

好吧,如果你問如何捕捉不同的異常下面的代碼是你怎麼做:

try { 
    ... 
    // Code that may throw a few types of exceptions 
    ... 
} catch(FileNotFoundException fnfe) { 
    // handle very specific exceptions 
} catch (IOException ioe) { 
    // handle less specific exceptions 
} catch (Exception e) { 
    // handle the most generic exception case 
} 

這將允許你在一個代碼塊處理多種異常。

2

處理多個異常已被回答。

關於重定向到其他頁面:您可以使用(因爲您已經使用)轉發方法(如果其他頁面在同一個域中)和sendRedirect方法(其他頁面可以在其他域中)。但是你需要注意,沒有任何東西寫入瀏覽器,否則在轉發/重定向時你會遇到異常。

你的情況,你已經寫入瀏覽器在這些語句的形式:

response.setContentType("text/html"); 
    PrintWriter out = response.getWriter(); 

看你的代碼,看來你甚至不需要這些語句,正如你應該轉發到任何情況下,其他頁面。

注意:您正在一個地方使用forward並在一個地方使用sendRedirect。希望你知道這些之間的差異。在我看來,你需要在兩個地方都使用forward方法。

相關問題