JSP 서버 응답


Response 응답 객체는 주로 JSP 컨테이너에서 처리한 결과를 클라이언트로 다시 전송하는 객체입니다. 쿠키, HTTP 파일 헤더 정보 등 응답 변수를 통해 HTTP 상태를 설정하고 클라이언트에 데이터를 보낼 수 있습니다.

일반적인 응답은 다음과 같습니다.

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

상태 줄에는 HTTP/1.1과 같은 HTTP 버전 정보, 200과 같은 상태 코드 및 매우 짧은 메시지가 포함됩니다. OK와 같은 상태 코드입니다.

다음 표에는 네트워크 프로그래밍에서 자주 볼 수 있는 HTTP1.1 응답 헤더의 가장 유용한 부분이 요약되어 있습니다.

응답 헤더설명
허용                 서버에서 지원하는 요청 방식 지정(GET, POST 등)
캐시 제어                 응답 문서를 안전하게 캐시할 수 있는 상황을 지정합니다. 일반적으로 값은 public, private 또는 no-cache 등입니다. 공개는 문서를 캐시할 수 있음을 의미하고, 비공개는 문서가 단일 사용자에게만 제공되고 개인 캐시만 사용할 수 있음을 의미합니다. 캐시 없음은 문서가 캐시되지 않음을 의미합니다.
연결                 지속적인 HTTP 연결을 사용할지 여부를 브라우저에 지시합니다. closevalue는 브라우저에 지속적인 HTTP 연결을 사용하지 않도록 지시하는 반면, 연결 유지는 지속적인 연결을 사용한다는 것을 의미합니다.
내용-처분                   브라우저가 사용자에게 주어진 이름
으로 응답을 디스크에 저장하도록 요청합니다. 콘텐츠 인코딩                 전송 중 페이지의 인코딩 규칙 지정
                    내용-언어                 en, en-us, ru 등과 같이 문서를 표현하는 데 사용되는 언어입니다.
콘텐츠 길이                 응답의 바이트 수를 나타냅니다. 브라우저가 지속적인(연결 유지) HTTP 연결을 사용하는 경우에만 유용합니다
                         콘텐츠 유형                  
문서에서 사용되는 MIME 유형을 나타냅니다. 만료                 만료 시점을 지정하고 캐시에서 제거
                       최종 수정                 문서가 마지막으로 수정된 시기를 나타냅니다.클라이언트는 문서를 캐시하고 후속 요청에 If-Modified-Since 요청 헤더
를 제공할 수 있습니다. 위치                       상태 코드가 있는 모든 응답 주소를 포함하여 300초 이내에 브라우저가 자동으로 다시 연결되어 새 문서를 검색합니다.
새로고침                 브라우저가 페이지 업데이트를 요청하는 빈도를 나타냅니다.
재시도 후               503(서비스를 사용할 수 없음)과 함께 사용하여 사용자에게 요청이
에 응답하는 데 걸리는 시간을 알려줍니다. 세트-쿠키                 현재 페이지에 해당하는 쿠키를 지정

HttpServletResponse 클래스

응답 객체는 javax.servlet.http.HttpServletResponse 클래스의 인스턴스입니다. 서버가 요청 객체를 생성하는 것처럼 클라이언트 응답도 생성합니다.

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

다음 표에는 HTTP 응답 헤더를 설정하는 데 사용되는 메서드가 나열되어 있습니다. 이러한 메서드는 HttpServletResponse 클래스에서 제공됩니다.

S.N. 방법설명
1문자열 encodeRedirectURL(문자열 url)


sendRedirect() 메서드에서 사용하는 URL을 인코딩합니다
2문자열 인코딩URL(String url)


URL을 인코딩하고 세션 ID가 포함된 URL을 반환합니다
3boolean containHeader(문자열 이름)


지정된 응답 헤더가 존재하는지 여부를 반환합니다
4부울 isCommitted()


응답이 클라이언트에 제출되었는지 여부를 반환합니다
5void addCookie(쿠키쿠키)


응답에 지정된 쿠키를 추가합니다
6void addDateHeader(문자열 이름, 긴 날짜)


지정된 이름의 응답 헤더 및 날짜 값 추가
                       7void addHeader(문자열 이름, 문자열 값)


지정된 이름의 응답 헤더와 값을 추가합니다
                     8void addIntHeader(문자열 이름, 정수 값)


지정된 이름의 응답 헤더와 int 값을 추가합니다
9void flashBuffer()


캐시된 콘텐츠를 클라이언트에 쓰기
10무효 재설정()


상태 코드 및 다양한 응답 헤더
                    11void ResetBuffer()


응답 헤더 및 상태 코드를 제외한 기본 캐시 데이터 지우기
12void sendError(int sc)


지정된 상태 코드로 클라이언트에 오류 응답을 보낸 다음 캐시를 삭제합니다
13void sendError(int sc, String msg)


지정된 상태 코드와 메시지
를 사용하여 클라이언트에 오류 응답을 보냅니다.                       14void sendRedirect(문자열 위치)


지정된 URL
을 사용하여 클라이언트에게 임시 간접 응답 보내기                        15void setBufferSize(int 크기)


응답 본문의 캐시 크기 설정
16void setCharacterEncoding(String charset)


UTF-8
과 같은 응답 인코딩 집합(MIME 문자 집합)을 지정합니다. 17void setContentLength(int len)


HTTP 서블릿에서 응답 콘텐츠의 길이를 지정합니다. 이 방법은 HTTP Content-Length 헤더
를 설정하는 데 사용됩니다. 18void setContentType(문자열 유형)


응답이 아직 제출되지 않은 경우 응답의 콘텐츠 유형을 설정하세요
19void setDateHeader(문자열 이름, 긴 날짜)


지정된 이름과 값을 사용하여 응답 헤더의 이름과 내용을 설정합니다.
                  20void setHeader(문자열 이름, 문자열 값)


지정된 이름과 값을 사용하여 응답 헤더의 이름과 내용을 설정합니다.
                21void setIntHeader(문자열 이름, int 값)


지정된 이름과 값을 사용하여 응답 헤더의 이름과 내용을 설정합니다.
                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>php中文网(php.cn)</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초마다 현재 시스템 시간을 표시합니다.

다음 Gif 데모를 살펴볼 수 있습니다.

jsp1.gif

위 코드를 직접 수정하고 다른 방법을 시도하여 더 깊은 통찰력을 얻을 수도 있습니다. .