on
Day04(error타입지정)
Day04(error타입지정)
에러페이지를 하나만 지정해줘도 되지만 여러 main페이지에서 다양한 에러가 발생할때마다 에러 타입에 따라 서로 다른 특정 에러페이지를 보여주고싶을 때는 어떻게 해야하는가?
02errorMain.jsp의 코드내용
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here <% String error = request.getParameter("error"); if(error != null){ if(error.equals("null")){ throw new NullPointerException(); }else if (error.equals("class")){ throw new ClassCastException(); }else{ out.print("에러x"); } } %>
02errorClassCast.jsp의 코드내용
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isErrorPage="true"%> Insert title here 클래스케스트 에러페이지 <%=exception.getMessage() %>
02errorNullPointer.jsp의 코드내용
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isErrorPage="true"%> Insert title here 널포인터 에러페이지 <%=exception.getMessage() %>
02errorMain.jsp에서 request객체를 이용해서 error의 파라미터 값을 받아서 변수에 대입하여 if문을 통해 에러의 종류에 따라 에러를 발생시키도록 하였고, WEB-INF 밑의 web.xml에 해당 코드를 추가 하였다.
java.lang.NullPointerException /06error/02errorNullPointer.jsp 보여줄 jsp위치 java.lang.ClassCastException /06error/02errorClassCast.jsp 보여줄 jsp위치
이제 url에 http://localhost:8080/study/06error/02errorMain.jsp?error=null를 입력하면 02errorNullPointer.jsp로 이동하게 된다.
에러 상태코드
response가 응답할 때 응답바디에 상태코드가 같이 전달된다.(데이터와 함께)
200 : 정상코드, 문제없을 때 우리의 jsp내용이랑 같이 전달 200을 제외한 나머지는 jsp내용 없어지고 상태코드랑 에러데이터 전달
300 : 네트워워크, 요청정보가 변경, 지연
400 : 403 권한없음 : *404* 찾을 수 없음, not found
500 : *서버에러* 개발자가 코딩을 잘못했을 때 !
에러페이지 우선순위
pageDirective도 작성하고 web.xml에 exception type, code 전부 있을 때
1.errorPage
2.exception type
3.code
보통은 code로만 하는 경우가 많음
from http://fun-developer.tistory.com/36 by ccl(A) rewrite - 2021-10-07 18:27:29