JSP-서버 응답
이 장에서는 JSP의 서버 응답에 대해 설명합니다. 웹 서버가 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 in the example), 상태 코드 (200 in the example)및 상태 코드에 해당하는 매우 짧은 메시지 (OK in the example).
다음은 웹 서버에서 브라우저로 돌아가는 가장 유용한 HTTP 1.1 응답 헤더의 요약입니다. 이 헤더는 웹 프로그래밍에서 자주 사용됩니다.
S. 아니. | 헤더 및 설명 |
---|---|
1 | Allow 이 헤더는 요청 방법 (GET, POST등) 서버가 지원합니다. |
2 | Cache-Control 이 헤더는 응답 문서를 안전하게 캐시 할 수있는 상황을 지정합니다. 값을 가질 수 있습니다.public, private 또는 no-cache 등. 공용은 문서가 캐시 가능함을 의미하고, 개인은 문서가 단일 사용자 용이며 개인 (비공유) 캐시에만 저장 될 수 있음을 의미하며 캐시 없음은 문서가 캐시되지 않아야 함을 의미합니다. |
삼 | Connection 이 헤더는 지속적 HTTP 연결을 사용할지 여부를 브라우저에 지시합니다. 가치close 지속적인 HTTP 연결을 사용하지 않도록 브라우저에 지시하고 keep-alive 지속적인 연결을 사용하는 것을 의미합니다. |
4 | Content-Disposition 이 헤더를 사용하면 브라우저가 사용자에게 주어진 이름의 파일에 응답을 디스크에 저장하도록 요청하도록 요청할 수 있습니다. |
5 | Content-Encoding 이 헤더는 전송 중에 페이지가 인코딩 된 방식을 지정합니다. |
6 | Content-Language 이 헤더는 문서 작성 언어를 나타냅니다. 예를 들면en, en-us, ru, 기타 |
7 | Content-Length 이 헤더는 응답의 바이트 수를 나타냅니다. 이 정보는 브라우저가 지속적 (keep-alive) HTTP 연결을 사용하는 경우에만 필요합니다. |
8 | Content-Type 이 헤더는 MIME (Multipurpose Internet Mail Extension) 응답 문서의 유형. |
9 | Expires 이 헤더는 콘텐츠가 오래된 것으로 간주되어 더 이상 캐시되지 않는 시간을 지정합니다. |
10 | Last-Modified 이 헤더는 문서가 마지막으로 변경된시기를 나타냅니다. 그런 다음 클라이언트는 문서를 캐시하고If-Modified-Since 이후 요청의 요청 헤더. |
11 | Location 이 헤더는 300 년대에 상태 코드가있는 모든 응답에 포함되어야합니다. 문서 주소를 브라우저에 알립니다. 브라우저는 자동으로이 위치에 다시 연결하고 새 문서를 검색합니다. |
12 | Refresh 이 헤더는 브라우저가 업데이트 된 페이지를 요청하는 시간을 지정합니다. 페이지가 새로 고쳐지는 시간 (초)을 지정할 수 있습니다. |
13 | Retry-After 이 헤더는 503 (Service Unavailable) 클라이언트에게 요청을 얼마나 빨리 반복 할 수 있는지 알려주는 응답입니다. |
14 | Set-Cookie 이 헤더는 페이지와 관련된 쿠키를 지정합니다. |
HttpServletResponse 객체
응답 개체는 javax.servlet.http.HttpServletResponse object. 서버가 요청 개체를 만드는 것처럼 클라이언트에 대한 응답을 나타내는 개체도 만듭니다.
응답 객체는 새 HTTP 헤더 생성을 처리하는 인터페이스도 정의합니다. 이 개체를 통해 JSP 프로그래머는 새 쿠키 또는 날짜 스탬프, HTTP 상태 코드 등을 추가 할 수 있습니다.
다음 메소드를 사용하여 서블릿 프로그램에서 HTTP 응답 헤더를 설정할 수 있습니다. 이러한 메서드는 HttpServletResponse 개체 와 함께 사용할 수 있습니다 . 이 개체는 서버 응답을 나타냅니다.
S. 아니. | 방법 및 설명 |
---|---|
1 | String encodeRedirectURL(String url) 다음에서 사용하기 위해 지정된 URL을 인코딩합니다. sendRedirect 메소드 또는 인코딩이 필요하지 않은 경우 URL을 변경하지 않고 반환합니다. |
2 | String encodeURL(String url) 세션 ID를 포함하여 지정된 URL을 인코딩하거나 인코딩이 필요하지 않은 경우 URL을 변경하지 않고 반환합니다. |
삼 | 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) 클라이언트로 전송되는 응답의 문자 인코딩 (MIME 문자 집합)을 설정합니다 (예 : UTF-8). |
17 | void setContentLength(int len) HTTP 서블릿에서 응답의 콘텐츠 본문 길이를 설정합니다. 이 메서드는 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) 이 응답에 대한 상태 코드를 설정합니다. |
HTTP 헤더 응답 예
다음 예제는 setIntHeader() 설정 방법 Refresh 디지털 시계를 시뮬레이션하는 헤더-
<%@ page import = "java.io.*,java.util.*" %>
<html>
<head>
<title>Auto Refresh Header Example</title>
</head>
<body>
<center>
<h2>Auto Refresh Header Example</h2>
<%
// Set refresh, autoload time as 5 seconds
response.setIntHeader("Refresh", 5);
// Get current time
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("Current Time is: " + CT + "\n");
%>
</center>
</body>
</html>
이제 위의 코드를 main.jsp액세스를 시도하십시오. 다음과 같이 5 초마다 현재 시스템 시간이 표시됩니다. JSP를 실행하십시오. 다음과 같은 출력이 표시됩니다. −
Auto Refresh Header Example
Current Time is: 9:44:50 PM
비슷한 방법으로 다른 방법을 시도해 볼 수 있습니다.