티스토리 뷰
3. response 내장 객체의 기능과 사용법
response 내장 객체는 사용자의 요청을 처리한 결과를 서버(=톰캣)에서 웹 브라우저(=클라이언트)로 전달하는 정보를 저장한다.
3-1. 페이지 이동 관련 메소드
리디렉션은 사용자가 새로운 페이지를 요청할때와 같이 페이지를 강제로 이동하는 것이다.
페이지 이동 시에는 문자 인코딩을 알맞게 설정해야한다.
페이지 이동 관련 메소드 | 반환 유형 | 설명 |
sendRedirect(String url) | void | 설명한 URL 페이지로 강제 이동한다. |
페이지 이동 방법은 두가지가 있다.
1. 포워드 방식
현재 JSP 페이지에서 이동할 URL로 요청 정보를 그대로 전달한다.
그렇기 때문에 사용자가 최초로 요청한 정보가 이동된 URL에서도 유효하다.
하지만, 이동된 URL이 웹 브라우저의 주소 창에 나타나지 않고 처음 요청한 URL이 나타나기 때문에 이동 여부를 사용자가 알 수 없다. 파라미터를 가지고 있다.
<jsp:forward page="이동 페이지"/>
2. 리다이렉트 방식
처음 요청받은 현재 JSP 페이지로부터 이동할 URL을 웹 브라우저로 반환한다.
웹 브라우저는 새로운 요청을 생성하여 이동할 URL에 다시 요청을 전송하므로 처음보낸 요청 정보가 이동된 URL에서 유효하지 않다.
클라이언트가 새로운 페이지를 요청한 것과 같은 방식으로 페이지가 이동한다.
갔다가 돌아오므로 맨 마지막 줄에 사용해야한다.
response.sendRedirect("이동할 페이지")
<%@ 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>
<%
response.sendRedirect("http://www.google.com");
%>
</body>
</html>
ex) response 내장 객체로 페이지 이동하기
5-4
response01
<%@ 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="response01_process.jsp" method="post">
<p>아 이 디 : <input type="text" name="id">
<p>비밀번호 : <input type="text" name="passwd">
<p><input type="submit" value="전송">
</form>
</body>
</html>
폼 태그를 response01_process와 연결해주었고 method는 post 방식을 사용했다.
method는 get과 post 방식 두개가 있는데 post 방식은 입력한 정보가 url에 보이지 않고 보안성이 좋다.
response01_process
<%@ 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>
<%
request.setCharacterEncoding("utf-8");
String userid = request.getParameter("id");
String password = request.getParameter("passwd");
if(userid.equals("관리자") && password.equals("1234")){
response.sendRedirect("response01_sucess.jsp");
}
else{
response.sendRedirect("response01_failed.jsp");
}
%>
</body>
</html>
입력 받은 아이디와 비밀번호가 일치하면 response01_sucess.jsp로 이동하고
아니면 response01_failed.jsp 로 이동하도록 작성했다.
response01_sucess
<%@ 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>
로그인을 성공했습니다!!
</body>
</html>
response01_failed
<%@ 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>
<p>로그인을 실패했습니다.
<p> <a href="./response01.jsp">로그인 가기</a>
</body>
</html>
결과
3-2 응답 HTTP 헤더 관련 메소드
서버가 웹 브라우저에 응답하는 정보를 헤더에 추가하는 기능을 제공한다.
헤더 정보에는 서버에 대한 정보가 주로 저장되어 있다.
응답 HTTP 헤더 관련 메소드의 종류 (response)
응답 HTTP 헤더 관련 메소드 | 반환 유형 | 설명 |
addCookie(Cookie cookie) | void | 쿠키를 추가한다. (쿠키=임시신분증) |
addDateHeader(String name, long date) | void | 설정한헤더 이름 name에 날짜/시간을 추가한다. |
addHeader(String name, String value) | void | 설정한 헤더 이름 name에 value를 추가한다. |
addIntHeader(String name, int value) | void | 설정한 헤더 이름 name에 정수 값 value를 추가한다. |
setDateHeader(String name, long date) | void | 설정한 헤더 이름name에 날짜/시간을 설정한다. |
setHeader(Strgin name, String value) | void | 설정한 헤더 이름 name에 문자열 값 value를 설정한다. |
setHeader(String name, int value) | void | 설정한 헤더 이름 name에 정수 값 value를 설정한다. |
containsHeader(String name) | boolean | 설정한 헤더 이름 name이 HTTP 헤더에 포함되었는지 여부를 확인한다. |
getHeader(String name) | String | 설정한 헤더 이름 name 값을 가져온다. |
ex) response 내장 객체로 5초마다 JSP 페이지 갱신하기
5-5
<%@ 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>
<p>이 페이지는 5초마다 새로고침 됩니다.
<%
response.setIntHeader("Refresh", 5);
%>
<p><%=(new java.util.Date()) %>
</body>
</html>
Refresh에 정수 값 value인 5를 설정한다.
5초마다 페이지를 갱신한다.
결과
3-3. 응답 콘텐츠 관련 메소드
response 내장 객체는 웹 브라우저로 응답하기 위해 MIME 유형, 문자 인코딩, 오류 메시지, 상태 코드 등을 설정하고 가져오는 응답 콘텐츠 관련 메소드를 제공한다.
응답 콘텐츠 관련 메소드의 종류
응답 콘텐츠 관련 메소드 | 반환 유형 | 설명 |
setContentType(String type) | void | 웹 브라우저에 응답할 MIME 유형을 설정한다. |
getContentType() | String | 웹 브라우저에 응답할 MIME 유형을 가져온다. |
setCharacterEncoding(String charset) | viod | 웹 브라우저에 응답할 문자 인코딩을 설정한다. |
getCharacterEncoding() | String | 웹 브라우저에 응답할 문자 인코딩을 가져온다. |
sendError(int status_code, String message) | void | 웹 브라우저에 응답할 오류(코드 및 오류 메시지)를 설정한다. |
setStatus(int statuscode) | void | 웹 브라우저에 응답할 HTTP 코드를 설정한다. |
ex) response 내장 객체로 오류 응답 코드와 오류 메시지 보내기
5-6
<%@ 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>
<%
response.sendError(404,"요청페이지를 찾을 수 없어요...제대로 입력해보세요ㅋ");
%>
</body>
</html>
error 종류
400번 대 : 클라이언트의 잘못(손님)
404 not found : 없는 주소 즉 request 잘못이다.
403 : 접근 금지
500번대 : 서버 에러 응답 (개발자 잘못)
<%@ 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>
<%
response.sendError(403,"접근금지!!! 다가오지마세요!!!!!!!!!!");
%>
</body>
</html>
4. out 내장 객체의 기능과 사용법
out 내장 객체는 웹 브라우저에 데이터를 전송하는 출력 스트림 객체이다.(HTML에 출력함)
out 내장 객체의 출력 결과는 표현문 태그와 같은 결과를 얻을 수 있다.
out 내장 객체 메소드의 종류
out 내장 객체 메소드 | 반환 유형 | 설명 |
print(Strinf str) | void | 설정된 str 값을 웹 브라우저에 출력한다. |
println(String str) | void | 설정된 str 값을 웹 브라우저에 출력한다. 이떄 줄 바꿈이 적용되지 않는다. |
newLine() | void | 줄바꿈을 출력한다. |
getBuffereSize() | int | 현재 출력 버퍼의 크기를 가져온다. |
getRemaining() | int | 현재 남아 있는 출력 버퍼의 크기를 가져온다. |
clear() | void | 현재 출력 버퍼에 저장되어 있는 내용을 웹 브라우저에 전송하지 않고 비운다. 만약 버퍼가 이미 플러시되었다면 IOException이 발생하지 않는다. |
clearBuffer() | void | 현재 출력 버퍼에 저장되어 있는 내용을 웹 브라우저에 전송하지 않고 비우나. 만약 버퍼가 이미 플러시되었다면 IOException이 발생하지 않는다. |
flush() | void | 현재 출력 버퍼에 저장되어 있는 내용을 웹 브라우저에 전송하고 비운다. |
isAutoFlush() | boolean | 출력 버퍼가 채워졌을 때의 처리를 결정한다. 자동으로 플러시하는 경우 true를 반환하고, 그렇지 않은 경우 false를 반환한다. |
'코딩 > JSP' 카테고리의 다른 글
[9주 4일차] 웹 쇼핑몰 : 상품 등록 페이지 만들기 (1) | 2023.12.07 |
---|---|
[9주 3일차] 폼 태그 (1) | 2023.12.06 |
웹쇼핑몰 상품 상세 정보 표시하기 (1) | 2023.12.06 |
[9주차 2일] JSP (1) | 2023.12.05 |
[9주 1일차] 내장 객체 (0) | 2023.12.04 |
- Total
- Today
- Yesterday