각진 세상에 둥근 춤을 추자

[JSP] response 객체 본문

JSP

[JSP] response 객체

circle.j 2022. 10. 6. 01:16

 

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