jsp16

제로·2022년 12월 6일
0

JSP

목록 보기
15/30

jsp에서 에러 처리

  1. 개발을 하면 프로그램적인 에러가 발생할 수 있다. 자바 프로그램에서는 이러한 에러가 발생되면 에러 처리로 해당 에러에 대한 내용의 원인을 출력해주고 에러가 발생하더라도 정상적으로 프로세스가 흘러가게 해준다
  2. jsp는 화면단이 추가되기에 에러 발생시, 화면을 어떻게 처리할지를 생각해야한다.
  3. jsp 에러 발생시 화면 출력하는 방식 2가지
    1) 에러 페이지를 만들고, 각 페이지마다 페이지 지시자로 에러가 발생했을 때 출력할 jsp 페이지를 지정해서 처리하는 것
    2) web.xml에 여러 페이지를 지저하여, 서버 단위로 발생하는 모든 에러에 대해 지정한 페이지를 로딩하게 하는 것
    ** 세부적인 설정이 더 우선순위로 처리된다.(web.xml을 통해 전체에러 설정한 것 보다 페이지마다 페이지 지시자로 에러처리한 것이 더 우선 순위)
  4. 서버 단위 에러 처리 방식
    web.xml을 통해 서버에서 처리되는 모든 예외를 대신할 페이지를 처리할 수 있는데 2가지 상황에 따른 예외를 처리한다.
    1) web 반응 코드에 의한 에러 처리화면 로딩
    2) 예외 클래스에 의한 에러 처리화면 로딩

에러 페이지 지정 처리

  1. 에러발생시 나타낼 페이지 구현
    1) 지시자 선언
    <%@page isErrorPage = "true" %>
    이 페이지는 에러 처리를 위한 페이지임을 나타낸다
    이렇게 속성값을 지정하면, 예외의 기본 객체인 참조변수 exception을 처리할 수 있다.
    ex) <%=exception.getMessage()%>
    ex) <%=exception.printStackTrace()%>
  2. 에러가 발생할 가능성이 있는 페이지 구현
    1) 페이지별로 에러 발생시, 에러 페이지 지정
    2) 페이지 지시자 선언
    <%@ page errorPage = "만들어둔 에러페이지 지정" %>

서버단위에러 처리

  1. 서버의 설정페이지 web.xml에서 응답코드(http)별로 에러페이지를 지정할 수 있다.
    <error-page>
    <error-code>응답코드</error-code>
    <location>에러페이지uri</location>
    webapp 기준으로 하위에 특정한 경로에 에러페이지를 지정하여 처리

    ps) 응답코드
    200 : 요청이 성공적으로 처리
    301 : 요청한 자원이 이동, 헤더 정보에 이동 위치를 알려줄테니 다시 요청
    304 : 클라이언트가 임시 보관한 응답결과와 다르지 않다
    400 : 잘못된 요청
    401 : 인증 오류
    403 : 사용자 허가 모드 오류
    404 : 요청한 자원을 못찾음
    405 : 요청한 method 지원하지 않음
    500 : 서버 내부에서 오류가 발생 - 프로그램적 오류(java 클래스 예외 등)

  2. 서버의 설정페이지 web.xml에 예외 클래스별로 애러 페이지도 지정할 수 있다.
    <error-page>
    <exception-type>java-lang.XXXXException</exception-type>
    <location>경로지정</location>
  3. 처리순서
    1) webapp 기준으로 특정한 위치에 에러를 나타낼 화면을 구현한다.
    2) 응답코드 또는 예외 클래스 별로 에러 처리화면의 jsp를 만들고 경로와 파일명을
    기준으로 서버단위(web.xml)로 처리한다.
    3) 서버를 리스타트 후, 테스트 코드를 통해서 에러 처리를 확인한다.
    ## 에러페이지 지정 처리
    <%@ page language="java" contentType="text/html; charset=UTF-8"
       pageEncoding="UTF-8"
       errorPage = "z01_errorPage.jsp"%>
       // 상단에 에러 발생시 나타낼 페이지 지정
         <%
       String name=null; name.toString();
       // 객체를 생성하지 않고 메서드 활용, NullPointerException 발생
       request.setCharacterEncoding("utf-8");
       %>
       
    ## z01_errorPage.jsp 
    <%@ page language="java" contentType="text/html; charset=UTF-8"
       pageEncoding="UTF-8"
    	isErrorPage = "true"%>
       // 상단에 에러 발생시 나타나는 페이지임을 선언
       
    <body style="background-image:url('img01.jpg');">
    	<h2>에러가 발생했습니다.</h2>
    	<%if(exception!=null){ %>
    	<table>
    		<tr><td>에러타입:<%=exception.getClass().getName() %></td></tr>
    		<tr><td>에러타입:<%=exception.getMessage() %></td></tr>
    		<tr><td>불편을 끼쳐드려 죄송합니다.</td></tr>
    		<tr><td>잠시만 기다리시면 조속히 처리하도록 하겠습니다.</td></tr>
    		<tr><td>담당자 : 홍길동 사원(010-0000-0000)</td></tr>
    	
    	</table>
    	<%}else{ %>
    		<h2>아직 예외없음 테스트용</h2>
    	<%} %>   
![](https://velog.velcdn.com/images/zero1/post/5b694597-fda5-4698-bcb1-a281ceac2268/image.png)

서버단위 에러처리

web.xml

// 404 에러 발생시 나타낼 페이지

404
/a02_jsp/a05_error/z03_404Error.jsp

// 500 에러 발생시 나타낼 페이지

500
/a02_jsp/a05_error/z01_errorPage.jsp

// NullPointerException 에러 발생시 나타낼 페이지

java.lang.NullPointerException
/a02_jsp/a05_error/z04_nullExp.jsp

// NumberFormatException 에러 발생시 나타낼 페이지

java.lang.NumberFormatException
/a02_jsp/a05_error/z05_numberFormation.jsp

==> 상단에 <%@ errorPage 설정하지 않아도 에러 발생시 해당 에러의 지정 페이지를 나타냄

404 에러 페이지

상단에 <%@ isErrorPage="true"%> // 선언해야 exception 객체를 이용 가능

Null pointer 예외 발생

데이터가 있는지 확인해주세요

<%=exception.getClass().getName() %>
<%=exception.getMessage() %>
![](https://velog.velcdn.com/images/zero1/post/099d9c24-6fed-46a0-866f-926e5c93d0a5/image.png)
profile
아자아자 화이팅

0개의 댓글