English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

JSP HTTP 상태 코드

HTTP 요청과 HTTP 응답의 구조는 비슷하며, 다음과 같은 구조를 가집니다:

  • 상태 행으로+CRLF(리턴 carriage line feed)로 시작

  • 0개 또는 여러 개의 헤더 모듈+CRLF

  • 빈 줄, 예를 들어 CRLF

  • 선택할 수 있는 메시지 본문, 예를 들어 파일, 쿼리 데이터, 쿼리 출력

예를 들어, 서버 응답 헤더는 다음과 같이 보입니다:

HTTP/1.1 200 OK
Content-Type: text/html
Header2: ...
...
HeaderN: ...
  (빈 줄)
<!doctype ...>
<html>
<head>.../head>
<body>
...
</body>
</html>

상태 행은 HTTP 버전, 상태 코드, 그 상태 코드와 관련된 짧은 메시지를 포함합니다.

다음 표는 서버에서 반환할 수 있는 HTTP 상태 코드와 관련된 메시지를 나열합니다:

상태 코드메시지설명
100 Continue 서버가 요청의 일부만 수신했지만, 서버가 거부하지 않았다면 클라이언트는 이 요청을 계속할 것입니다
101 Switching Protocols 서버 스위칭 프로토콜
200 OK 요청이 확인되었습니다
201 Created 요청이 완전하면, 새로운 자원이 생성됩니다
202 Accepted 요청이 수락되었지만 처리되지 않았습니다
203 Non-권위적인 정보  
204 No Content  
205 Reset Content  
206 Partial Content  
300 Multiple Choices 사용자가 선택할 수 있는 히트링크 테이블, 최대 지원5개의 히트링크
301 Moved Permanently 요청된 페이지는 새로운 URL로 이동했습니다
302 Found 요청된 페이지가 일시적으로 새로운 URL로 이동했습니다
303 See Other 요청된 페이지는 다른 URL에서 찾을 수 있습니다
304 Not Modified  
305 Use Proxy  
306Unused 이 상태 코드는 더 이상 사용되지 않지만 상태 코드가 유지됩니다
307 Temporary Redirect 요청된 페이지가 일시적으로 새로운 URL로 이동했습니다
400 Bad Request 서버는 요청을 인식할 수 없습니다
401 Unauthorized 요청된 페이지는 사용자 이름과 비밀번호가 필요합니다
402 지불이 필요합니다이 상태 코드는 현재 사용할 수 없습니다
403 Forbidden 요청된 페이지에 접근이 금지되었습니다
404 Not Found 서버는 요청된 페이지를 찾을 수 없습니다
405 Method Not Allowed 요청에 지정된 메서드가 허용되지 않습니다
406 Not Acceptable 서버는 클라이언트가 받을 수 없는 응답을 생성할 수 없습니다
407 Proxy Authentication Required 요청이 서비스되기 전에 프록시 서버를 인증해야 합니다
408 Request Timeout 요청 시간이 서버가 기다릴 수 있는 시간을 초과하여 연결이 끊어졌습니다
409 Conflict 요청에 모순이 있습니다
410 Gone 요청된 페이지가 더 이상 사용할 수 없습니다
411 Length Required "Content-"Length"가 정의되지 않았기 때문에 서버가 요청을 받아들이지 않습니다
412 Precondition Failed 서버가 요청의 전제 조건을 false로 평가했습니다
413 Request Entity Too Large 요청의 엔티티가 너무 크기 때문에 서버가 요청을 받아들이지 않습니다
414 Request-url Too Long URL이 너무 길어서 서버가 요청을 받아들이지 않습니다. "POST" 요청을 "GET" 요청으로 변환할 때 많은 쿼리 정보가 추가되면 발생합니다
415 Unsupported Media Type 서버가 지원하지 않는 미디어 타입으로 인해 요청을 받아들이지 않습니다
417 Expectation Failed  
500 Internal Server Error 요청이 불완전하며, 서버가 예상치 못한 상황을 만났습니다
501 Not Implemented 요청이 불완전하며, 서버가 필요한 기능을 제공하지 않습니다
502 Bad Gateway 요청이 불완전하며, 서버가 상류 서버에서 무효한 응답을 받았습니다
503 Service Unavailable 요청이 불완전하며, 서버가 일시적으로 재시작하거나 종료되었습니다
504 Gateway Timeout 게이트웨이 타임아웃
505 HTTP Version Not Supported 서버가 지정된 HTTP 버전을 지원하지 않습니다

HTTP 상태 코드를 설정하는 메서드

다음 표는 HttpServletResponse 클래스에서 상태 코드를 설정하는 메서드를 나열합니다:

S.N.메서드 & 설명
1public void setStatus ( int statusCode ) 이 메서드는 어떤 상태 코드든 설정할 수 있습니다.如果您의 응답이 특정 상태 코드와 문서를 포함하고 있다면, PrintWriter를 사용하여 어떤 내용도 반환하기 전에 setStatus 메서드를 호출하신 것을 확인하십시오
2public void sendRedirect(String url) 이 메서드는302응답을 생성하면서 Location 头来 URL에 새로운 문서를 알려줍니다
3public void sendError(int code, String message) 이 메서드는 일반적으로 404)과 짧은 메시지를 자동으로 HTML 문서에 삽입하고 클라이언트에게 반환합니다

HTTP 상태 코드 프로그램 예제

다음 예제에서는407에러 코드를 브라우저에 전달하면 브라우저는 "Need authentication!!!"라고 알려줄 것입니다.

<html>
<head>
<title>Setting HTTP Status Code</title>
</head>
<body>
<%
   // 에러 코드를 설정하고 이유를 설명
   response.sendError(407, "Need authentication!!!" );
%>
</body>
</html>

위 JSP 페이지에 접근하면 다음과 같은 결과를 얻게 됩니다:

다른 상태 코드를 사용해 보면 어떤 예상치 못한 결과를 얻게 될지 시도해 보세요.