JAVA개념&실습

WEB : [0526] session 데이터 전송 실습

u_SZero 2023. 5. 28. 00:57

! 배워가고 있는 주인장이 쓴 글이니 정보의 정확성에 유의하시기 바랍니다 !


WebApp14


[실습 개요]


○ TestSession01.jsp 에서 TestSession02.jsp로
   이름과 전화번호를 입력받아 전송
   
   TestSession02.jsp 에서 TestSession03.jsp로
   아이디와 패스워드를 입력받고
   앞에서 전달받은 이름과 전화번호를 함께 전송
   
   TestSession03.jps 에서 전달받은 이름, 전화번호, 아이디, 패스워드 출력
   
   01 ────────── 02 ────────── 03
   이름, 전화번호            아이디, 패스워드      이름, 전화번호, 아이디, 패스워드
   입력                            입력                           출력

                          - getParameter              - getAttribute

※ 즉, 01에서 02로 넘겨받을 땐 getParameter
   02 에서 03 으로 넘겨받을 땐 getParameter 와 getAttribute 로 세션 활용
   01 에서 03 으로 넘겨줄 수 없기 떄문에 세션(session)에 저장
   
※ session 외에 input 태그 hidden 속성을 이용한 정보 전달 가능~!!!

 


 

TestSession01.jsp

<%@ page contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>TestSession01.jsp</title>
<link rel="stylesheet" type="text/CSS" href="css/main.css">

<style type="text/css">
	body {text-align: center;}
	.txt {margin: 10px;}
	.btn {width: 150px; height: 40px;}

</style>

<script type="text/javascript">

	function sendIt()
	{
		// 확인
		//alert("함수 호출 확인~!!!")

		var f = document.forms[0]; //_form에 name이 없을 떄
		
		if (!f.name.value)		
		{
			alert("이름을 입력해야 합니다~!!!");
			f.name.focus();
			return;
		}
		
		if (!f.tel.value)
		{
			alert("전화번호를 입력해야 합니다~!!!");
			f.tel.focus();
			return;
		}
		
		f.submit();
	}

</script>

</head>
<body>

<div>
	<h1>이름과 전화번호(TestSession01.jsp)</h1>
	<hr>
</div>
 
<div>
	<form action="TestSession02.jsp" method="post">
		이름 &nbsp;&nbsp;&nbsp;&nbsp; <input type="text" name="name" class="txt"><br>
		전화번호<input type="text" name="tel" class="txt"><br>
		<br>
		<button type="button" class="btn" onclick="sendIt()">입력</button>
	</form>
</div>
 

</body>
</html>

 

 

TestSession02.jsp

+ hidden 이나 form action의 주소값으로 넘겨주던 변수들을 session.setAttribute를 이용하여 세션을 통해 넘겨줌

<%@ page contentType="text/html; charset=UTF-8"%>
<%
	// 이전 페이지(TestSession01.jsp)로부터 데이터 수신
	// → userName, userTel
	
	request.setCharacterEncoding("UTF-8");
	
	String userName = request.getParameter("name");
	String userTel = request.getParameter("tel");
	
	// check~!!!
	// 추가
	session.setAttribute("userName", userName);
	session.setAttribute("userTel", userTel);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>TestSession02.jsp</title>
<link rel="stylesheet" type="text/CSS" href="css/main.css">

<style type="text/css">
	body {text-align: center;}
	.txt {margin: 10px;}
	.btn {width: 150px; height: 40px;}

</style>

<script type="text/javascript">

	function sendIt()
	{
		// 확인
		//alert("함수 호출 확인~!!!")

		var f = document.forms[0]; 	//_form에 name이 없을 떄
		
		if (!f.userId.value)		
		{
			alert("아이디를 입력해야 합니다~!!!");
			f.userId.focus();
			return;
		}
		
		if (!f.userPwd.value)
		{
			alert("패스워드를 입력해야 합니다~!!!");
			f.userPwd.focus();
			return;
		}
		
		f.submit();
	}

</script>

</head>
<body>

<div>
	<h1>아이디와 패스워드(TestSession02.jsp)</h1>
	<hr>
</div>
 
<div>
	<form action="TestSession03.jsp" method="post">
		아이디 &nbsp;&nbsp; <input type="text" name="userId" class="txt"><br>
		패스워드<input type="text" name="userPwd" class="txt"><br>
		<br>
		<button type="button" class="btn" onclick="sendIt()">입력</button>
	</form>
	
	<%-- 
	<input type="hidden" name="userName" value="<%=userName %>">
	<input type="hidden" name="userTel" value="<%=userTel %>">
	--%>
	
</div>
 

</body>
</html>

 


 

TestSession03.jsp

+ TestSession02.jsp로 부터 넘겨받은 데이터들은 request.getParameter("name명");

+ TestSession01.jsp로 부터 넘겨받은 데이터들은 (String)session.getAttribute("name명");

+ session.getAttribute("name명")은 object이기 때문에 String으로 받기 위한 다운캐스팅 필요

<%@ page contentType="text/html; charset=UTF-8"%>
<%
	// 이전 페이지(TestSession02.jsp)로 부터 데이터 소신
	// → userId, userPwd (+ userName, userTel)
	
	request.setCharacterEncoding("UTF-8");

	String userId = request.getParameter("userId");
	String userPwd = request.getParameter("userPwd");
	
	String userName = (String)session.getAttribute("userName");
	String userTel = (String)session.getAttribute("userTel");
	
	session.removeAttribute("userName");
	session.removeAttribute("userTel");
%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>TestSession03.jsp</title>
<link rel="stylesheet" type="text/CSS" href="css/main.css">

<style type="text/css">
	body {text-align: center;}
	.txt {margin: 10px;}
	.btn {width: 150px; height: 40px;}

</style>

</head>
<body>

<div>
	<h2>이름, 전화번호, 아이디, 패스워드 출력</h2>
	<h3>TestSession03.jsp</h3>
	<hr>
</div>

<div>
	<!-- <h4>이름 : 홍길동</h4> -->
	<h4>이름 : <%=userName %></h4>
	<!-- <h4>전화번호 : 010-4444-4444</h4> -->
	<h4>전화번호 : <%=userTel %></h4>
	<!-- <h4>아이디 : hong</h4> -->
	<h4>아이디 : <%=userId %></h4>
	<!-- <h4>패스워드 : 123456</h4> -->
	<h4>패스워드 : <%=userPwd %></h4>
</div>


</body>
</html>

 

 

 

 


! 배워가고 있는 주인장이 쓴 글이니 정보의 정확성에 유의하시기 바랍니다 !