JSP에서 HTTP 메시지 응답 헤더 제어하기
많지는 않지만 JSP에서 현재 JSP페이지가 처리된 후 응답 결과를 HTTP 응답메시지를 통해 보낼 때 응답 메시지의 헤더를 제어해야 하는 경우가 있습니다. 

http 응답 메시지에 헤더 정보들(메시지 두 번째 줄 부터)
HTTP/1.1 200 200
Date: Tue, 13 Feb 2018 09:53:21 GMT
Server: Apache
Access-Control-Allow-Origin: http://dololak.tistory.com
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: T-Ajax
Access-Control-Allow-Methods: GET, HEAD, POST, OPTIONS
Allow: GET, HEAD, POST, PUT, DELETE, OPTIONS, PATCH
Content-Length: 0
Connection: close

HTTP 메시지에는 HTTP 표준에 정의된 수많은 기능들의 헤더들이 있는데, 예를 들어 응답된 컨텐츠 타입이 무엇인지 알려주는 Content-Type과 같은 주요 헤더값들은 JSP page 디렉티브 속성값을 사용하면 자동으로 제어가 되지만 브라우저 캐시 제어등의 경우에는 직접 헤더 정보를 설정해 주어야 합니다.

헤더 정보 제어를 위해서는 JSP의 기본 객체 중 response 객체를 사용합니다.
앞에서도 말했듯이 JSP에서 response 객체는 다른 스크립트 요소를 통해 많은 기능을 이용하기 때문에 자주 사용되지는 않는 기본객체 입니다.다만 헤더정보 조작을 위해서 다음과 같은 메서드들이 사용됩니다.

response 기본 객체의 HTTP 헤더 조작 관련 메서드
메서드
설명

addDateHeader(String name, long date)
추가할 헤더값이 날짜 형식인 경우 사용합니다.
정수를 입력하는데 1970-01-01 00:00:00 000(ms) 를 기준으로 흘러간 시간을 밀리초(ms 1/1000s) 단위로 입력합니다. 
1L 인 경우 1970-01-01 00:00:00 001(ms) 를 의미합니다. 
addHeader(String name, String value) 추가할 헤더이름을 name에, 추가할 헤더값을 value에 넣어 헤더를 추가 합니다.
addIntHeader(String name, int value)
추가할 헤더이름을 name에, 추가할 헤더값을 value에 넣어 헤더를 추가 합니다.
setDateHeader(String name, long date)
설정할 헤더값이 날짜 형식인 경우 사용합니다.
setHeader(String name, int value)
설정할 헤더이름을 name에, 설정할 헤더값을 value에 넣습니다.
setIntHeader(String name, int value)
설정할 헤더이름을 name에, 설정할 헤더값을 value에 넣습니다.
containsHeader(String name)
이름이 name인 헤더가 응답 메시지에 포함되어 있으면 true를, 그렇지 않으면 false를 리턴합니다.

add와 set 으로 시작하는 메서드가 있는데 둘의 차이는 기존 헤더값이 있는경우 새로 추가하느냐 수정하느냐 입니다.
예를 들어 setDateHeader() 메서드는 addDateHeader() 메서드와 형식은 같으나, add 메서드는 같은 name의 헤더값이 있어도 헤더 정보를 새로 추가하지만 setDateHeader() 메서드의 경우에는 같은 name의 헤더가 존재하는 경우 값을 변경합니다.


이어지는 글

블로그 이미지

도로락

IT, 프로그래밍, 컴퓨터 활용 정보 등을 위한 블로그

,