IT 공부/JSP

Response(응답)

toraa 2022. 7. 28. 13:18

Response
1) sendRedirect() 페이지전환
2) addHeader() --- getHeader : 캐시에 저장활용


* 페이지 전환

 1) forward 방식
   - 받은 request를 다음 페이지에 위임하는 것
   - request 객체는 요청이 끝날 때 까지 공유된다 (같은 request객체다)
   - jsp:forward로 할 수도 있다.

 2) redirect 방식
   - 최초 신규접속과 같은 방식으로 이동된다.
   - 매번 호출할 때마다 새로운 request 객체가 생성된다.
   - 브라우저에 새로운 URL로 이동할 것을 지시하는 것과 같다.


jsp7_Response1.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Response1</title>
</head>
<body>
	<% response.sendRedirect("jsp7_Response2.jsp"); %>
</body>
</html>

jsp7_Response2.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Response2</title>
</head>
<body>
	<%
		out.print("<h3>로그인에 성공하셨습니다. 여기는 메인 페이지입니당!</h3>");
	%>
</body>
</html>

jsp8_sendredirect1.jsp --- > jsp8_sendredirect2.jsp

sendredirect()
. 서버안에서 페이지전환되는 방법 중 하나이다.
. 웹 서버가 웹 브라우저에게 다른페이지로 이동하라고 지시하는 것을 의미한다.
. 클라이언트가 요청하는 방식과 동일하므로 새로운 request객체가 생성된다.
. getParameter()로 받아야 한다.
. 주소줄에 한글이나 특정한 특수문자가 있다면, 반드시 URLEncoding해서 넘겨야한다.


jsp8_sendredirect1.jsp

 <%@page import="java.net.URLEncoder" %>
<%@ 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>
	<%
		String url = "http://127.0.0.1:8080/Ch4/jsp8_sendredirect2.jsp?name=";
	
		String e_name = URLEncoder.encode("서대길","utf-8");
		String e_addr = URLEncoder.encode("서울","utf-8");
		
		response.sendRedirect(url+e_name+"&addr="+e_addr);
		
	%>
</body>
</html>

jsp8_sendredirect2.jsp

<%@page import="java.net.URLEncoder"%>
<%@ 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>redirect로 보낸 데이터를 읽어와서 출력</h3>
	<%
		String name = request.getParameter("name");	
		String addr = request.getParameter("addr");
		
		out.print("이름 : "+name+", 주소 : "+addr);
	%>
</body>
</html>

jsp9_sendRedirect.jsp

<%@page import="java.net.URLEncoder"%>
<%@ 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>
	<%
		String search = "JSP프로그래밍";
		String url = "http://search.naver.com/search.naver?where=nextearch&query=";
		
		String e_search = URLEncoder.encode(search,"utf-8");
		response.sendRedirect(url+e_search);
	%>

</body>
</html>

* 응답(response)헤더에 정보를 설정하기

  ; 웹 브라우저는 응답을 받으면 브라우저 자신이 관리하는 캐시(Cache)에 응답 관련 데이터를 저장해 둘 수 있다.
  ; 나중에 서버에 동일한 요청을 보내서 응답을 기다리는 대신에 캐시에 있는 데이터를 이용해서 출력할 수 있다.

  addHeader(String name, String value)
  setHeader(String name, String value)

  getHeader(String name)


jsp10.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>
	<%
		response.addHeader("name","서대길");
		response.addHeader("age", "30");
		pageContext.forward("jsp11.jsp");
	%>

</body>
</html>

jsp11.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>
	<%
		String name = response.getHeader("name");
		
		response.setHeader("age", "23");
		String age = response.getHeader("age");
				
		
	%>
	이  름 : <%= name %><br>
	나  이 : <%= age %>
</body>
</html>

'IT 공부 > JSP' 카테고리의 다른 글

Error  (0) 2022.07.28
내장객체  (0) 2022.07.28
JSP  (0) 2022.07.27
기본 처리 이론  (1) 2022.07.27
로그인 폼  (1) 2022.07.26