Link Search Menu Expand Document

Response Implicit Object

Table of contents

  1. Response Implicit Object
    1. Response Implicit Object Basic
    2. Response Header Method
    3. Cache Control Response Header on Web Browser
    4. Add Header Method
    5. Moving Pages Method
      1. URLEncoder.encode()

Response Implicit Object

Response Implicit Object Basic

웹 서버가 웹브라우저에 전송하는 응답정보를 가지고 있음

▸ 제공하는 기능 1. 헤더정보 입력 2. 리다이렉트 등이 있음

▸ 사용자의 요청을 처리한 결과를 서버에서 웹 브라우저로 전달하는 정보를 저장하고 서버는 응답 헤더와 요청 처리 결과 데이터를 웹 브라우저로 보냄

▸ JSP 컨테이너는 서버에서 웹 브라우저로 응답하는 정보를 처리하기 위해 javax.servlet.http.HttpServelteResponse 객체 타입의 response 내장 객체를 사용하여 사용자의 요청에 응답

▸ response객체는 request객체와 반대의 기능을 가지고 있음

Response Header Method

응답 HTTP 헤더 관련 메소드

▸ add는 기존의 헤더에 새로운 값을 추가할 때 사용

▸ set은 헤더의 값을 새로 지정할 때 사용

메서드설명
addDateHeader(String name, long date)name헤더에 date값을 추가
addHeader(String name, String value)name 헤더에 value값을 추가
addIntHeader(String name, int value)name 헤더에 int값을 추가
setHeader(String name, String value)name 헤더에 value값을 지정
setIntHeader(String name, int value)name 헤더에 정수값을 지정
setDateHeader(String name, long date)name 헤더에 date값을 지정

Cache Control Response Header on Web Browser

웹브라우저에 캐쉬 제어관련 응답헤더

jsp를 비롯한 웹어플리케이션을 개발할 경우 새로운 내용을 DB에 추가했음에도 웹브라우저에 출력되는 내용이 변경되지 않는 경우가 있는데 그 이유중 하나는 웹브라우저가 서버가 생성한 결과를 출력하지 않고 캐시에 저장된 데이터를 출력하기 때문

웹 브라우저는 첫 번째 요청시에 응답결과를 로컬피씨의 임시저장소인 캐시에 저장

이후 동일한 URL에 대한 요청이 있을 경우에 WAS에 접근하지 않고 로컬피씨에 저장된 응답결과를 사용함

캐시에 보관된 데이터를 사용할 경우 서버에 접근하지 않기 때문에 훨씬 빠른결과를 웹브라우저에 출력할 수 있음

따라서 변경이 발생하지 않은 경우에 JSP 응답결과나 이미지, 정적인 html 등은 캐시에 보관함으로써 웹 브라우저의 응답속도를 향상시킬 수 있음

캐시(Cash)란?

웹 브라우저가 WAS에 jsp실행을 요청하고 잠시 뒤에 동일한 jsp실행을 요청한 경우 첫 번째 요청과 두 번째 요청사이에 결과 차이가 없을 경우에 불필요한 응답결과를 반복해서 요청한 셈이 됨

캐시는 이렇게 동일한 데이터를 중복해서 로딩하지 않도록 할 경우에 사용됨

Add Header Method

응답 헤더와 관련된 헤더

▸ 특수한 응답 헤더를 통해서 웹 브라우저가 응답 결과를 캐시할 것인지에 대한 여부를 설정할 수 있음

▸ 브라우저마다 설정이 다르기 때문에 Cache-Control 응답 헤더와 Pragma응답 헤더를 모두 설정해주는 게 좋음

응답헤더설명
Cache-Control이 헤더값을 “no-cache”로 지정하면 웹브라우저는 응답결과를 캐시에 사용하지 않음
Pragma이 헤더값을 “no-cache”로 지정하면 웹브라우저는 응답결과를 캐시에 사용하지 않음
Expires응답결과의 만료시간을 지정한다

예시

<%
response.setHeader("Cache-Control", "no-cache");
response.addHeader("Cache-Control", "no-store");
response.setHeader("Pragma", "no-cache");
response.setHeader("Expires", "1L");
%>

&#9656; 1L의 만료일은 1970.1.1일0시0분0.001초

Moving Pages Method

페이지 이동 = 리다이렉션(redirection), 사용자가 새로운 페이지를 요청할 때와 같이 페이지를 강제로 이동하는 것

▸ 반환유형 void

▸ 페이지 이동 시에는 문자 인코딩을 알맞게 설정해야 함

▸ response 객체에서 가장 많이 사용되는 기능 중 하나임

syntax

<% response.sendRedirect(“String location”); %>

<%
String id = request.getParameter("id");
if(id!=null && id.equals("sohyang")){
	response.sendRedirect("jsp02_09_parameters.jsp");
}else{
%>

forward와의 차이

요청을해서 A라는 페이지로 이동해주세요, 하는데 요청자에게 block이 되서 정보를 제한적으로 이동(내가 갖고 있는 페이지에서만 이동이 가능)

redirect를 하게되면 내가 갖고 있지 않더라도 요청자에게 정보를 공개적으로 제공(내가 갖고 있지 않더라도 페이지 이동 가능)

URLEncoder.encode()

웹 서버에 전송할 파라미터 값을 알맞게 인코딩 해야하는데 그 파라미터를 자동으로 인코딩 시켜주는 메소드

파라미터값으로 사용될 문자열을 지정한 캐릭터 셋으로 인코딩 할 수 있음

syntax

<%@ page import = "java.net.URLEncoder" %>
<%
String value = "자바"
String encodedValue = URLEncoder.encode(value, "utf-8");
response.sendRedirect("String location?name=" + encodedValue)
%>

이 웹사이트는 jekyll로 제작되었습니다. Patrick Marsceill, Distributed by an MIT license.