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

JSP 서버 응답

Response 응답 객체는 주로 JSP 컨테이너가 처리한 결과를 클라이언트로 전송합니다. response 변수를 사용하여 HTTP 상태를 설정하고 클라이언트로 데이터를 전송할 수 있습니다. 예를 들어 Cookie, HTTP 헤더 정보 등입니다.

응답이 보통 다음과 같이 보입니다:

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

상태 행은 HTTP 버전 정보를 포함합니다. 예를 들어 HTTP/1.1하나의 상태 코드, 예를 들어200, 또한 상태 코드에 대한 매우 짧은 메시지가 있습니다. 예를 들어 OK.

다음 표는 HTTP1.1응답 헤더에서 가장 유용한 부분은, 네트워크 프로그래밍에서 자주 볼 수 있는 부분입니다:

응답 헤더설명
Allow 서버가 지원하는 요청 메서드 (GET, POST 등)을 지정합니다.
Cache-Control 응답 문서가 안전하게 캐시될 수 있는 경우를 지정합니다. 일반적으로 다음 값이 사용됩니다. publicprivate 또는no-cache etc. Public은 문서가 캐시될 수 있음을 의미하며, Private는 문서가 단일 사용자에만 서비스되고 사적인 캐시만 사용할 수 있음을 의미합니다. No-cache는 문서가 캐시되지 않는 것을 의미합니다.
Connection 브라우저가 영구적 HTTP 연결을 사용할지 여부를 명령합니다.close 브라우저가 영구적 HTTP 연결을 사용하지 않도록 명령하고 keep-alive는 영구적 연결을 사용하는 것을 의미합니다.
Content-Disposition 브라우저가 응답을 지정된 이름으로 디스크에 저장하도록 요청합니다.
Content-Encoding 전송할 때 페이지의 인코딩 규칙을 지정합니다.
Content-Language 문서가 사용하는 언어를 표시합니다. 예를 들어 en, en 등입니다.-us, ru 등과 같습니다.
Content-Length 응답의 바이트 수를 표시합니다. 브라우저가 영구적 (keep-alive) HTTP 연결을 사용할 때만 유용합니다.-alive) HTTP 연결이 활성화된 경우에만 유용합니다.
Content-Type 문서가 사용하는 MIME 타입을 표시합니다.
Expires 캐시에서 제거될 때까지 언제 만료되는지 지정합니다.
Last-Modified 문서 마지막 수정 시간을 지정합니다. 클라이언트는 문서를 캐시하고 이후의 요청에서 제공할 수 있습니다. If-Modified-Since요청 헤더
Location 위에서300초 내에 모든 응답 주소가 포함된 상태 코드를 가진 응답이 있으면, 브라우저는 자동으로 재연결하여 새 문서를 검색합니다.
Refresh 브라우저가 페이지를 얼마 지나면 다시 요청을 보낼지 지정하기
Retry-After 와503 (서비스 사용 불가)와 함께 사용하여 사용자에게 요청이 얼마 후 응답을 받을 수 있을지 알리기
Set-Cookie 현재 페이지에 해당하는 쿠키 지정하기

HttpServletResponse 클래스

response 객체는 javax.servlet.http.HttpServletResponse 클래스의 예제입니다. 서버가 request 객체를 생성하는 것처럼, 이 객체는 클라이언트 응답도 생성합니다.

response 객체는 HTTP 정보 헤더를 처리하는 인터페이스를 정의합니다. 이 객체를 사용하여 개발자는 새로운 쿠키, 타임스탬프, HTTP 상태 코드 등을 추가할 수 있습니다.

다음 표는 HttpWebResponse 클래스가 제공하는 HTTP 응답 헤더 설정 메서드를 나열합니다:

S.N.메서드 & 설명
1String encodeRedirectURL(String url) sendRedirect() 메서드에서 사용하는 URL 인코딩하기
2String encodeURL(String url) URL 인코딩, 세션 ID를 포함한 URL 반환하기
3boolean containsHeader(String name) 지정된 응답 헤더가 존재하는지 반환하기
4boolean isCommitted() 응답이 클라이언트에 제출되었는지 반환하기
5void addCookie(Cookie cookie) 지정된 쿠키를 응답에 추가하기
6void addDateHeader(String name, long date) 지정된 이름의 응답 헤더와 날짜 값 추가하기
7void addHeader(String name, String value) 지정된 이름의 응답 헤더와 값 추가하기
8void addIntHeader(String name, int value) 지정된 이름의 응답 헤더와 int 값 추가하기
9void flushBuffer() 모든 캐시 내용을 클라이언트에 기록하기
10void reset() 모든 캐시에서 모든 데이터를 지우기, 상태 코드와 다양한 응답 헤더 포함
11void resetBuffer() 기본 캐시 데이터를 지우지만 응답 헤더와 상태 코드는 제외합니다
12void sendError(int sc) 지정된 상태 코드를 사용하여 클라이언트에게 오류 응답을 보냅니다. 그런 다음 캐시를 지웁니다
13void sendError(int sc, String msg) 지정된 상태 코드와 메시지를 사용하여 클라이언트에게 오류 응답을 보냅니다
14void sendRedirect(String location) 지정된 URL을 사용하여 클라이언트에게 일시적인 간접 응답을 보냅니다
15void setBufferSize(int size) 응답 본문의 버퍼 크기를 설정합니다
16void setCharacterEncoding(String charset) 응답의 인코딩 셋(예: UTF)을 지정합니다-8
17void setContentLength(int len) HTTP servlets에서 응답의 내용의 길이를 지정합니다. 이 메서드는 HTTP Content를 설정하는 데 사용됩니다-Length 정보 헤더
18void setContentType(String type) 응답의 내용 유형을 설정합니다. 응답이 아직 제출되지 않았다면
19void setDateHeader(String name, long date) 지정된 이름과 날짜로 응답 헤더의 이름과 날짜를 설정합니다
20void setHeader(String name, String value) 지정된 이름과 값으로 응답 헤더의 이름과 내용을 설정합니다
21void setIntHeader(String name, int value) int 타입의 값을 name 헤더에 지정합니다
22void setLocale(Locale loc) 응답의 언어 환경을 설정합니다. 응답이 아직 제출되지 않았다면
23void setStatus(int sc) 응답 상태 코드 설정

HTTP 응답 헤더 프로그램 예제

다음 예제는 setIntHeader() 메서드와 setRefreshHeader() 메서드를 사용하여 디지털 시계를 모의합니다:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*" %>
!DOCTYPE html
<html>
<head>
<meta charset="utf-8">}}
<title>기본 튜토리얼 웹(oldtoolbag.com)</<title>
</<head>
<body>
<h2>자동 새로 고침 예제</h2>
<%
   // 매5초 자동 새로 고침
   response.setIntHeader("Refresh", 5);
   // 현재 시간 가져오기
   Calendar calendar = new GregorianCalendar();
   String am_pm;
   int hour = calendar.get(Calendar.HOUR);
   int minute = calendar.get(Calendar.MINUTE);
   int second = calendar.get(Calendar.SECOND);
   if(calendar.get(Calendar.AM_PM) == 0)
      am_pm = "AM";
   else
      am_pm = "PM";
   String CT = hour+":"+ minute +":"+ second +" "+ am_pm;
   out.println("현재 시간: " + CT + "\n");
%>
</body>
</html>

위 코드를 main.jsp로 저장한 후 브라우저를 통해 접근하세요. 그러면5초는 시스템 현재 시간을 표시합니다.

위 코드를 직접 수정하여 다른 방법을 시도해 보세요. 더 깊은 이해를 얻을 수 있습니다.