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

비슷한 방법으로 다른 방법을 시도해 볼 수 있습니다.