-> 블로그 이전

[JSP] response 객체

2022. 3. 18. 15:35Language`/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>