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

Servlet HTTP 상태 코드

HTTP 요청과 HTTP 응답 메시지의 형식은 유사하며, 구조는 다음과 같습니다:

  • 초기 상태 행 + 엔터 개행 문자(엔터+개행)

  • 제목 행은 0개 또는 여러 개가 될 수 있습니다.+엔터 개행 문자

  • 빈 행, 즉 엔터 개행 문자

  • 선택 사항 메시지 본문, 예를 들어 파일, 쿼리 데이터 또는 쿼리 출력

예를 들어, 서버의 응답 헤더는 다음과 같습니다:

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

상태 행은 HTTP 버전을 포함합니다(이 예제에서는 HTTP/1.1)、상태 코드(이 예제에서는 200)과 상태 코드에 해당하는 짧은 메시지(이 예제에서는 OK입니다)。

다음은 웹 서버에서 반환할 수 있는 HTTP 상태 코드와 관련된 정보 목록입니다:

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

HTTP 상태 코드 설정 메서드

다음의 메서드는 Servlet 프로그램에서 HTTP 상태 코드를 설정할 수 있습니다. 이 메서드들은 HttpServletResponse 객체 사용 가능

순번메서드 및 설명
1public void setStatus ( int statusCode )
이 메서드는 임의의 상태 코드를 설정합니다. setStatus 메서드는 int(상태 코드)를 파라미터로 받습니다. 특별한 상태 코드와 문서가 포함된 응답이 있다면, 사용하기 전에 PrintWriter 실제로 어떤 내용도 반환하기 전에 setStatus를 호출해야 합니다.
2public void sendRedirect(String url)
이 메서드는 302 응답을 생성하고, 새 문서 URL을 포함한 Location 헤더를 보냅니다.
3public void sendError(int code, String message)
이 메서드는 일반적으로 404),HTML 문서 내부에서 자동으로 포맷되고 클라이언트로 전송되는 짧은 메시지와 함께 전송됩니다.

HTTP 상태 코드 예제

아래의 예제는 407 에러 코드를 클라이언트 브라우저로 보내면, 브라우저는 "Need authentication!!!" 메시지를 표시합니다.

// 필요한 java 라이브러리 가져오기
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
import javax.servlet.annotation.WebServlet;
@WebServlet("/showError())
// HttpServlet 클래스 확장
public class showError extends HttpServlet {
 
  // GET 메서드 요청을 처리하는 메서드
  public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
            throws ServletException, IOException
  {
      // 에러 코드와 이유를 설정
      response.sendError(407, "Need authentication!!!" );
  }
  // POST 메서드 요청을 처리하는 메서드
  public void doPost(HttpServletRequest request,
                     HttpServletResponse response)
      throws ServletException, IOException {
     doGet(request, response);
  }
}

지금, 위의 Servlet을 호출하면 다음과 같은 결과가 표시됩니다:

HTTP 상태 407 - 인증 필요!!!

type 상태 보고서

message 인증 필요!!!

description 고객은 먼저 프록시와 자신을 인증해야 합니다. (인증 필요!!!).

Apache Tomcat/5.5.29