1.  response 내장 객체의 기능과 사용법

response 내장 객체는 사용자의 요청을 처리한 결과를 서버에서 웹 브라우저로 전달하는 정보를 저장

  ➡️  즉 서버는 응답 헤더와 요청 처리 결과 데이터를 웹 브라우저로 보냄
  ➡️  JSP 컨테이너는 서버에서 웹 브라우저로 응답하는 정보를 처리하기 위해  javax.servlet.http.HttpServletResponse 객체 타입의 response 내장 객체를 사용하여 사용자의 요청에 응답

 


 

1) 페이지 이동 관련 메소드


사용자가 새로운 페이지를 요청할 때와 같이 페이지를 강제로 이동하는 것을 리다이렉션(redirection)
서버는 웹 브라우저에 다른 페이지로 강제 이동하도록 response 내장 객체의 리다이렉션 메소드를 제공
페이지 이동 시에는 문자 인코딩을 알맞게 설정 해야 함

페이지 이동 방법


  📍 포워드(forward) 방식

<jsp:forward page="이동할 페이지"/>

 

  ✓ 현재 JSP 페이지에서 이동할 URL로 요청 정보를 그대로 전달하므로 사용자가 최초로 요청한 정보가 이동된 URL에서도 유효. 그러나 이동된 URL이 웹 브라우저의 주소 창에 나타나지 않고 처음 요청한 URL이 나타나기 때문에 이동 여부를 사용자가 알 수 없음

  📍 리다이렉트(redirect)방식

response.sendRedirect("이동할 페이지")

 

  ✓ 처음 요청받은 현재 JSP 페이지로부터 이동할 URL을 웹 브라우저로 반환. 이때 웹 브라우저에서는 새로운 요청을 생성하여 이동할 URL에 다시 요청을 전송하므로 처음 보낸 요청 정보가 이동된 URL에서는 유효하지 않음. 즉 클라이언트가 새로 페이지를 요청한 것과 같은 방식으로 페이지가 이동. 따라서 이동된 URL이 웹 브라우저의 주소 창에 보임.

페이지 이동 관련 메소드 반환유형 설명
sendRedirect(String url) void 설정한 URL 페이지로 강제 이동

 

<body>
    <%
      response.setHeader("Refresh", "5");
      Calendar calendar = Calendar.getInstance();
      String am_pm;
      int hour = calendar.get(Calendar.HOUR_OF_DAY);
      int minute = calendar.get(Calendar.MINUTE);
      int second = calendar.get(Calendar.SECOND);

      if (hour < 12)
        am_pm = " AM";
      else {
        am_pm = " PM";
        hour = (hour != 12) ? hour - 12 : hour;
      }

      String currentTime = hour + ":" + minute + ":" + second + am_pm;
    %>
    <p>현재 시간은 <b><%=currentTime %></b></p>
    <p><a href="response_data.jsp">구글 홈페이지로 이동하기</a></p>
</body>
// response_data.jsp 파일
<body>
    <%
        response.sendRedirect("https://www.google.com");
    %>
</body>

 


내장 객체로 페이지 이동하기 ▶️  아이디와 비밀번호가 일치하면 성공 페이지로, 그렇지 않으면 로그인 페이지로 이동

 

    1)  폼 문으로 전송받은 아이디와 비밀번호가 일치하면 response01_success.jsp 페이지로 이동.

    2) 일치하지 않으면 response01_failed.jsp 페이지로 이동하도록 response 내장 객체의 sendRedirect() 메서드를 작성

// form 태그 작성
<body>
    <form action="response01_process.jsp" method="post">
      <p> 아 이 디 : <input type="text" name="id">
      <p> 비밀번호 : <input type="text" name="passwd">
      <p> <input type="submit" value="전송">
    </form>
</body>
// response01_process.jsp 파일
<body>

    <%
      request.setCharacterEncoding("utf-8");
      String userid = request.getParameter("id");
      String password = request.getParameter("passwd");

      if (userid.equals("관리자") && password.equals("1234")) {
          out.println("로그인을 성공했습니다!!");
          response.sendRedirect("response01_success.jsp");
      } else {
          out.println("로그인을 실패했습니다.");
          response.sendRedirect("response01_failed.jsp");
      }
    %>

</body>
// response01_success.jsp 파일
<body>
    로그인을 성공했습니다!!
</body>
// response01_failed.jsp 파일
<body>
    <p> 로그인을 실패했습니다.</p>
    <p><a href="./04.jsp"> 로그인가기</a></p>
</body>


 

2) 응답 HTTP 헤더 관련 메소드


응답 HTTP 헤더 관련 메소드는 서버가 웹 브라우저에 응답하는 정보에 헤더를 추가하는 기능을 제공
 ➡️ 헤더 정보에는 주로 서버에 대한 정보가 저장되어 있음

 

메소드 종류
메소드 반환 유형 설명
addCookie(Cookie cookie) void 쿠키를 추가
addDateHeader(String name, long date) void 설정한 헤더 이름 name에 날짜/시간을 추가
addHeader(String name, String value) void 설정한 헤더 이름 name에 value를 추가
addIntHeader(String name, int value) void 설정한 헤더 이름 name에 정수 값 value를 추가
setDateHeader(String name, long date) void 설정한 헤더 이름 name에 날짜/시간을 설정
setHeader(String name, String value) void 설정한 헤더 이름 name에 문자열 값 value를 설정
setIntHeader(String name, int value) void 설정한 헤더 이름 name에 정수 값 value를 설정
containsHeader(String name) boolean 설정한 헤더 이름 name이 HTTP 헤더에 포함되었는지 여부를 확인
getHeader(String name) String 설정한 헤더 이름 name 값을 가져옴

 

response 내장 객체로 5초마다 JSP 페이지 갱신하기 

 

   1) 5초마다 JSP 페이지가 갱신되도록 response 내장 객체의 setIntHeader() 메서드를 작성

   2) 5초마다 JSP 페이지가 갱신된 시간을 출력하도록 표현문 태그 작성

<body>
    <p>이 페이지는 5초마다 새로고침 됩니다.</p>

    <%
      response.setIntHeader("Refresh", 5);
    %>
    <p> <%=(new java.util.Date())%> </p>
</body>


3) 응답 콘텐츠 관련 메소드

 

response 내장 객체는 웹 브라우저로 응답하기 위해 MIME 유형, 문자 인코딩, 오류 메시지, 상태 코드 등을 설정하고 가져오는 응답 콘텐츠 관련 메소드를 제공

메소드 반환 유형 설명
setContentType(String type) void 웹 브라우저에 응답할 MIME 유형을 설정
getContentType() String 웹 브라우저에 응답할 MIME 유형을 가져옴
setCharacterEncoding(String charset) void 웹 브라우저에 응답할 문자 인코딩을 설정
getCharacterEncoding() String 웹 브라우저에 응답할 문자 인코딩을 가져옴
sendError(int status_code, String message) void 웹 브라우저에 응답할 오류(코드 및 오류 메시지)를 설정
setStatus(int statuscode) void 웹 브라우저에 응답할 HTTP 코드를 설정

 


2.  out 내장 객체의 기능과 사용법 

👩🏻‍💻  out 내장 객체는 웹 브라우저에 데이터를 전송하는 출력 스트림 객체

👩🏻‍💻  JSP 컨테이너는 JSP 페이지에 사용되는 모든 표현문 태그와 HTML 일반 텍스트 등을 out 내장 객체를 통해 웹 브라우저에 그대로 전달 

👩🏻‍💻  스크립틀릿 태그에 사용하여 단순히 값을 출력 하는 표현문 태그(<%= ...%>)와 같은 결과를 얻을 수 있음

 

메소드 반환 유형 설명
print(String str) void 설정된 str 값을 웹 브라우저에 출력
println(String str) void 설정된 str 값을 웹 브라우저에 출력. 이 때 줄 바꿈이 적용되지 않음.
newLine() void 줄바꿈을 출력
getBufferSize() int 현재 출력 버퍼의 크기를 가져옴
getRemaining() int 현재 남아 있는 출력 버퍼의 크기를 가져옴
clear() void 현재 출력 버퍼에 저장되어 있는 내용을 웹 브라우저에 전송하지 않고 비움. 만약 버퍼가 이미 플러시 되었다면 IOException이 발생.
clearBuffer() void 현재 출력 버퍼에 저장되어 있는 내용을 웹 브라우저에 전송하지 않고 비움. 만약 버퍼가 이미 플러시 되었다면 IOException이 발생하지 않음
flush() void 현재 출력 퍼버에 저장되어 있는 내용을 웹 브라우저에 전송하고 비움
isAutoFlush() boolean 출력 버퍼가 채워졌을 때의 처리를 결정. 자동으로 플러시 하는 경우 true를 반환하고, 그렇지 않은 경우 false를 반환

 

 

 

 

[ 내용 참고 : IT 학원 강의 ]

+ Recent posts