본문 바로가기

IT

5. JSP - 내장객체 response

* respense 객체의 이해

- 웹 브라우저의 요청에 응답하는 것을 response라고 한다.

- 이러한 응답의 정보를 가지고 있는 객체를 response객체라고 한다.

 

-response객체 주요 메서드

1. getCharacterEncoding(): 응답할 때의 문자의 인코딩 형태를 구한다.

2. addCookie(Cookie c) : 쿠키를 지정한다.

3. sendRedirect(URL) :지정한 url로 이동한다.

 

ex) 로그인 틀리면 -> 틀렸다는 메시지와 다시 로그인 창으로 강제로 돌아가야 된다.

      게시글을 작성 -> 게시글 메인 창으로  강제로 돌아가야 된다


sendRedirect(URL)를 사용하는 페이지를 만들어보자.

아래 소스코드를 실행시키면 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	
	<form action ="res_basic02.jsp" method="post">
		- 당신의 나이는?? <input type="text" name="age" size="5"/>
		<input type="submit" value="확인" />
	</form>

</body>
</html>

아래 코드들 중 하나로 바로 넘어간다. 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<h3> 성인입니다. 주류를 구매할 수 있습니다. </h3>
<a href="res_basic01.jsp">처음으로</a>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<h3> 미성년자입니다. 주류를 구매할 수 없습니다. </h3>
<a href="res_basic01.jsp">처음으로</a>
</body>
</html>

이렇게 바로 넘어 기기 위한 중간 매개체 코드는

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!-- 페이지 중계 역할을 한다.!!!!!! -->
<%
 	String strAge = request.getParameter("age");
	int age = Integer.parseInt(strAge);
	
	//객체가 제공하는 sendRedirect() 메서드의 매개값으로 url주소를 적으면 해당
	//페이지로 강제 이동합니다.
	String url = "http://localhost:8080/JSPBasic/JspObjResponse/res_basic_no.jsp";
	
	if(age >= 20 ) {
		response.sendRedirect(url);	
	} else{
		response.sendRedirect("res_basic_no.jsp");
		
	}
%>

 위 코드를 보면 response.sendRedirect를 통해 바로 전달됨을 확인할 수 있다.

 


퀴즈 ( sendRedirect 사용 )

- res_login_form.jsp에서는 넘어온 아이디 값과 비밀번호 값을 받아서 처리한다.
만약 아이디가 'abc1234'이고 비밀번호가 'xyz9876'이라면 아이디가 일치하지 않았을 경우
'res_id_fail.jsp'로 리다이렉팅 해서 '존재하지 않는 회원입니다.'를 브라우저에 출력하자.
아이디가 일치할 경우 비밀번호도 확인해서 틀렸을 경우 'res_pw_fail.jsp'로 리다이렉팅해서 '비밀번호가 틀렸습니다.'를 브라우저에 출력해라.
iD와 PW가 전부 일치했을 경우 'res_welcome.jsp'로 리다이렉팅 하여 '회원님 반갑습니다'를 출력해라.

 

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<%-- head에 내부 스타일 적용 --%>
<%--
	- 태그에 내부 스타일 시트방식으로 디자인을 적용하려면 선택자를 이용한다.
	- 클래스 선택자: .[클래스이름]
	- 아이디 선택자: #[아이디 이름]
	- 태그 선택자: [태그 이름]
 --%>
 <style type="text/css">
 .login_btn {
 	background-color:yellow;
 	width: 50px;
 	height: 50px;
 	font-family:cursive;
 	padding: 2px;
 }
 </style>
</head>
<body>
<%--
	* CSS(Cascade Style Sheet)
	-HTML에 디지인 요소를 적용하는 언어는 CSS이다.
	-CSS를 HTML에 적용하는 방식에는 3가지 방식이있다.
	1. 인라인 스타일 시트 - 태그 내부에 해당 태그에만 적용되는 스타일을 지정.
	2. 내부 스타일 시트 - 태그의 스타일을 head태그에서 따로 지정.
	3. 외부 스타일 시트 - 외부에 .css파일을 따로 만들어 디자인소스만 모두 지정한 뒤 HTML에서
	                  링크를 통해 로딩시킴.
	****CSS 우선적용 순위: 인라인 > 내부 > 외부
 --%>
 <!-- div태그에 인라인 스타일 적용 -->
<div align="center" style="border: 2px dashed blue; width: 80%;">
	<h3>sendRedirect 로그인 연습</h3> <hr/>
	<form action = "res_login_ok.jsp" method = "post">
		<table border = "1">
			<tr>
			
				<td><input type="text" name="id" size="10px" placeholder="ID를 입력!"/></td>
				<td rowspan="2"><input class="login_btn" type="submit" value="로그인"/></td>
			</tr>
			<tr>
				<td><input type="password" name="pw" size="10px" placeholder="PW를 입력"/></td>
			</tr>
	
		</table>
	
	</form>
</div>
</body>
</html>

 

 중간 매개체 역할 코드

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%--중간 역할 --%>
<% 
	String id = request.getParameter("id");
	String pw = request.getParameter("pw");
	
	if(id.equals("abc1234")) {
		if(pw.equals("1234")){
			response.sendRedirect("res_welcome.jsp");
		}else {
			response.sendRedirect("res_pw_fail.jsp");
		}
	}else{
		response.sendRedirect("res_id_fail.jsp");
	}
%>

로그인성공시 

비밀번호 오류

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
 	<h3>로그인 실패! 비밀번호가 틀렸습니다.</h3>
	<a href="res_login_form.jsp">로그인 페이지로</a>
</body>
</html>