-1

我创建了一个 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 来完成这项任务会更好

4

2 回答 2

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。

于 2013-04-18T11:47:54.030 回答
1

我认为errorPagepage指令。例如,将其放在 .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>

...启用它。

有关更多信息,请查看本文中的详细信息和完整示例:JSP 页面中的异常处理

于 2013-04-18T11:49:27.447 回答