JSP 오류 페이지에 HTTP 상태 코드에 대한 코드, 이유, 원인 및/또는 메시지를 표시하는 간단한 JSP 태그 라이브러리.
예를 들어:
<%@ page isErrorPage = " true " %>
<%@ taglib prefix = " hs " uri = " http://erik.thauvin.net/taglibs/httpstatus " %>
< html >< head >
< title >< hs:code /> < hs:reason default = " Server Error " /></ title >
</ head >
< h1 >< hs:reason default = " Server Error " /></ h1 >
Cause: < pre >< hs:cause default = " Unable to complete your request. " /></ pre >
Message: < pre >< hs:message default = " A server error has occured. " /></ pre >
...또는
<%@ page isErrorPage = " true " import = " net.thauvin.erik.httpstatus.Reasons " %>
<%= Reasons . getReasonPhrase(pageContext . getErrorData() . getStatusCode()) % >501 상태 코드에 표시됩니다.
Not Implemented build.gradle 파일에 다음을 포함하십시오.
repositories {
mavenCentral()
}
dependencies {
implementation ' net.thauvin.erik.httpstatus:httpstatus:1.1.1 '
} bld 빌드 파일에 다음을 포함하십시오.
scope ( compile ). include (
dependency ( "net.thauvin.erik.httpstatus" , "httpstatus" , version ( 1 , 1 , 0 ))
); Maven 유물로 :
< dependency >
< groupId >net.thauvin.erik.httpstatus</ groupId >
< artifactId >httpstatus</ artifactId >
< version >1.1.1</ version >
</ dependency > <hs:cause/> 태그는 현재 HTTP 상태 코드의 원인을 표시합니다. 속기 : :
<%= pageContext . getErrorData() . getThrowable() . getCause() . getLocalizedMessage() % >선택적 속성은 다음과 같습니다.
| 기인하다 | 설명 |
|---|---|
default | 원인이없는 경우 출력에 대한 폴백 값 |
escapeXml | 변환 <,>, &, ","해당 엔티티 코드로 값은 기본적으로 true 입니다. |
<hs:code/> 태그는 현재 HTTP 상태 코드를 표시합니다. 속기 : :
<%= pageContext . getErrorData() . getStatusCode() % > <hs:message/> 태그는 현재 오류 메시지가 표시됩니다. 속기 : :
<%= request . getAttribute( " javax.servlet.error.message " ) % >선택적 속성은 다음과 같습니다.
| 기인하다 | 설명 |
|---|---|
default | 오류 메시지가없는 경우 출력에 대한 폴백 값. |
escapeXml | 변환 <,>, &, ","해당 엔티티 코드로 값은 기본적으로 true 입니다. |
<hs:reason/> 태그는 HTTP 상태 코드의 이유를 표시합니다. 선택적 속성은 다음과 같습니다.
| 기인하다 | 설명 |
|---|---|
default | 이유가없는 경우 출력에 대한 폴백 값. |
code | HTTP 상태 오류 코드. 지정되지 않은 경우 현재 상태 코드가 사용됩니다. |
escapeXml | 변환 <,>, &, ","해당 엔티티 코드로 값은 기본적으로 true 입니다. |
StatusCode Bean을 사용하여 상태 코드 오류의 클래스를 확인할 수 있습니다. 예를 들어 JSTL을 사용합니다.
<%@ taglib prefix = " hs " uri = " http://erik.thauvin.net/taglibs/httpstatus " %>
<%@ taglib prefix = " c " uri = " http://java.sun.com/jsp/jstl/core " %>
< jsp:useBean id = " statusCode " class = " net.thauvin.erik.httpstatus.StatusCode " />
< c:set target = " ${ statusCode } " property = " code " >< hs:code /></ c:set >
< c:choose >
< c:when test = " ${ statusCode . isClientError() } " >
An error occurred on your side. (< hs:reason />)
</ c:when >
< c:otherwise >
An error occurred on our side. (< hs:message />)
</ c:otherwise >
</ c:choose >또는 서블릿에서 :
import net . thauvin . erik . httpstatus . StatusCode ;
public class ExampleServlet extends HttpServlet {
public void doGet ( HttpServletRequest request , HttpServletResponse response ) {
var statusCode = new StatusCode (
( Integer ) request . getAttribute ( "javax.servlet.error.status_code" ));
if ( statusCode . isError ()) {
if ( statusCode . isServerError ()) {
var reason = statusCode . getReason ();
} else {
// ...
}
}
}
} StatusCode Bean 방법은 다음과 같습니다.
| 방법 | 설명 |
|---|---|
getReason | 상태 코드의 이유를 반환합니다 (예 : Internal Server Error ) |
isClientError | 상태 코드가 클라이언트 오류인지 확인합니다. |
isError | 상태 코드가 서버 또는 클라이언트 오류인지 확인합니다. |
isInfo | 상태 코드가 정보인지 확인합니다. |
isRedirect | 상태 코드가 리디렉션인지 확인합니다. |
isServerError | 상태 코드가 서버 오류인지 확인합니다. |
isSuccess | 상태 코드가 성공했는지 확인합니다. ( OK ) |
isValid | 상태 코드가 유효한지 확인합니다. |
그 이유는 다음과 같이 resourcebundle 속성에 정의됩니다.
| 상태 코드 | 이유 |
|---|---|
100 | 계속하다 |
101 | 전환 프로토콜 |
102 | 처리 |
103 | 초기 힌트 |
110 | 응답은 부실합니다 |
111 | 재평가가 실패했습니다 |
112 | 연결이 끊어진 작업 |
113 | 휴리스틱 만료 |
199 | 기타 경고 |
200 | 좋아요 |
201 | 생성 |
202 | 받아 들여졌다 |
203 | 비 승인 정보 |
204 | 콘텐츠가 없습니다 |
205 | 컨텐츠 재설정 |
206 | 부분 내용 |
207 | 멀티 스테이터 |
208 | 이미보고되었습니다 |
214 | 변환 적용 |
218 | 이것은 괜찮습니다 |
226 | Im 사용 |
299 | 기타 지속적인 경고 |
300 | 여러 선택 |
301 | 영구적으로 움직였습니다 |
302 | 일시적으로 발견/이동 |
303 | 다른 사람을 참조하십시오 |
304 | 수정되지 않았습니다 |
305 | 프록시를 사용하십시오 |
306 | 사용되지 않았습니다 |
307 | 임시 리디렉션 |
308 | 영구 리디렉션 |
400 | 나쁜 요청 |
401 | 무단 |
402 | 지불이 필요합니다 |
403 | 금지 된 |
404 | 찾을 수 없습니다 |
405 | 방법이 허용되지 않습니다 |
406 | 허용되지 않습니다 |
407 | 프록시 인증이 필요합니다 |
408 | 시간 초과 요청 |
409 | 갈등 |
410 | 다 쓴 |
411 | 필요한 길이 |
412 | 전제 조건이 실패했습니다 |
413 | 페이로드가 너무 큽니다 |
414 | 너무 길어 |
415 | 지원되지 않는 미디어 유형 |
416 | 범위가 만족스럽지 않습니다 |
417 | 기대가 실패했습니다 |
418 | 나는 주전자입니다 |
419 | 자원의 공간이 충분하지 않습니다 |
420 | 메소드 실패 |
421 | 잘못된 요청 |
422 | 처리 할 수없는 컨텐츠 |
423 | 잠겨 있습니다 |
424 | 의존성 실패 |
425 | 너무 일찍 |
426 | 업그레이드가 필요합니다 |
428 | 전제 조건이 필요합니다 |
429 | 너무 많은 요청 |
430 | 헤더 필드가 너무 큽니다 |
431 | 헤더 필드가 너무 큽니다 |
440 | 로그인 타임 아웃 |
444 | 응답 없음 |
449 | 다시 |
450 | Windows 부모의 통제로 차단됩니다 |
451 | 법적 이유로 사용할 수 없습니다 |
460 | 로드 밸런서 유휴 시간 초과 전에 클라이언트가 닫혔습니다 |
463 | 30 개가 넘는 IP 주소가있는 x-forwarded header |
494 | 헤더가 너무 크게 요청하십시오 |
495 | SSL 인증서 오류 |
496 | SSL 인증서가 필요합니다 |
497 | HTTP 요청은 HTTPS 포트로 전송되었습니다 |
498 | 토큰 만료/유효하지 않은 |
499 | 클라이언트 폐쇄 요청 |
500 | 내부 서버 오류 |
501 | 구현되지 않았습니다 |
502 | 나쁜 게이트웨이 |
503 | 서비스를 사용할 수 없습니다 |
504 | 게이트웨이 시간 초과 |
505 | HTTP 버전은 지원되지 않습니다 |
506 | 변형도 협상합니다 |
507 | 저장이 충분하지 않습니다 |
508 | 루프가 감지되었습니다 |
509 | 대역폭 제한이 초과되었습니다 |
510 | 확장되지 않았습니다 |
511 | 네트워크 인증이 필요합니다 |
520 | 알 수없는 오류 |
521 | 웹 서버가 다운되었습니다 |
522 | 연결 시간이 초과되었습니다 |
523 | 원점은 도달 할 수 없습니다 |
524 | 시간 초과가 발생했습니다 |
525 | SSL 핸드 셰이크가 실패했습니다 |
526 | 유효하지 않은 SSL 인증서 |
527 | Railgun 오류 |
529 | 사이트가 과부하되었습니다 |
530 | 사이트가 얼어 붙었습니다 |
540 | 일시적으로 비활성화되었습니다 |
561 | 무단 |
598 | 네트워크 읽기 시간 초과 오류 |
599 | 네트워크 연결 시간 초과 오류 |
783 | 예상치 못한 토큰 |
다음과 같이 상태 코드에 대한 이유를 쿼리 할 수 있습니다.
$ java -jar httpstatus-1.1.1.jar 404 500
404: Not Found
500: Internal Server Error상태 코드가 지정되지 않으면 모두 인쇄됩니다.
$ java -jar httpstatus-1.1.1.jar
100: Continue
101: Switching Protocols
102: Processing
103: Early Hints
110: Response is Stale
111: Revalidation Failed
112: Disconnected Operation
113: Heuristic Expiration
199: Miscellaneous Warning
200: OK
201: Created
202: Accepted
203: Non-Authoritative Information
...응답 클래스별로 상태 코드를 인쇄 할 수도 있습니다.
$ java -jar httpstatus-1.1.1.jar 2xx
200: OK
201: Created
202: Accepted
203: Non-Authoritative Information
... 이 프로젝트에 기여하려면 Github 저장소를 복제하기 만하면됩니다.
git clone [email protected]:ethauvin/HttpStatus.git그런 다음 BLD를 사용하여 빌드하십시오.
cd HttpStatus
./bld compile이 프로젝트에는 Intellij 아이디어 프로젝트 구조가 있습니다. 모든 종속성이 다운로드 된 후에는 열 수 있으며 코드를 숙독 할 수 있습니다.