티스토리 뷰

코딩/JSP

[9주 3일차] 내장 객체 2

ehzim 2023. 12. 6. 18:17

 

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