๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์Šคํ”„๋ง Spring/๐Ÿงถ์Šคํ”„๋ง ๋ถ€ํŠธ Boot

์Šคํ”„๋ง๋ถ€ํŠธ ์„ธ์…˜ ์Šคํ† ๋ฆฌ์ง€ sessionStorage

by Meteora_ 2021. 6. 25.
728x90

login.html

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

<style type="text/css">
#app{
	margin: auto;
	margin-top: 60px;
	width: 60%;
	border: 3px solid #8ac007;
	padding: 10px;
}
</style>

</head>
<body>

<h1>Login</h1>

<div id="app">	
	<table border="1">
	<tr>
		<td>์•„์ด๋””</td>
		<td>
			<input type="text" id="id" placeholder="์•„์ด๋””์ž…๋ ฅ" size="20">
		</td>
	</tr>
	<tr>
		<td>ํŒจ์Šค์›Œ๋“œ</td>
		<td>
			<input type="text" id="pwd" placeholder="ํŒจ์Šค์›Œ๋“œ์ž…๋ ฅ" size="20">
		</td>
	</tr>
	
	<tr>
		<td colspan="2">
			<button type="button" id="login">login</button>		
			<button type="button" id="account">ํšŒ์›๊ฐ€์ž…</button>
		</td>
	</tr>
	</table>	
</div>

<script type="text/javascript">

$(document).ready(function() {
	
	$('#login').click(function() {				
		$.ajax({
			url:"http://localhost:3000/login",
			type:'post',
			data:{ id:$('#id').val(), pwd:$('#pwd').val() },
			success:function(data){				
			//	alert('success');				
				if(data == ''){
					alert('login fail');
				}else{
					alert('login success');
					
					sessionStorage.setItem("login", JSON.stringify(data));
					
					location.href = "bbslist.html";
				}
			},
			error:function(){
				alert('error');
			}
		});
	});
	
	$('#account').click(function() {
		location.href = "account.html";
	});
});	

</script>


</body>
</html>

sessionStorage.setItem( );

 

 

์›น์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ• ์ค‘ ์„œ๋ฒ„๊ฐ€ ์•„๋‹Œ ํด๋ผ์ด์–ธํŠธ์—์„œ ๊ฐ€๋Šฅํ•œ ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์›น์‚ฌ์ดํŠธ์˜ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ฐ˜๋“œ์‹œ ์„œ๋ฒ„๊ฐ€ ํ•„์š”ํ•œ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๋ชฉ์ ์— ๋”ฐ๋ผ ํด๋ผ์ด์–ธํŠธ ์ €์žฅ์†Œ ์—ญ์‹œ ์ข‹์€ ์—ญํ• ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ํด๋ผ์ด์–ธํŠธ ์ €์žฅ์†Œ๋ฅผ ์ƒ๊ฐํ•˜๋ฉด ๊ฐ€์žฅ ๋จผ์ € ์ฟ ๊ธฐ ์ €์žฅ์†Œ๋ฅผ ๋– ์˜ฌ๋ฆฌ๊ฒ ์ง€๋งŒ html5์—๋Š” ์ข€ ๋” ํšจ๊ณผ์ ์ธ ํด๋ผ์ด์–ธํŠธ ์ €์žฅ ๊ณต๊ฐ„์„ ์ œ๊ณตํ•˜๋Š”๋ฐ ์–ด๋–ค ๊ฒƒ์ด ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ฃ .


! localStorage, sessionStorage API ์•Œ์•„๋ณด๊ธฐ
html5์—์„œ๋Š” ์ข€ ๋” ์‰ฝ๊ณ  ๊ฐ„๋‹จํ•œ ์ €์žฅ์†Œ ์ œ๊ณต์„ ์œ„ํ•ด ์ƒˆ๋กœ์šด localStorage์™€ sessionStorage API๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค ์ €์žฅ ๊ณต๊ฐ„์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด ๋‘˜์˜ ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์ด๋ผ๋ฉด ์ €์žฅ์†Œ๋กœ์„œ์˜ ๊ธฐ๋Šฅ์€ ๋Œ€๋ถ€๋ถ„ ๋™์ผํ•˜๋ฉฐ ๋‹จ์ง€  sessionStorage์˜ ๊ฒฝ์šฐ ์„ธ์…˜์ด ์ข…๋ฃŒ๋˜๋ฉด ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋„ ํ•จ๊ป˜ ์‚ฌ๋ผ์ง„ ๋‹ค๋Š” ์ ์ด ๋‹ค๋ฅธ ์ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ด ๋ฉ”์†Œ๋“œ๋Š” ์–ด๋–ค ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”? ์ฟ ํ‚ค๋ฅผ ํฌํ•จํ•ด ์„œ๋กœ์˜ ์žฅ๋‹จ์ ์— ๋Œ€ํ•˜์—ฌ ๋น„๊ตํ•˜๋ฉฐ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 # ์ฟ ํ‚ค, ์„œ๋ฒ„ ์ €์žฅ์†Œ, localStorage, sessionStorage ์ฐจ์ด์  ๋ฐ ์žฅ๋‹จ์ 

 


์ฟ ํ‚ค์˜ ๊ฒฝ์šฐ ์ €์žฅ ๊ฐ€๋Šฅํ•œ ๊ณต๊ฐ„์˜ ํฌ๊ธฐ๊ฐ€ ๊ฐ€์žฅ ์ž‘๊ณ  ํ•˜๋‚˜์˜ ํ…์ŠคํŠธ ํ˜•ํƒœ๋กœ ์ €์žฅ๋œ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋น„๊ต์  ๊ฐ„๋‹จํ•œ ํ…์ŠคํŠธ ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š”๋ฐ ์šฉ์ดํ•˜๋‹ค. ์ด๋Ÿฐ ๊ฐ’์œผ๋กœ๋Š” ํŒ์—…์˜ ์ด๋ฆ„์„ ์˜ˆ๋กœ ๋“ค ์ˆ˜ ์žˆ๋‹ค. ํŒ์—…์˜ ๊ฒฝ์šฐ 24์‹œ๊ฐ„ ๋™์•ˆ ๋™์ž‘ํ•˜์ง€ ์•Š๋„๋ก... ์ฆ‰ ์—ด์ง€ ์•Š๋„๋ก ์„ค์ •ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์€๋ฐ ์ด๋•Œ ์ฟ ํ‚ค์˜ ๋ณ€์ˆ˜๋ฅผ ์ €์žฅํ•˜๊ณ  24์‹œ๊ฐ„์˜ ๋งŒ๋ฃŒ์‹œ๊ฐ„์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
์„œ๋ฒ„์ €์žฅ์†Œ๋Š” ๋ฐ์ดํ„ฐ์˜ ๋™๊ธฐํ™”๊ฐ€ ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ผญ ํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ์ „์†ก์„ ์ตœ์†Œํ•˜ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ์ด๋‹ค. ์ด๋Ÿฐ ์ด์œ ๋กœ ์„œ๋ฒ„ ์ €์žฅ์†Œ๋Š” ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ๊ฐ€ ๋งค์šฐ ํฌ๊ฑฐ๋‚˜ ๋ฐ˜๋“œ์‹œ ์ €์žฅํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉ๋œ๋‹ค.

๋ฐ์ดํ„ฐ๊ฐ€ ํฌ๊ธฐ๋‚˜ ๋งŒ๋ฃŒ์‹œ๊ฐ„์„ ๊ณ ๋ คํ–ˆ์„๋•Œ ์œ„ ์ €์žฅ์†Œ์˜ ์ค‘๊ฐ„ ์ •๋„์˜ ์• ๋งคํ•œ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. ์ €์žฅ์†Œ๊ฐ€ ํ•„์š”ํ•˜์ง€๋งŒ ๋‹ค์ˆ˜์˜ ์ปฌ๋Ÿผ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹ˆ๋งŒ ๋‹จ์ˆœํ•œ ํ˜•ํƒœ๋ผ๋ฉด localStorage, sessionStorage๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ํšจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ•์ด๋‹ค.

 

! localStorage, sessionStorage๋ฅผ ์–ด๋–ค ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ• ๊นŒ


๋Œ€๋ถ€๋ถ„์˜ ๋ฐ์ดํ„ฐ์˜ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜๋ฏ€๋กœ ๋กœ์ปฌ ๋ฐ ์„ธ์…˜ ์Šคํ† ๋ฆฌ์ง€๊ฐ€ ์‚ฌ์šฉ๋˜๋Š” ๊ณณ์€ ๊ทธ๋ฆฌ ๋งŽ์ง€ ์•Š๋‹ค. ๋Œ€๋ถ€๋ถ„ ์ž„์‹œ์ ์ธ ์šฉ๋„ ๋˜๋Š” ์บ์‹œ, history ๊ธฐ๋Šฅ์„ ์œ„ํ•˜์—ฌ ์‚ฌ์šฉ๋œ๋‹ค. ์•„๋ž˜์˜ ๊ฒฝ์šฐ๊ฐ€ ๊ทธ ์˜ˆ์ด๋‹ค.

  • ๊ธ€ ์ž‘์„ฑ ์ค‘๊ฐ„ ์ค‘๊ฐ„์— ์žƒ์–ด๋ฒ„๋ฆฌ์ง€ ์•Š๊ธฐ ์œ„ํ•œ ์ž„์‹œ ์ €์žฅ์šฉ๋„
  • ์žฅ๋ฐ”๊ตฌ๋‹ˆ๋‚˜ ์ข‹์•„ํ•˜๋Š” ์ฝ˜ํ…์ธ  ๋“ฑ ์ˆ˜์‹œ๋กœ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒฝ์šฐ
  • ๋ฐฉ๋ฌธ์ž์˜ ์ด๋™ ๊ฒฝ๋กœ๋ฅผ ์ €์žฅํ•˜์˜€๋‹ค๊ฐ€ ์ด๋™ํ•  ๊ฒฝ์šฐ
  • ๊ทธ ์™ธ ์„œ๋ฒ„์— ๋ฐ˜๋“œ์‹œ ์ €์žฅํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ


๊ทธ๋Ÿผ ์•„๋ž˜์—์„œ๋Š” ์˜ˆ์ œ๋ฅผ ํ†ตํ•˜์—ฌ ๋”์šฑ ์ž์„ธํ•˜๊ฒŒ ์•Œ์•„๋ณด์ž.

# sessionStorage ์˜ˆ์ œ๋ณด๊ธฐ

์„ธ์…˜์„ ๊ธฐ์ค€์œผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ ๋ฐ ์œ ์ง€๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ด ๊ฐ์ฒด์— ์ €์žฅ๋œ ๊ฐ’์€ ์ผ์‹œ์ ์ธ ์ˆ˜๋ช…์„ ๊ฐ€์ง€๊ฒŒ๋œ๋‹ค. ๋งŒ์•ฝ ์„ธ์…˜์ด ์ข…๋ฃŒ๋˜๋Š” ๊ฒฝ์šฐ... ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋‹ซ๊ฑฐ๋‚˜ ์ผ์ •์‹œ๊ฐ„ ์•„๋ฌด๋Ÿฐ ๋™์ž‘๋„ ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ๋‹น์—ฐํžˆ ์ €์žฅ๋œ ๊ฐ’์€ ์‚ญ์ œ๋  ๊ฒƒ์ด๋‹ค.

๋งŒ์•ฝ ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ญ์ œ๋˜์ง€ ์•Š๊ธธ ๋ฐ”๋ž€๋‹ค๋ฉด ์œ„์— ๋‚˜์™€์žˆ๋Š” localStorage๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋ฐ”๋ž€๋‹ค. ์•„๋ž˜์˜ ์‚ฌ์šฉ๋ฐฉ๋ฒ•์€ localStorage์™€ ๊ฑฐ์˜ ๋™์ผํ•œ ๋ฉ”์†Œ๋“œ์™€ ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ–๋Š”๋‹ค. ์ฆ‰, ๋™์ผํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค ํ•˜๊ฒ ๋‹ค. ๊ทธ๋Ÿผ ์•„๋ž˜ ์˜ˆ์ œ๋ฅผ ์ฐธ๊ณ ํ•˜์ž.
(์ฐธ๊ณ ๋กœ ์„ธ์…˜์„ ์‚ฌ์šฉํ•œ ์ €์žฅ๋ฐฉ๋ฒ•์€ ๋ณด์•ˆ ๋ฐ ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ์˜ ๊ฒฝ์šฐ ๋ฌด๋ฐฉ๋น„๋กœ ๋…ธ์ถœ๋˜๋Š” ๊ฒฝ์šฐ๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.)

 

 

sessionStorage.setItem("domain", "webisfree.com");
//&nbsp; domain์ด๋ž€ ํ‚ค(key) ๊ฐ’์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ํ…์ŠคํŠธ๋ฅผ ์ €์žฅํ•จ

sessionStorage.getItem("domain");
// ํ‚ค์— ์ €์žฅ๋œ ๊ฐ’์„ ๋ฐ˜ํ™˜. ์—ฌ๊ธฐ์„œ๋Š” webisfree.com ์ถœ๋ ฅ๋จ

sessionStorage.removeItem("domain");
// domain ํ‚ค์™€ ๋ฐ์ดํ„ฐ ๋ชจ๋‘ ์‚ญ์ œ

sessionStorage.clear();
// ์ €์žฅ๋œ ๋ชจ๋“  ๊ฐ’ ์‚ญ์ œ

# localStorage ์˜ˆ์ œ ๋ฐ ์ฝ”๋“œ๋ณด๊ธฐ

 

์•ž์—๋„ ์–ธ๊ธ‰ํ–ˆ์ง€๋งŒ ์œ„ ๋‘๊ฐ€์ง€ ๊ฐ์ฒด์˜ ์ฐจ์ด์ ์€ ์„ธ์…˜์— ๋”ฐ๋ผ์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ์œ ์ง€๋˜๋Š”๊ฐ€ ์•ˆ๋˜๋Š”๊ฐ€๋กœ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ๊ฑฐ์˜ ๋™์ผํ•˜๋‹ค ํ•˜๊ฒ ๋‹ค. ์•„๋ž˜๋Š” localStorage๊ฐ์ฒด์˜ ์‚ฌ์šฉ๋กœ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”์†Œ๋“œ, ํ”„๋กœํผํ‹ฐ๋ฅผ ํ•จ๊ป˜ ์•Œ์•„๋ณด์ž.



# ๋ฐ์ดํ„ฐ์˜ ์ €์žฅ setItem()ํŠน์ •๊ฐ’์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๋ฆฌํ„ฐ๋Ÿดํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์•„๋ž˜ ์˜ˆ์ œ๋Š” test๋ž€ ์ด๋ฆ„์˜ key๊ฐ’์„ ์ •ํ•˜๊ณ  ์ด์— 123์ด๋ž€ ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ์˜ˆ์ œ์ด๋‹ค.

localStorage.test = '123';
localStorage.setItem('test', '123');


์—ฌ๊ธฐ์„œ ์‚ฌ์šฉ๋œ setItem() ๋ฉ”์†Œ๋“œ๋Š” ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๊ฐ„๋‹จํ•œ ๋ฐฉ์‹์œผ๋กœ key๊ฐ’์— ๋งค์นญ๋œ value๋ฅผ ์ธ์ž๋กœ ๋„˜๊ฒจ์ฃผ๋ฉด ๋œ๋‹ค. ๋งค์šฐ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ์•„๋ž˜๋Š” ๋“ฑ๋ก๋œ key๊ฐ’์˜ value๋ฅผ ์–ป๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์ด๋‹ค.



# ๋ฐ์ดํ„ฐ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ, getItem()

localStorage.test;
localStorage.getItem('test');


์—ญ์‹œ ์ง์ ‘ ํ‚ค๊ฐ’์„ ์ž…๋ ฅํ•˜๊ฑฐ๋‚˜ getItem() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. ์•„๋ž˜๋Š” ํŠน์ • key ๊ฐ’์„ ์ง€์šฐ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•˜์—ฌ ์•Œ์•„๋ณด์ž.

์ฐธ๊ณ ๋กœ ์ „์ฒด localStorage์— ๋‹ด๊ฒจ์žˆ๋Š” ๋ชจ๋“  ๊ฐ’์„ ํ™•์ธํ•˜๋ ค๋ฉด getItem()์— ์•„๋ฌด๋Ÿฐ ๊ฐ’๋„ ๋„˜๊ธฐ์ง€ ์•Š์œผ๋ฉด ๋ชจ๋“  ์ •๋ณด๋ฅผ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

localStorage.getItem();  //&nbsp; ์ „์ฒด ๊ฐ’ ๋ฐ›์•„์˜ค๊ธฐ


๊ทธ๋Ÿผ ์•„๋ž˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.


# ๋ฐ์ดํ„ฐ ์‚ญ์ œ, removeItem()์•„๋ž˜๋Š” test๋ผ๋Š” ํ‚ค๊ฐ’์— ์ €์žฅ๋œ ๊ฐ’์„ ์‚ญ์ œํ•˜๋Š” ์˜ˆ์ œ์ด๋‹ค.

localStorage.removeItem('test');
// localStorage ๊ฐ์ฒด์—์„œ ์›ํ•˜๋Š” ๊ฐ’์„ ์ง€์šฐ๋Š” ๋ฐฉ๋ฒ•

localStorage.clear();
// ํ•œ๋ฒˆ์— ์ €์žฅ๋œ ๋ชจ๋“  ๊ฐ’์„ ์‚ญ์ œํ•˜๋Š” ๋ฐฉ๋ฒ•


๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•  ๊ฒฝ์šฐ removeItem()์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•˜๋‚˜๋งŒ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๊ณ  ์•„๋‹ˆ๋ฉด ๋ชจ๋“  ๊ฐ’์„ ์ง€์šธ ์ˆ˜ ์žˆ๋ˆˆ clear() ๋ฉ”์†Œ๋“œ๋„ ์กด์žฌํ•œ๋‹ค.

 

 

 

 

๋Œ“๊ธ€