JSP Error Handling and Debugging


JSP 에러 처리 및 디버깅 (JSP Error Handling and Debugging)

JSP 에러 페이지 설정 (Setting Up JSP Error Pages)

JSP 페이지에서 발생하는 에러를 사용자가 이해할 수 있는 형태로 보여주기 위해 에러 페이지를 설정할 수 있습니다. 이를 통해 특정 에러가 발생했을 때 사용자에게 친절한 메시지를 제공하고, 애플리케이션의 안정성을 향상시킬 수 있습니다.

예제: web.xml 설정

<web-app>
    <!-- 에러 페이지 설정 -->
    <error-page>
        <error-code>404</error-code>
        <location>/error404.jsp</location>
    </error-page>
    <error-page>
        <error-code>500</error-code>
        <location>/error500.jsp</location>
    </error-page>
    <error-page>
        <exception-type>java.lang.Throwable</exception-type>
        <location>/error.jsp</location>
    </error-page>
</web-app>

위의 설정은 404, 500 에러 및 모든 예외에 대해 각각의 에러 페이지로 리디렉션합니다.

예제: error404.jsp

<%@ page isErrorPage="true" %>
<html>
<head>
    <title>404 - Page Not Found</title>
</head>
<body>
    <h1>404 - 페이지를 찾을 수 없습니다.</h1>
    <p>요청하신 페이지가 존재하지 않습니다.</p>
</body>
</html>

예제: error500.jsp

<%@ page isErrorPage="true" %>
<html>
<head>
    <title>500 - Internal Server Error</title>
</head>
<body>
    <h1>500 - 서버 내부 오류</h1>
    <p>서버에서 요청을 처리하는 도중 오류가 발생했습니다.</p>
</body>
</html>

예제: error.jsp

<%@ page isErrorPage="true" %>
<html>
<head>
    <title>오류 발생</title>
</head>
<body>
    <h1>오류가 발생했습니다.</h1>
    <p>오류 메시지: ${exception.message}</p>
    <pre><%= exception.printStackTrace(new java.io.PrintWriter(out)) %></pre>
</body>
</html>

예외 처리 (Exception Handling)

JSP에서는 try-catch 블록을 사용하여 예외를 처리할 수 있습니다. 이를 통해 특정 코드 블록에서 발생할 수 있는 예외를 처리하고, 사용자에게 적절한 피드백을 제공할 수 있습니다.

예제: try-catch 블록 사용

<%@ page import="java.io.*, java.sql.*" %>
<%
    try {
        // 파일 읽기 예제
        FileReader reader = new FileReader("somefile.txt");
        BufferedReader br = new BufferedReader(reader);
        String line;
        while ((line = br.readLine()) != null) {
            out.println(line + "<br>");
        }
        br.close();
    } catch (FileNotFoundException e) {
        out.println("파일을 찾을 수 없습니다: " + e.getMessage());
    } catch (IOException e) {
        out.println("파일을 읽는 도중 오류가 발생했습니다: " + e.getMessage());
    }
%>

위의 예제에서는 파일 읽기 도중 발생할 수 있는 FileNotFoundExceptionIOException을 처리하고, 각각의 경우에 적절한 메시지를 출력합니다.

로그 작성 (Logging)

애플리케이션의 디버깅과 문제 해결을 위해 로그를 작성하는 것이 중요합니다. JSP에서는 java.util.logging 패키지를 사용하거나, Log4j, SLF4J와 같은 외부 로깅 프레임워크를 사용할 수 있습니다.

예제: java.util.logging 사용

import java.util.logging.Logger;
import java.util.logging.Level;

// Logger 인스턴스 생성
Logger logger = Logger.getLogger("MyLogger");

try {
    // 예제 코드
    int result = 10 / 0;
} catch (ArithmeticException e) {
    // 로그 기록
    logger.log(Level.SEVERE, "ArithmeticException 발생: " + e.getMessage());
}

예제: Log4j 사용

Log4j를 사용하기 위해서는 Log4j 라이브러리를 추가하고, 설정 파일을 작성해야 합니다.

log4j.properties 설정

log4j.rootLogger=DEBUG, file, console

# ConsoleAppender 설정
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

# FileAppender 설정
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=logs/app.log
log4j.appender.file.MaxFileSize=1MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

JSP에서 Log4j 사용

<%@ page import="org.apache.log4j.Logger" %>
<%
    Logger logger = Logger.getLogger("MyLogger");

    try {
        // 예제 코드
        int result = 10 / 0;
    } catch (ArithmeticException e) {
        // 로그 기록
        logger.error("ArithmeticException 발생: " + e.getMessage(), e);
    }
%>

위의 예제는 Log4j를 사용하여 ArithmeticException이 발생했을 때 로그를 기록하는 방법을 보여줍니다. 로그는 콘솔과 파일에 출력됩니다.

이로써 JSP에서 에러를 처리하고 디버깅하는 방법을 상세히 설명했습니다. 에러 페이지 설정, 예외 처리, 로그 작성을 통해 애플리케이션의 안정성과 유지 보수성을 높일 수 있습니다.


Leave a Reply

Your email address will not be published. Required fields are marked *