[JSP] response 객체
2022. 3. 18. 15:35ㆍLanguage`/JSP (Java Server Page)
response 객체
Client로부터 request를 받으면 Server는 해당 request에 대한 response를 보내줘야 한다
- 헤더 정보 입력 (HTTP 메시지 헤더)
- 리다이렉트 :: 다른 웹 페이지로 direct 이동
1) Client(웹 브라우저)에 헤더 정보 전송하기 (response)
메소드 | 설명 |
void addDateHeader(String name, long date) | "name" 헤더에 date를 추가 >> 1970년 1월 1일 이후로부터 1/1000초 단위로 설정 |
void setDateHeader(String name, long date) | "name" 헤더의 값을 date로 설정 >> 1970년 1월 1일 이후로부터 1/1000초 단위로 설정 |
void addHeader(String name, String value) | "name" 헤더에 value를 값으로 추가 |
void setHeader(String name, String value) | "name" 헤더의 값을 value로 설정 |
void addIntHeader(String name, int value) | "name" 헤더에 정수 값 value를 추가 |
void setIntHeader(String name, int value) | "name" 헤더의 값을 정수 값 value로 설정 |
boolean containsHeader(String name) | "name" 헤더를 포함하고 있으면 true & 없으면 false |
2) Client(웹 브라우저) 캐시 제어를 위한 response 헤더 입력
새로운 내용을 DB에 추가했음에도 불구하고, 웹 브라우저에 출력되는 내용이 바뀌지 않는 경우가 있다
>> 웹 브라우저가 "Server가 새로 생성한 내용"을 출력하지 않고 캐시에 저장된 데이터를 출력하기 때문
물론 캐시를 사용하면 웹 브라우저에게 빠른 response를 제공할 수 있지만, 캐시에만 의존하면 update된 내용을 받지 못하고 계속 old version을 캐시로부터 제공받는다
response 헤더 | 설명 |
Cache-Control | "HTTP 1.1에서 지원하는 헤더" >> "no-cache"로 설정하면 웹 브라우저는 response를 캐시에 저장하지 않는다 ※ "no-cache"로 설정해도 웹 브라우저가 '뒤로가기'를 클릭하면 캐시 저장소에 임시로 보관된 내용을 사용하기도 한다 >> 여기서 "캐시 저장소"에도 보관하지 않도록 하려면 "no-store"을 추가하면 된다 |
Pragma | "HTTP 1.0에서 지원하는 헤더" >> "no-cache"로 설정하면 웹 브라우저는 response를 캐시에 저장하지 않는다 |
Expires | "HTTP 1.0에서 지원하는 헤더" & 응답 결과의 만료일을 지정 >> 물론 만료일을 현재 시간 이전으로 설정함으로써 캐시에 보관되지 않도록 할 수 있다 |
- HTTP 1.0만 지원하는 웹 브라우저가 있을 수 있기 때문에 "Cache-Control", "Pragma" 둘다 설정하는 것이 좋다
<%
response.setHeader("Cache-Control", "no-cache");
response.addHeader("Cache-Control", "no-store");
response.setHeader("Pramga", "no-cache");
response.setdateHeader("Expires", 1L);
%>
3) Redirect를 통한 페이지 이동
- Server가 Client에게 다른 페이지로 이동하라고 응답하는 기능이다
>> user가 페이지에서 로그인 후, 메인 페이지로 자동으로 이동
response.sendRedirect(String location);
※ Example) Login page
- login.jsp : 로그인하는 페이지 (Client)
- login_server.jsp : 로그인 정보를 받는 Server
- login_success.jsp : 로그인 성공 시 Redirect되는 페이지
- login_fail.jsp : 로그인 실패 시 Redirect되는 페이지
# login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>[response] -> Hello Chap03</title>
</head>
<body>
<form action="login_server.jsp" method="post">
아이디: <input type="text" name="id"/><br><br>
비밀번호: <input type="password" name="password"/><br><br>
<button type="submit">로그인</button>
</form>
</body>
</html>
# login_server.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>[response] -> Hello Chap03</title>
</head>
<%
// 관리자 정보 : [id = admin, password = 1234]
String id = request.getParameter("id");
String password = request.getParameter("password");
if (id.equals("admin") && password.equals("1234")) {
response.sendRedirect("/chap03/response/login_success.jsp");
} else {
response.sendRedirect("/chap03/response/login_fail.jsp");
}
%>
<body>
</body>
</html>
관리자 정보 = [id = admin / password = 1234]
# login_success.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>[response] -> Success!!</title>
</head>
<body>
로그인 성공!!
</body>
</html>
# login_fail.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>[response] -> Fail..</title>
</head>
<body>
로그인 실패...
</body>
</html>