1. 다이나믹 웹프로젝트 만들기
이제 본격적으로 EL/JSTL 문법을 배워보자!
이것을 배우기 위해 먼저 이클립스에서 다이나믹 웹프로젝트부터 만들어주었다.
2. 에러 페이지 만들기
1) HTTP 에러 코드
그리고 에러 메세지를 확인하기 위한 페이지도 하나 만들어주려 한다.
만약에 없는 페이지를 불렀을 때 어떻게 뜰까?
이렇게 에러 페이지가 자동으로 떠버린다.
그런데 사용자들에게 이런 에러 페이지를 직접적으로 노출시켜버리면 안된다.
페이지의 주요한 경로가 노출될 수도 있고, 사용자들에게 에러가 발생했을 시 다른 페이지로 이동을 시켜주는 것이 더 좋기 때문이다.
<주로 발생하는 HTTP 에러 코드 표>
HTTP 에러코드 | 에러 메시지 |
100 | Continue |
101 | Switching Protocols |
200 | OK, 에러 없이 전송 성공 |
202 | Accepted, 서버가 클라이언트의 명령을 받음 |
203 | Non-authoritative Information, 서버가 클라이언트 요구 중 일부만 전송함 |
204 | Non Content, 클라이언트 요구를 처리했으나 전송할 데이터가 없음 |
205 | Reset Content |
206 | Partial Content |
300 | Multiple Choices, 최근에 옮겨진 데이터를 요청함. |
301 | Moved Permanently, 요구한 데이터를 변경된 임시 URL에서 찾음 |
302 | Moved Permanently, 요구한 데이터가 변경된 URL에 있음 |
303 | See Other, 요구한 데이터를 변경하지 않았기 때문에 문제가 있음 |
304 | Not modified |
305 | Use Proxy |
400 | Bad Request, 요청 실패 - 문법상 오류가 있어서 서버가 요청 사항을 이해하지 못함. |
401.1 | Unauthorized, 권한 없음 - 접속 실패, 이 에러는 서버에 로그온 하려는 요청 사항이 서버에 들어있는 권한과 비교했을 시 맞지 않을 경우 발생. 이 경우, 요청한 자원에 접근할 수 있는 권한을 부여받기 위해서 서버 운영자에게 요청해야 함. |
401.2 | Unauthorized, 권한 없음 - 서버 설정으로 인한 접속 실패, 이 에러는 서버에 로그온 하려는 요청사항이 서버에 들어있는 권한과 비교했을 때 맞지 않을 경우 발생. 이것은 일반적으로 적절한 www-authenticate head field를 전송하지 않아서 발생함. |
402.3 | Unauthorized, 권한 없음 - 자원에 대한 ACL에 기인한 권한 없음. 이 에러는 클라이언트가 특정 자원에 접근할 수 없을 때 발생. 이 자원은 페이지가 될 수도 있고, 클라이언트의 주소 입력란에 명기된 파일일 수도 있다. 또한, 클라이언트가 해당 주소로 접속할 때 이용되는 또 다른 파일일 수도 있다. 접근할 전체 주소를 다시 확인해 보고 웹 서버 운영자에게 여러분이 자원에 접근할 권한이 있는지를 확인한다. |
401.4 | Unauthorized, 권한 없음 - 필터에 의한 권한 부여 실패. 이 에러는 웹 서버가 서버에 접속하는 사용자들을 확인하기 위해 설치한 필터 프로그램이 있음을 의미함. 서버에 접속하는데 이용되는 인증 과정이 이런 필터 프로그램에 의해 거부된 것임 |
404.5 | Unauthorized, 권한 없음 - ISA PI/CGI 어플리케이션에 의한 권한 부여 실패. 이 에러는 이용하려는 웹 서버의 어드레스에 ISA PI나 CGI 프로그램이 설치되어 있어 사용자의 권한을 검증함. 서버에 접속하는데 이용되는 인증 과정이 이 프로그램에 의해 거부됨. |
402 | Payment Required, 예약됨 |
403.1 | Forbidden, 금지 - 수행 접근 금지. 이 에러는 CGI나 ISA-PI, 혹은 수행시키지 못하도록 되어 있는 디렉터리 내의 실행 파일을 수행시키려고 했을 때 발생함. |
403.2 | Forbidden, 금지 - 읽기 접근 금지. 이 에러는 브라우저가 접근한 디렉터리에 가용한 디폴트 페이지가 없을 경우에 발생함. |
403.4 | Forbidden, 금지 - SSL 필요. 이 에러는 접근하려는 페이지가 SSL로 보안 유지되고 있는 것일 때 발생. |
403.5 | Forbidden, 금지 - SSL 128이 필요. 이 에러는 접근하려는 페이지가 SSL로 보안 유지되고 있는 것일 때 발생. 브라우저가 128비트의 SSL을 지원하는지를 확인해야 함. |
403.6 | Forbidden, 금지 - IP 주소 거부됨. 이 에러는 서버가 사이트에 접근이 허용되지 않은 IP주소로 사용자가 접근하려 했을 때 발생함. |
403.7 | Forbidden, 금지 - 클라이언트 확인 필요. 이 에러는 접근하려는 자원이 서버가 인식하기 위해서 브라우저에게 클라이언트 SSL을 요청하는 경우 발생함. 자원을 이용할 수 있는 사용자임을 입증하는데 사용됨. |
403.8 | Forbidden, 금지 - 사이트 접근 거부. 이 에러는 웹 서버가 요청사항을 수행하고 있지 않거나, 해당 사이트에 접근하는 것을 허락하지 않았을 경우에 발생함. |
403.9 | Forbidden, 금지 - 연결된 사용자수 과다. 이 에러는 웹 서버가 busy한 상태에 있어서 요청을 수행할 수 없을 경우에 발생함. |
403.10 | Forbidden, 금지 - 설정이 확실하지 않음. 이 에러는 웹 서버의 설정 부분에 문제가 있을 경우 발생함. |
403.11 | Forbidden, 금지 - 패스워드 변경. 이 에러는 사용자 인증 단계에서 잘못된 패스워드를 입력했을 경우 발생함. |
403.12 | Forbidden, 금지 - Mapper 접근 금지. 이 에러는 클라이언트 인증용 맵(map)이 해당 웹 사이트에 접근하는 것을 거부할 경우에 발생. |
404 | Not Found, 문서를 찾을 수 없음 - 이 에러는 클라이언트가 요청한 문서를 찾지 못한 경우에 발생함. URL을 다시 잘 보고 주소가 올바로 입력되었는지를 확인함. |
405 | Method not allowed, 메소드 허용 안 됨 - 이 에러는 Request 라인에 명시된 메소드를 수행하기 위한 해당 자원의 이용이 허용되지 않았을 경우에 발생함. |
406 | Not Acceptable, 받아들일 수 없음 - 이 에러는 요청 사항에 필요한 자원은 요청 사항으로 전달된 Accept header에 따라 "Not Acceptable" 내용을 가진 사항이 있을 경우에 발생함. |
407 | Proxy Authentication Required, Proxy 인증이 필요함 - 이 에러는 해당 요청이 수행되도록 proxy 서버에게 인증을 받아야 할 경우에 발생함. |
408 | Request timeout, 요청 시간이 지남 |
409 | Conflict |
410 | Gone, 영구적으로 사용할 수 없음. |
411 | Length Required |
412 | Precondition Failed, 선결조건 실패 - 이 에러는 Request-header filed에 하나 이상에 선결 조건에 대한 값이 서버에서의 테스트 결과 false로 나왔을 경우에 발생 |
413 | Request entity too large |
414 | Request-URI too long, 요청한 URI가 너무 김 - 이 에러는 요청한 URI의 길이가 너무 길어서 서버가 요청 사항의 이행을 거부했을 경우 발생 |
415 | Unsupported media type |
500 | Internal Server Error, 서버 내부 오류 - 이 에러는 웹 서버가 요청사항을 수행할 수 없을 경우에 발생함 |
501 | Not Implemented, 적용 안 됨 - 이 에러는 웹 서버가 요청사항을 수행하는데 필요한 기능을 지원하지 않는 경우에 발생 |
502 | Bad gateway, 게이트웨이 상태 나쁨 - 이 에러는 게이트웨이 상태가 나쁘거나 서버의 과부하 상태일 때 발생한다. |
503 | Service Unavailable, 서비스 불가능 - 이 에러는 서비스가 현재 멈춘 상태 또는 현재 일시적인 과부하 또는 관리 상황일 때 발생될 수 있다. |
504 | Gateway timeout |
505 | HTTP Version Not Supported |
2) 에러 코드 페이지 처리하기 - web.xml
에러 코드 페이지를 다른 페이지로 대체하여 처리하는 것은 바로 web.xml 즉, 배치관리자에서 지정을 해준다.
우선 에러 페이지를 하나 만들었다.
이제 web.xml로 가보자.
만약 다이나믹 웹프로젝트를 만들 때 web.xml 파일 생성을 체크하지 않았다면 존재하지 않을 수도 있다.
이럴 땐 새로운 프로젝트를 만들어서 web.xml 파일을 생성시킨 뒤 복사-붙여넣기를 해도 무방하다.
아무튼 web.xml 파일을 열었다.
경로는 src/main/webapp/WEB-INF에 존재한다.
이제 이 파일을 수정해보자!
3. web.xml 파일 수정하기
web.xml은 태그 방식의 코드들을 사용한다.
태그 방식이란 여는 태그와 닫는 태그로 구성되어있는 코드 안에 명령어를 입력하는 것이다.
1) 첫페이지 자동 호출 등록 : welcome-file-list
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
index.jsp를 첫 페이지로 띄운다.
2) 세션 시간 등록 : session-config -> session-timeout
<session-config>
<session-timeout>20</session-timeout>
</session-config>
세션 만료 시간을 20분으로 등록한다.
3) 에러 페이지 지정하기 : error-page -> error-code -> location
<error-page>
<error-code>404</error-code>
<location>/error/404code.jsp</location>
</error-page>
이렇게 web.xml 파일을 수정한 뒤 서버를 재시작하여 에러 페이지를 일부러 띄우면 상단의 그림과 다르게 아래와 같은 화면이 출력되게 되는 것이다.
4. HTTP 상태 500 처리하기
에러 코드 500은 내부 서버 오류가 발생한 상황이다.
만약 있지도 않은 kor 이라는 변수의 값을 불러오는 코드를 쓰고 페이지에 출력을 시켰다.
// 2) HTTP 상태 500
int num = Integer.parseInt(request.getParameter("kor"));
out.print("num : " + num);
그러니 아래처럼 에러 페이지가 뜨면서 주요한 프로그래밍 코드가 다 노출이 되어버린다.
이러면 보안상의 큰 문제가 발생할 가능성이 있다.
이제 web.xml에 코드를 등록하고 에러 페이지를 띄워보자.
<!-- HTTP 상태 500 -->
<!-- 예) http://localhost:9090/basic05_mvc/error/errorTest.jsp -->
<!-- ? 뒤에 Query String 값으로 kor 값을 넘기지 않음 -->
<error-page>
<error-code>500</error-code>
<location>/error/500code.jsp</location>
</error-page>
'⁂ JSP > : 기본 익히기' 카테고리의 다른 글
[JSP] #11-3 EL(Expression Language) - 내장 객체 (0) | 2022.10.26 |
---|---|
[JSP] #11-3 EL(Expression Language) - 기본 문법 (0) | 2022.10.26 |
[JSP] #11-1 MVC 모델 2를 알아보자 > EL/JSTL의 초석! (0) | 2022.10.26 |
[JSP] #10 파일 업로드 (0) | 2022.10.20 |
[JSP] #9 자바 메일 보내기 (0) | 2022.10.19 |