如何停止在Tomcat中获取错误报告

时间:2013-04-18 11:39:48

标签: jsp tomcat

我创建了一个JSP页面来测试如何连接到Oracle,我正在使用这段代码。

  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块中吗?

修改

作为一个初学者,我正在努力隐藏stackTrace,因为它也显示了我的连接字符串,用户名和密码。

现在我知道我应该从未在JSP中编写过这段代码。使用Servlet执行此任务本来是一个更好的

2 个答案:

答案 0 :(得分: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。

答案 1 :(得分:1)

我认为errorPage指令的page。例如,将它放在.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