ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JSP | 에러 처리 with XML
    JAVA/JSP 2020. 2. 22. 23:02

    JSP 에러 처리


    에러 처리 개요

    • JSP페이지는 에러 발생 시 웹 브라우저 전체 화면이 에러 메세지로 표시됨
    • 에러가 어떠한 경로로 발생하게 되었는지 스택을 뒤집어서 추적하는 것
    • 에러 페이지가 무시무시하기 때문에 그대로 출력하지 않고
      에러 발생시 다른 페이지를 출력함으로써 에러를 처리함

    에러 코드

    HTTP 에러 코드 에러 메세지
    200 OK, 에러 없이 전송 성공
    404 Not Found 문서를 찾을 수 없음
    요청 문서를 찾지 못한 경우 발생하는 에러
    URL을 잘 보고 주소가 올바로 입력되었는지 확인
    500 Internal Server Error, 서버 내부 오류
    웹 서버가 요청 사항을 수행할 수 없는 경우 발생
    • 404 코드는 주로 사용자가 잘못된 페이지를 요청할 때 발생
    • 500 코드는 프로그램 코딩 오류일 때 발생

    에러 처리

    • 과거에는 page 디렉티브의 errorPage 속성을 사용하여 에러를 처리했으나
      이 방법은 최근에 나온 웹 컨테이너들은 지원하지 않을 수도 있음
    • WEB-INF 폴더의 web.xml 파일에 < error-page > 엘리먼트를 사용

    에러 처리 XML Element

    엘리먼트 설명
    error-page 에러 발생시 출력할 페이지를 감싸는 상위 태그
    error-code 에러 코드를 지정하는 태그
    location 해당 에러 코드 발생 시 출력할 페이지의 상대 경로 지정

    에러 처리 JSP 코드

    <%response.setStatus(HttpServletResponse.SC_OK);%>
    • 현재 페이지가 정상적으로 응답되는 페이지임을 지정하는 코드
    • 이 코드를 생략하면 웹 브라우저는 자체적으로 제공하는 에러 화면을 표시

    예제

    WEB-INF 폴더의 web.xml 파일에서 에러를 처리하는 예제

    WEB-INF/web.xml

    환경설정 시 사용하는 xml 파일 수정

    <?xml version="1.0" encoding="UTF-8"?>
    <!-- DTD문, 표준 xml 태그를 사용하기 위해 선언 -->
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://xmlns.jcp.org/xml/ns/javaee"
        xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
        id="WebApp_ID" version="3.1">
        <display-name>JspStudy_200221</display-name>
        <!-- welcome-file-list 메인페이지 지정시 사용하는 태그 -->
        <!-- welcome-file 태그로 메인페이지 찾는 순서 지정 -->
        <welcome-file-list>
            <welcome-file>index.jsp</welcome-file>
            <welcome-file>HelloTest.java</welcome-file>
        </welcome-file-list>
    
        <!-- 에러 처리 -->
        <error-page>
            <error-code>404</error-code>
            <location>/error/404code.jsp</location>
        </error-page>
        <error-page>
            <error-code>500</error-code>
            <location>/error/500code.jsp</location>
        </error-page>
    
    </web-app>

    error/404code.jsp

    404 에러 발생 시 출력할 페이지

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%  // 현재 페이지가 정상적으로 응답되는 페이지임을 지정
        // 코드 생략 시 웹 브라우저가 자체적으로 제공하는 에러 페이지 출력
        response.setStatus(HttpServletResponse.SC_OK);
    %>
        <h1>404 에러 발생!!</h1>
        <h2>요청하신 문서를 찾지 못했습니다.</h2>
        <h3>문서의 경로를 다시 한 번 확인해주세요!</h3>

    error/500code.jsp

    500 에러 발생 시 출력할 페이지

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <meta charset="UTF-8">
    <%
        response.setStatus(HttpServletResponse.SC_OK);
    %>
        <h1>500 에러 발생!!</h1>
        <h2>요청 문서에 문법적인 에러가 있습니다!</h2>
        <h3>프로그램의 코드를 확인해 주세요!</h3>
        <h3>어떤 수를 0으로 나누면 안됩니다!</h3>

    zero.jsp

    에러 발생 페이지

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
        <!-- 문법 에러를 발생시키기 위해 9를 0으로 나눔 -->
        <%=9/0 %>
    </body>
    </html>

    결과

    zero.jsp 페이지 실행 시 출력되는 에러 페이지

     

    URI의 zero.jsp 앞에 test/ 추가 시 출력되는 에러 페이지


    JSP 페이지에서 에러를 처리하는 방법에 대해 알아보았습니다.

    JSP 페이지에 에러가 발생하면 웹 브라우저 전체 화면에 에러 메세지가 출력되기 때문에
    이를 적절한 페이지로 대체해서 출력하는 것이 필요하다고 할 수 있겠습니다.

    에러 처리는 에러 메세지 대신 출력할 페이지를 작성하고
    /WEB-INF/web.xml 소스코드 내부에서 에러 코드와 출력 페이지를 연결함으로써 이루어집니다.

    단, 출력할 JSP 페이지에 <%response.setStatus(HttpServletResponse.SC_OK)%>
    코드를 작성하지 않으면 웹 브라우저가 자체적으로 제공하는 에러 페이지가 출력된다는 것을 기억해야 하겠습니다.

    'JAVA > JSP' 카테고리의 다른 글

    JSP | XML 기초 문법 & 서블릿 설정  (0) 2020.02.22
    JSP | Session  (0) 2020.02.22
    JSP | Cookie  (0) 2020.02.22
    JSP | JavaBean Action Tag 자바빈 연동 액션 태그  (0) 2020.02.20
    JSP | JavaBean 자바빈  (0) 2020.02.20

    댓글

Designed by Tistory.