request객체가 사용자의 요청을 처리하는 객체라면 response는 사용자 요청에 대한 응답처리를 해주는 객체 입니다.

서블릿클래스에서의 doPost, doGet메소드의 두번째 파라미터의 역할을 합니다.

그런데 하나 중요한 점이 있습니다.

out내장변수는 JspWriter타입 입니다. response내장변수의 PrintWriter객체와 사용방법이 같습니다만, 이 둘을 같이 사용해서는 안됩니다.

JspWriter와 PrintWriter는 스트림형태로 출력을 하는데 송신쪽과 수신쪽 사이에 가상의 통로를 만들게 됩니다.

그러니 이 두개를 같이 사용한다면 두개의 통로가 생기는 샘이죠.

이럴경우 전송순서에 문제가 생겨 원하는 결과를 보지 못할 수도 있습니다.


response가 제공하는 여러 기능 중 리다이렉트 기능을 살펴 보겠습니다.

리다이렉트란 웹서버에게 요청하면 웹 서버가 웹 브라우저에게 '다른 페이지로 이동해!' 라고 지시하는 기능입니다.

예제로 비밀번호를 입력하게 하고 그 비밀번화 맞을떄와 다륻때의 해당되는 페이지로 리다이렉트 되도록 해보겠습니다.

login.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>비밀번호 입력</title>
</head>
<body>
<form action="loginCheck.jsp" method="get">
<p>비밀번호 <input type="password" name="password">
<input type="submit" value="확인"></p>
</form>
</body>
</html>
cs

위와 같이 비밀번호를 입력할 수 있는 페이지를 작성하였습니다.

틀린비밀번호를 입력했음을 보여드리기 위해 일부러 get방식으로 하였습니다.

loginCheck.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
    String pwd = request.getParameter("password");
    if(pwd.equals("2235")){
        response.sendRedirect("loginOk.jsp");
    }else{
%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>로그인 실패!!</title>
</head>
<body>
    <p style="color:red">비밀번호가 일치하지 않습니다.</p>
</body>
</html>
<%}%>
cs

그리고 위와 같이 입력한 비밀번호가 2235와 일치하면 loginOk.jsp로 리다이렉트하고

틀리다면 '비밀번호가 일치하지 않습니다'가 출력되도록 하였습니다.


리다이렉트 기능을 하기 위해서는 6번라인 처럼 sendRedirect()를 사용하시면 됩니다. 


실행을 해봅시다~



여기서 저는 먼저 틀린 비밀번호를 입력해보겠습니다.


주소표시줄에 보시듯 2222라고 입력하였습니다. 

우리가 원하는 화면이 출력이 되었네요.

그러면 이번엔 알맞은 비밀번호를 입력 해보겠습니다.


우리가 원하는 화면이 출력되었습니다 ^^~


ㅎㅎ 재밌죠!!?


다음은 application 내장변수에 대해 포스팅 해보겠습니다.