English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
그 전 장에서 논의했듯이, 웹 서버가 HTTP 요청에 응답할 때, 응답은 일반적으로 상태 행, 몇 가지 응답 헤더, 빈 행, 그리고 문서로 구성됩니다. 일반적인 응답은 다음과 같습니다:
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 1.1 응답 헤더는 웹 프로그래밍에서 자주 사용됩니다:
헤더 정보 | 설명 |
---|---|
Allow | 이 헤더 정보는 서버가 지원하는 요청 메서드(GET, POST 등)를 지정합니다. |
Cache-Control | 이 헤더 정보는 응답 문서가 어떤 상황에서 안전하게 캐시에 저장될 수 있는지 지정합니다. 가능한 값은 다음과 같습니다:public, private 또는 no-cache 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 연결 시에만 이 정보가 필요합니다. |
Content-Type | 이 헤더 정보는 응답 문서의 MIME (Multipurpose Internet Mail Extension) 타입을 제공합니다. |
Expires | 이 헤더 정보는 내용이 캐시에 저장되지 않도록 내용이 만료된 시간을 지정합니다. |
Last-Modified | 이 헤더 정보는 문서의 마지막 수정 시간을 나타냅니다. 그런 다음, 클라이언트는 파일을 캐시에 저장하고, 이후 요청에서 If-Modified-Since 요청 헤더 정보는 날짜를 제공합니다. |
Location | 이 헤더 정보는 모든 상태 코드를 포함한 응답에 포함되어야 합니다. 그리고 300s 내에, 이는 브라우저가 문서 주소를 알립니다. 브라우저는 자동으로 이 위치로 재접속하여 새로운 문서를 가져옵니다. |
Refresh | 이 헤더 정보는 브라우저가 가장 빨리 페이지를 업데이트해야 하는 방법을 지정합니다. 페이지 새로고침 초수를 지정할 수 있습니다. |
Retry-After | 이 헤더 정보는 다음과 함께 사용될 수 있습니다. 503서비스 유닛 불가용) 응답과 함께 사용되어, 클라이언트가 얼마나 오래 기다려야 할지를 알립니다. |
Set-Cookie | 이 헤더 정보는 페이지와 연관된 쿠키를 지정합니다. |
이하의 메서드는 Servlet 프로그램에서 HTTP 응답 헤더를 설정하는 데 사용할 수 있습니다. 이 메서드는 다음과 같이 HttpServletResponse 객체 사용 가능
순번 | 메서드 & 설명 |
---|---|
1 | String encodeRedirectURL(String url) sendRedirect 메서드에서 사용할 지정된 URL을 인코딩하거나, 인코딩이 필요하지 않으면 URL이 변경되지 않습니다. |
2 | String encodeURL(String url) 세션 회의 ID를 포함한 지정된 URL을 인코딩하거나, 인코딩이 필요하지 않으면 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) 지정된 이름과 정수 값을 가진 응답 헤더를 추가합니다. |
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 Servlet 응답에서 내용 본체의 길이를 설정하는 메서드를 사용하여 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) 지정된 이름과 정수 값을 가진 응답 헤더를 설정합니다. |
22 | void setLocale(Locale loc) 응답이 아직 제출되지 않았다면, 응답의 지역을 설정합니다. |
23 | void setStatus(int sc) 이 응답의 상태 코드를 설정합니다. |
setContentType() 메서드를 이미 전체 예제에서 본 것처럼, 아래의 예제도 같은 메서드를 사용하며, 또한, 우리는 setIntHeader() 메서드를 사용하여 설정 Refresh 헤더。
//必需的 java 库을 가져오기 import java.io.IOException; import java.io.PrintWriter; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/Refresh") //HttpServlet 클래스 확장 public class Refresh extends HttpServlet { // GET 메서드 요청 처리 메서드 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 자동 로드 갱신 시간 설정 5 초 response.setIntHeader("Refresh", 5); // 응답 내용 유형 설정 response.setContentType("text/html;charset=UTF-8"); //기본 시区和 언어 환경을 사용하여 일정을 얻습니다 Calendar cale = Calendar.getInstance(); //Calendar 타입을 Date 타입으로 변환 Date tasktime=cale.getTime(); //날짜 출력 형식 설정 SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //형식화 출력 String nowTime = df.format(tasktime); PrintWriter out = response.getWriter(); String title = "자동갱신 헤더 설정 - 기본教程網示例"; String docType = "<!DOCTYPE html>\n"; out.println(docType + "<html>\n" + "<head><title>" + title + "</title></head>\n"+ "<body bgcolor=\"#f0f0f0\">\n" + "<h1 align="center">" + title + "</h1>\n" + "<p>현재 시간은:" + nowTime + "</p>\n"); } // POST 메서드 요청을 처리하는 메서드 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
이 테스트 예제는 TomcatTest 프로젝트 아래에 위치하고, 해당 web.xml 설정은 다음과 같습니다:
<?xml version="1.0" encoding="UTF-8"?> <web-app> <servlet <!-- 클래스 이름 --> <servlet-name>Refresh</servlet-name> <!-- 의 패키지 --> <servlet-class>com.w3codebox.test.Refresh</servlet-class> </servlet> <servlet-mapping> <servlet-name>Refresh</servlet-name> <!-- 방문한 웹사이트 --> <url-pattern>/TomcatTest/Refresh</url-pattern> </servlet-mapping> </web-app>
이제, 위의 Servlet을 호출하여, 매 5 현재 시스템 시간이 나타납니다. Servlet을 실행하고 잠시 기다리면 다음과 같은 결과를 볼 수 있습니다: