각진 세상에 둥근 춤을 추자
[JSP] response 객체 본문
request 내장 객체가 클라이언트의 요청 정보를 저장하는 역할을 했다면,
response 내장 객체는 그와 반대로 요청에 대한 응답을 웹 브라우저로 보내주는 역할을 한다.
주요 기능으로는 리다이렉트(redirect)와 HTTP 헤더에 응답 헤더 추가가 있다.
sendRedirect(): 페이지 이동하기
간단한 로그인 폼을 제작하여 리다이렉트 기능을 확인해 본다.
(1) Response.jsp: 로그인 폼과 응답 헤더 설정 페이지
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>내장 객체 - response</title>
</head>
<body>
<h2>1. 로그인 폼</h2>
<%
String loginErr = request.getParameter("loginErr");
if (loginErr != null ){
out.println("로그인 실패");
}
%>
<form action="ResponseLogin.jsp" method="post">
아이디: <input type="text" name="user_id"/><br/>
패스워드: <input type="password" name="user_pwd"/><br/>
<input type="submit" value="로그인"/>
</form>
<h2>2. 응답 헤더 설정하기</h2>
<form action="ResponseHeader.jsp" method="get">
날짜 형식: <input type="text" name="add_date" value="2022-10-06"/><br/>
숫자 형식: <input type="text" name="add_int" value="8282"/><br/>
문자 형식: <input type="text" name="add_str" value="홍길동"/><br/>
<input type="submit" value="응답 헤더 설정 & 출력"/>
</form>
</body>
</html>
(2) ResponseLogin.jsp
로그인 폼 영역에 아이디와 패스워드를 입력한 후 [로그인] 버튼을 클릭하면 요청이
<form action="ResponseLogin.jsp" method="post">에 의해 ResponseLogin.jsp 페이지로 전송된다.
ResponseLogin.jsp 파일을 생성한다.
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ResponseLogin</title>
</head>
<body>
<%
String id = request.getParameter("user_id");
String pwd = request.getParameter("user_pwd");
if(id.equalsIgnoreCase("must") && pwd.equalsIgnoreCase("1234")){
response.sendRedirect("ResponseWelcome.jsp");
}
else {
request.getRequestDispatcher("Response.jsp?loginErr=1")
.forward(request, response);
}
%>
</body>
</html>
(3) ResponseWelcome.jsp
화면 인증에 성공했을 때 이동되는 ResponseWelcome.jsp 파일을 생성한다.
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ResponseWelcome.jsp</title>
</head>
<body>
<h2>로그인 성공</h2>
</body>
</html>
로그인에 성공하면 해당 페이지가 출력된다.
로그인에 실패하면 .forward(request, response);에 의해 초기 페이지가 출력된다.
포워드는 이처럼 실행의 흐름만 특정한 페이지로 넘겨주는 역할을 한다.
(4) ResponseHeader.jsp
(1)Response.jsp 내용에서 작성했던 응답 헤더에 값을 추가한다.
<%@page import="java.util.Collection"%>
<%@page import="java.text.SimpleDateFormat"%>
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<%
// 응답 헤더에 추가할 값 준비
SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd");
long add_date = s.parse(request.getParameter("add_date")).getTime();
int add_int = Integer.parseInt(request.getParameter("add_int"));
String add_str = request.getParameter("add_str");
// 응답 헤더에 값 추가
response.addDateHeader("myBirthday", add_date);
response.addIntHeader("myNumber", add_int);
response.addIntHeader("myNumber", 1004);
response.addHeader("myNmae", add_str);
response.setHeader("myName", "유관순");
%>
<html>
<head>
<meta charset="UTF-8">
<title>ResponseHeader.jsp</title>
</head>
<body>
<h2>응답 헤더 정보 출력하기</h2>
<%
Collection<String> headerNames = response.getHeaderNames();
for (String hName : headerNames){
String hValue = response.getHeader(hName);
%>
<li><%= hName %> : <%= hValue %></li>
<%
}
%>
<h2>myNumber만 출력하기</h2>
<%
Collection<String> myNumber = response.getHeaders("myNumber");
for (String myNum : myNumber) {
%>
<li>myNumber : <%= myNum %></li>
<%
}
%>
</body>
</html>
'JSP' 카테고리의 다른 글
[JSP] 액션 태그 - <jsp: include> (0) | 2022.10.11 |
---|---|
[JSP] session 객체 (0) | 2022.10.09 |
[JSP] 내장 객체(Implicit Object) - request (0) | 2022.10.05 |
[JSP] 지시어(Directive) (0) | 2022.10.05 |
[JSP] JSP 파일 기본 구조 (0) | 2022.10.05 |