2013-04-18 42 views
-1

我創建了一個JSP頁面來測試如何連接到Oracle,我正在使用此代碼。如何停止在Tomcat中獲取錯誤報告

String CONN_STRING = "jdbc:oracle:thin:@localhost:1521:orcl"; 

    try { 
     Class.forName("oracle.jdbc.driver.OracleDriver"); 
    } catch (ClassNotFoundException e) { 
     e.printStackTrace(); 
    } 
    Connection conn = DriverManager.getConnection(CONN_STRING, 
      "UMS", "d0801213177"); 

當有事情發生,比如Oracle正在初始化或TNS拒絕採取更多的連接或數據庫的密碼被更改的話,我得到一個錯誤報告時,我打開我的網頁。其中顯示總連接字符串。如果用戶在使用此頁面時發生這種情況,那麼我的安全性就會丟失。

所以,我的問題是有沒有什麼辦法可以阻止Tomcat的形式報告錯誤「如果有什麼更好的方法,那麼請告訴

跟進?。如果我使用一個預處理語句,如表錯誤/視圖不存在這些類型的錯誤是如此普遍,我需要把每塊單獨的try catch塊?

編輯

作爲beginer,我掙扎着隱藏的堆棧跟蹤因爲它顯示了我的合作連接字符串,用戶名,密碼。

現在我知道我應該從來沒有在JSP中寫過這段代碼。使用Servlet來完成這個任務本來就是一個更好的選擇

回答

2

JSP爲您提供了一個選項,爲每個JSP指定錯誤頁面。只要頁面引發異常,JSP容器就會自動調用錯誤頁面。

<%@ page language="java" errorPage="" %> 
<html> 
<head> 
<title>Error Handling by try catch block in JSP</title> 
</head> 

<body> 
<% 
try{ 
    String CONN_STRING = "jdbc:oracle:thin:@localhost:1521:orcl"; 

    try { 
     Class.forName("oracle.jdbc.driver.OracleDriver"); 
    } catch (ClassNotFoundException e) { 
     e.printStackTrace(); 
    } 
    Connection conn = DriverManager.getConnection(CONN_STRING, 
     "UMS", "d0801213177"); 
} 
catch(Exception e) 
{ 
    e.printStackTrace(); 
    out.print("Error caught by Catch block is : "+e.getMessage()); 
} 
%> 
</body> 
</html> 

最好你做的業務邏輯一個servlet內使用的RequestDispatcher到一個jsp重定向它。

+0

所以我需要把整個代碼放在另一個try..catch塊內? – NewUser

1

我認爲page指令的errorPage。舉例來說,把這個在您的.jsp頁面的頂部:

<%@ page errorPage="ExceptionHandler.jsp" %> 

當用戶通過ExceptionHandler.jsp頁面,這將能夠處理它得到一個例外,它會「中招」。

ExceptionHandler.jsp頁面會是這樣的:

<%@ page isErrorPage="true" import="java.io.*" %> 
<html> 
<head> 
    <title>Exceptional Even Occurred!</title> 
    <style> 
    body, p { font-family:Tahoma; font-size:10pt; padding-left:30; } 
    pre { font-size:8pt; } 
    </style> 
</head> 
    <body> 
    <%-- Exception Handler --%> 
    <font color="red"> 
     <%= exception.toString() %><br> 
    </font> 
    <% 
     out.println("<!--"); 
     StringWriter sw = new StringWriter(); 
     PrintWriter pw = new PrintWriter(sw); 
     exception.printStackTrace(pw); 
     out.print(sw); 
     sw.close(); 
     pw.close(); 
     out.println("-->"); 
    %> 
    </body> 
</html> 

...來啓用。

欲瞭解更多信息,請查看本文中的詳細信息和完整示例:Exception Handling in JSP Pages