response
* 웹 브라우저에 보내는 응답 정보를 담는다.
response 제공 기능
* 헤더 정보 입력
* 리다이렉트
1. 헤더 정보 전송
* 헤더 추가 메소드
* add~ 메소드 : 기존의 헤더에 새로운 값을 추가할 때 사용.
* set~ 메소드 : 헤더의 값을 새로 지정할 때 사용.
2. 캐시 제어를 위한 응답 헤더 입력
* 새로운 DB를 추가했는데도 웹 브라우저가 출력하지 않는 이유는, 웹 브라우저가 서버가 생성한 결과를 출력하지 않고 캐시에 저장된 데이터를 출력하기 때문이다. 내용이 자주 바뀌는 사이트는 웹 브라우저 캐시가 적용되면 사용자는 변경된 내용을 확인할 수 없게 된다. 이런때에 응답 헤더를 직접 설정해야 한다.
* HTTP는 특수한 응답 헤더를 통해서 웹 브라우저가 응답 결과를 캐시 할 것인지에 대한 여부를 설정할 수 있다.
* 헤더 추가 메소드
응답 헤더 |
설명 |
Cache-Control |
Http 1.1 버전에서 지원하는 헤더. 이 헤더의 값을 "no-cache"로 지정하면 웹 브라우저는 응답 결과를 캐시하지 않는다. "no-cache"로 설정하더라도 응답 내용을 캐시 저장소에 보관할 수 있다. 예를 들면, "no-cache"를 설정하더라도, 웹 브라 우저에 따라 뒤로가기 버튼을 클릭하면 캐시 저장소에 보관된 응답 내용을 사용하기도 한다. 응답 결과가 캐시 저장소 자 체에 보관되지 않도록 하려면, 이 헤더에 "no-cache"를 추가한다. |
pragma |
HTTP 1.0 버전에서 지원하는 헤더. 이 헤더의 값을 "no-cache"로 지정하면 웹 브라우저는 응답 결과를 캐시에 저장하지 않는다. |
Expires |
HTTP 1.0 버전에서 지원하는 헤더. 응답 결과의 만료일을 지정한다. 만료일을 현재 시간보다 이전으로 설정함으로써 캐시에 보관되지 않도록 할 수 있다. |
* 설정
<% response.setHeader("Cache-Control","no-cache"); response.addHeader("Cache-Control","no-cache"); response.setHeader("Pragma","No-cache"); response.setDateHeader("Expires",1L); %>
* response.setDateHeader("Expires",1L); 1970년 1월 1일 이후를 기준으로 1/1000초 단위로 값을 입력한다. 이 코드는 만료일을 1970년 1월 1일 0.001초로 설정하는 것으로 웹 브라우저는 응답 결과를 캐시하지 않는다. (현재 시간보다 이전일로 지정하면 응답을 캐시하지 않는다.)
* 캐시 (Cache)
: 동일한 데이터를 중복해서 로딩하지 않도록 할 때 사용한다. 웹 브라우저는 첫번째 요청 응답 시 응답 결과를 로컬 PC의 임시 보관소인 캐시에 저장한다. 이후, 동일한 URL에 대한 요청이 있으면 WAS에 접근하지 않고 로컬 PC에 저장된 응답 결과를 사용한다. 캐시에 보관된 데이터를 사용하는 경우, WAS에 접근하지 않기 때문에 훨씬 짜르게 응답 결과를 출력할 수 있게 된다. 따라서 변경이 발생하지 않는 JSP의 응답 결과나 이미지, 정적인 HTML 등은 캐시에 보관함으로써 응답 속도를 향상시킬 수 있다.
3. 리다이렉트
* 웹 서버가 웹 브라우저에게 다른 페이지로 이동하라고 응답하는 기능이다.
* 특정 페이지를 실행한 후 지정한 페이지로 이동하길 원할 때 사용하는 기능이다.
* 웹 브라우저에 요청된 jsp 페이지에는 원하는 페이지로 리다이렉트하라고 지정한다. 그러면 웹 브라우저가 웹 서버에 jsp 페이지를 요청하고 그 후 웹 브라우저는 지정된 jsp를 요청하게 된다.
* 사용 메소드
response.sendRedirect(String location)
<%@ page import = "java.sql.*" %>
...
<%
// JSP 페이지에서 필요한 코드를 실행한다.
..
response.sendRedirect("이동할페이지");
%>
* URLEncoder.encode() 메소드를 사용하면 파라미터 값으로 사용될 문자열을 지정한 캐릭터 셋으로 인코딩 할 수 있다.
'WEB > JSP Servlet' 카테고리의 다른 글
웹 어플리케이션 폴더 (0) | 2016.10.27 |
---|---|
JSP 처리과정, 출력버퍼와 응답 (0) | 2016.10.26 |
기본 객체 : request (0) | 2016.10.26 |
스크립트 요소 (0) | 2016.10.26 |
Page 디렉티브 : contentType, import, trimDirectiveWhitespace, pageEncoding (0) | 2016.10.26 |