너와 나의 연결고리, JSP 🔗(6) - 페이지이동, attribute

joyfulwave·2022년 10월 13일
0




📚 페이지 이동

📌 forward

  • request에 담긴 값이 유효해요. 페이지 이동시에 request와 response의 값이 유지돼요.
  • 이동된 url이 화면에 안보여요. 사용자는 페이지가 이동했는지 알 수 없어요.

⚫ 포워드 하는 방법

  pageContext.forward("이동할 페이지"); // 방법(1) : 내장객체 사용
  <jsp:forward page="이동할 페이지" /> // 방법(2) : 액션태그 사용

⚫ 포워드 한 데이터 값 받기

	request.getAttribute("키값");

📌 redirect

  • 클라이언트가 새로 페이지를 요청한 것과 같은 방식으로 페이지가 이동돼요. 이때 request, respose가 유지되지 않아요.
  • 이동된 url이 화면에 보여요.

⚫ 리다이렉트 하는 방법

	response.sendRedirect("이동할 페이지");

📌 사용 예

⚫ forward 방식

데이터베이스에서 정보를 가지고와서 사용자에게 새로운 페이지를 보여줄 때, 데이터베이스 정보를 들고있는 채로 페이지에 대한 정보를 보여줄 때 사용해요. 그러므로 보안에 취약할 수 있어요.

⚫ redirect 방식

사용자가 어떤 결제를 하고 요청을 했을 때 결제가 되었다는 결과값(결제된 비용 등)을 사용자가 볼 때 결제에 필요했던 정보(카드번호, 비밀번호 등)를 계속 보여줄 필요가 없을 때 사용해요.

📌 forward 예제

⚫ 값을 넘기는 파일

<%@ 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 userid = "user";
		String userpw = "abcd1234";
		String username = "자바학생";
		
		request.setAttribute("userid", userid);
		request.setAttribute("userpw", userpw);
		request.setAttribute("username", username);
		
		pageContext.forward("attribute2.jsp");
	%>
</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>
	<%
		String userid = (String) request.getAttribute("userid");
		String userpw = (String) request.getAttribute("userpw");
		String username = (String) request.getAttribute("username");
		
	%>
	
	아이디 :  <%= userid %> <br>
	비밀번호 : <%= userpw %> <br>
	이름 :  <%= username %>
</body>
</html>

⚫ 출력 결과

📌 redirect 예제

⚫ 값을 넘기는 파일

<%@ 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 userid = "user";
		String userpw = "abcd1234";
		String username = "자바학생";
		
        // redirect 방식은 새로 페이지를 요청하는 방식이므로 기본적으로 데이터가 저장되지 않는다. 그래서 session에 값을 저장하여 페이지 이동을 시킨다.
		session.setAttribute("userid", userid);
		session.setAttribute("userpw", userpw);
		session.setAttribute("username", username);
		
		response.sendRedirect("attribute2.jsp");
	%>
</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>
	<%
		String userid = (String) session.getAttribute("userid");
		String userpw = (String) session.getAttribute("userpw");
		String username = (String) session.getAttribute("username");
	%>
	
	아이디 :  <%= userid %> <br>
	비밀번호 : <%= userpw %> <br>
	이름 :  <%= username %>
</body>
</html>

⚫ 출력 결과

📚 attribute scope

⚫ page

페이지 내에서 지역변수처럼 사용

⚫ request

요청을 받아 웹 브라우저에게 응답할 때까지 변수가 유지되는 경우

⚫ session

웹 브라우저 별로 변수가 관리되는 경우 사용

⚫ application

웹 어플리케이션이 시작되고 종료될 때까지 변수가 유지되는 경우




포기하지 말고 JUST DO! ✔️




출처
https://media.giphy.com/media/dwmNhd5H7YAz6/giphy.gif
https://media.giphy.com/media/3o6Mb9EC7mNqXl9x7y/giphy.gif

0개의 댓글