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) |
2 | 문자열 인코딩URL(String url) |
3 | boolean containHeader(문자열 이름) |
4 | 부울 isCommitted() |
5 | void addCookie(쿠키쿠키) |
6 | void addDateHeader(문자열 이름, 긴 날짜) |
7 | void addHeader(문자열 이름, 문자열 값) |
8 | void addIntHeader(문자열 이름, 정수 값) |
9 | void flashBuffer() |
10 | 무효 재설정() |
11 | void ResetBuffer() |
12 | void sendError(int sc) |
13 | void sendError(int sc, String msg) |
를 사용하여 클라이언트에 오류 응답을 보냅니다. 14 | void sendRedirect(문자열 위치) |
을 사용하여 클라이언트에게 임시 간접 응답 보내기 15 | void setBufferSize(int 크기) |
16 | void setCharacterEncoding(String charset) |
과 같은 응답 인코딩 집합(MIME 문자 집합)을 지정합니다. 17 | void setContentLength(int len) |
를 설정하는 데 사용됩니다. 18 | void setContentType(문자열 유형) |
19 | void setDateHeader(문자열 이름, 긴 날짜) |
20 | void setHeader(문자열 이름, 문자열 값) |
21 | void setIntHeader(문자열 이름, int 값) |
22 | void setLocale(Locale loc) |
23 | void 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 데모를 살펴볼 수 있습니다.
위 코드를 직접 수정하고 다른 방법을 시도하여 더 깊은 통찰력을 얻을 수도 있습니다. .