[JSP&Servlet] JSP : 내장 객체 "response" 정리하기.
[JSP&Servlet] JSP : 내장 객체 "response" 정리하기.
- request 객체가 하는 역할을 어느 정도 이해했다면 그와 반대의 개념인 response 객체를 공부해보자. request객체가 웹 브라우저에서 서버로 전송된 요청 정보를 가지고 있었다면, response객체는 반대로 서버에서 사용자의 웹 브라우저에 전송(응답)할 응답 정보를 가지고 있다.
<9개의 기본 객체>
1.request: 웹브라우저 즉 클라이언트의 요청 정보를 저장한다.
2.response : 웹 브라우저 즉 클라이언트의 요청에 대한 응답 정보를 저장한다.
3. out : JSP 페이지에서 출력할 때 사용되는 출력 스트림 객체이다.
4. session : 하나의 브라우저 내에서 정보를 유지하기 위한 HTTP 세션 정보를 저장한다.
5.page : JSP페이지 를 구현한 자바 클래스 객체이다.
6.pageContext : JSP페이지에 대한 정보를 저장하는 객체이다.
7. application : 웹 애플리케이션의 Context 정보를 저장한다.
8.config : JSP 페이지에 대한 설정 정보를 저장한다. 9.exception : jsp에서 예외가 발생할 때 사용하는 객체이다.
1. response 객체
- 페이지의 헤더 정보를 입력하는 용도, 페이지를 리다이렉트(redirect)하는 용도로 많이 사용된다.
<형식>
response.sendRedirect("http://www.naver.com");
- response 객체가 제공하는 주요 메서드는 아래와 같다.
- response.addCookie(Cookie cookie) : 쿠키 정보를 추가한다.
- response.sendRedirect(String location) : 현재 페이지에서 다른 페이지("지정한 url")로 이동한다.
- response.sendStatus(int status-code) : 상태 정보를 클라이언트로 전송한다.
- response.sendError(int error-code) : 에러 정보를 클라이언트로 전송한다.
- response.sendRedirect("www.naver.com") 메서드는 지정된 url로 이동하는데 이전 request의 form태그를 action으로 이동해주는 방법 이외에 response.sendRedirect() 메서드를 사용하는 방법이 더 많이 사용되기 때문에 알아두자.
- 아래 예시를 통해 간단하게 로그인 비슷한? 값의 요청과 응답을 확인하는 예제를 만들어 보았다.
ex) 로그인 화면
|
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"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인</title>
</head>
<body>
<form method="get" action="07_Login_do.jsp">
<lable for="userid"> 아이디 : </lable><span style="color:blue;">*</span>
<input type="text" id="id" name="id" value=""> <br>
<lable for="userpwd"> 암 호 : </lable><span style="color:blue;">*</span>
<input type="password" id="pwd" name="pwd" value=""> <br>
<input type="submit" value="로그인">
</form>
</body>
</html>
|
cs |
ex) 서블릿 역할의 do
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!--화면에 나올필요없어 계산만하니 html 없앰. jsp 코드만있음. -->
<!--url로 한글 보낼떄 ???로깨지는것을 막기위해 임포트 하여 다음 인코딩방식을 적용함. -->
<%@page import="java.net.URLEncoder"%>
<%
String id = request.getParameter("id");
String name ="홍길동";
String pwd = request.getParameter("pwd");
if(id.equals("hong") && pwd.equals("1234"))
//jsp에서의 특정 페이지 이동 명령.
response.sendRedirect("07_Login_ok.jsp?name="+ URLEncoder.encode(name,"utf-8"));
else
response.sendRedirect("07_Login.jsp");
%>
|
cs |
ex) 로그인 알림 화면
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인 ok</title>
</head>
<body>
<h2>로그인 완료</h2>
<%= request.getParameter("name") %>님 안녕하세요 !
<br>
저희 홈페이지에 방문해주셔서 감사합니다.<br>
즐거운 시간 보내세요 <br>
</body>
</html>
|
cs |
- 1. response.sendRedirect("07_Login_ok.jsp? name="+ URL Encoder.encode(name, "utf-8"));
URL Encoder.encode(name, "utf-8") url의 인코딩 방식 그냥 인코딩이랑 다르기 때문에 한글의 정보를 처리할 때 염두하자! 이를 사용하기 위한 임포트도 해야 한다!<%@page import="java.net.URLEncoder"import="java.net.URL Encoder"%>
만약 인코딩 과정이 없다면 아래처럼???으로 인식된다.
-??? 인코딩 문제 확인.

- 정상 실행 화면


- 정리: response의 sendRedirect메서드를 통해 페이지 이동을 확인해보았고 인코딩을 유념해야 함을 알았다.