English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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 | 응답 문서가 안전하게 캐시될 수 있는 경우를 지정합니다. 일반적으로 다음 값이 사용됩니다. public,private 또는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 | 현재 페이지에 해당하는 쿠키 지정하기 |
response 객체는 javax.servlet.http.HttpServletResponse 클래스의 예제입니다. 서버가 request 객체를 생성하는 것처럼, 이 객체는 클라이언트 응답도 생성합니다.
response 객체는 HTTP 정보 헤더를 처리하는 인터페이스를 정의합니다. 이 객체를 사용하여 개발자는 새로운 쿠키, 타임스탬프, HTTP 상태 코드 등을 추가할 수 있습니다.
다음 표는 HttpWebResponse 클래스가 제공하는 HTTP 응답 헤더 설정 메서드를 나열합니다:
S.N. | 메서드 & 설명 |
---|---|
1 | String encodeRedirectURL(String url) sendRedirect() 메서드에서 사용하는 URL 인코딩하기 |
2 | String encodeURL(String url) URL 인코딩, 세션 ID를 포함한 URL 반환하기 |
3 | boolean containsHeader(String name) 지정된 응답 헤더가 존재하는지 반환하기 |
4 | boolean isCommitted() 응답이 클라이언트에 제출되었는지 반환하기 |
5 | void addCookie(Cookie cookie) 지정된 쿠키를 응답에 추가하기 |
6 | void addDateHeader(String name, long date) 지정된 이름의 응답 헤더와 날짜 값 추가하기 |
7 | void addHeader(String name, String value) 지정된 이름의 응답 헤더와 값 추가하기 |
8 | void addIntHeader(String name, int value) 지정된 이름의 응답 헤더와 int 값 추가하기 |
9 | void flushBuffer() 모든 캐시 내용을 클라이언트에 기록하기 |
10 | void reset() 모든 캐시에서 모든 데이터를 지우기, 상태 코드와 다양한 응답 헤더 포함 |
11 | void resetBuffer() 기본 캐시 데이터를 지우지만 응답 헤더와 상태 코드는 제외합니다 |
12 | void sendError(int sc) 지정된 상태 코드를 사용하여 클라이언트에게 오류 응답을 보냅니다. 그런 다음 캐시를 지웁니다 |
13 | void sendError(int sc, String msg) 지정된 상태 코드와 메시지를 사용하여 클라이언트에게 오류 응답을 보냅니다 |
14 | void sendRedirect(String location) 지정된 URL을 사용하여 클라이언트에게 일시적인 간접 응답을 보냅니다 |
15 | void setBufferSize(int size) 응답 본문의 버퍼 크기를 설정합니다 |
16 | void setCharacterEncoding(String charset) 응답의 인코딩 셋(예: UTF)을 지정합니다-8 |
17 | void setContentLength(int len) HTTP servlets에서 응답의 내용의 길이를 지정합니다. 이 메서드는 HTTP Content를 설정하는 데 사용됩니다-Length 정보 헤더 |
18 | void setContentType(String type) 응답의 내용 유형을 설정합니다. 응답이 아직 제출되지 않았다면 |
19 | void setDateHeader(String name, long date) 지정된 이름과 날짜로 응답 헤더의 이름과 날짜를 설정합니다 |
20 | void setHeader(String name, String value) 지정된 이름과 값으로 응답 헤더의 이름과 내용을 설정합니다 |
21 | void setIntHeader(String name, int value) int 타입의 값을 name 헤더에 지정합니다 |
22 | void setLocale(Locale loc) 응답의 언어 환경을 설정합니다. 응답이 아직 제출되지 않았다면 |
23 | void setStatus(int sc) 응답 상태 코드 설정 |
다음 예제는 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초는 시스템 현재 시간을 표시합니다.
위 코드를 직접 수정하여 다른 방법을 시도해 보세요. 더 깊은 이해를 얻을 수 있습니다.