localstorage - woowa-turkey/miniprojects-2019 GitHub Wiki

Localstroage

  • ํŠน์ง•

    • ์ง์ ‘ ์ง€์šฐ์ง€ ์•Š์œผ๋ฉด ๋งŒ๋ฃŒ๊ธฐ๊ฐ„์ด ์—†์Œ
    • ๋„๋ฉ”์ธ๋งˆ๋‹ค ๋ณ„๋„๋กœ ๋กœ์ปฌ์Šคํ† ๋ฆฌ์ง€ ์ƒ์„ฑ
  • ์žฅ์ 

    ๋ถ„๋ฆฌ๋œ js ์ฝ”๋“œ์—์„œ ๋กœ๊ทธ์ธ ์œ ์ €์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์šฉ์ดํ•˜๋‹ค.

  • ๋‹จ์ 

    view ์—์„œ ๋žœ๋”๋งํ•  ๋•Œ js์—์„œ dom ์ฐพ์•„์„œ ๊ฐ’์„ ๋ณ€๊ฒฝํ•ด์ค˜์•ผํ•œ๋‹ค.

    String ๋งŒ ์ €์žฅ ๊ฐ€๋Šฅํ•ด์„œ id, name ,email์„ ๋ณ„๋„๋กœ ์ €์žฅํ•ด์ค˜์•ผ ํ•œ๋‹ค.

    localstorage ๊ฐ’ ๋ณ€๊ฒฝ๋งŒ์œผ๋กœ ๋กœ๊ทธ์ธ ์ •๋ณด ์ˆ˜์ •์ด ๊ฐ€๋Šฅํ•˜๋‹ค. -> ์ค‘๊ฐ„์— ๊ฐ’์ด ๋ฐ”๋€Œ๋ฉด ๋‹ค์‹œ ๋กœ๊ทธ์ธํ• ๋•Œ๊นŒ์ง€ ์„œ๋ฒ„ ์„ธ์…˜์˜ ๋กœ๊ทธ์ธ ์ •๋ณด๋ฅผ ๋ชจ๋ฅธ๋‹ค.

SessionStorage (์ฐธ๊ณ )

  • ํŠน์ง•
    • ์„ธ์…˜์ด ๋๋‚˜๋ฉด ์ข…๋ฃŒ
    • ๋ธŒ๋ผ์šฐ์ € ์ข…๋ฃŒ์‹œ ์„ธ์…˜์ข…๋ฃŒ
    • ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋‹ค๋ฅด๋ฉด ์„œ๋กœ ๋‹ค๋ฅธ ์˜์—ญ
    • ๋„๋ฉ”์ธ๋งˆ๋‹ค ๋ณ„๋„๋กœ ์„ธ์…˜์Šคํ† ๋ฆฌ์ง€ ์ƒ์„ฑ

LocalStorage ์‚ฌ์šฉ ์˜ˆ์‹œ

//login
//login ์„ฑ๊ณต์‹œ UserSession ๊ฐ์ฒด๋ฅผ ๋„˜๊ฒจ์คŒ
let res = $.ajax({
    url:"/login",
    type:"POST",
    async: false,
    data: form_data,
    headers: header
})

if (res.status == 200) {
    localStorage.loginUserId = res.responseJSON.id
    localStorage.loginUserName = res.responseJSON.name
		localStorage.loginUserEmail = res.responseJSON.email
		alert('๋กœ๊ทธ์ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.')
		window.location.href="/"
} else if (res.status == 400) {
    alert(res.responseJSON.message)
}


// view(html) ์ ์šฉ ์˜ˆ์‹œ
<div class="user-info mrg-left-5">
   <span class="name pdd-right-5 text-white text-bold" id="current-user-name">ํ˜„์žฌ ๋กœ๊ทธ์ธ๋œ ์‚ฌ์šฉ์ž ์ด๋ฆ„ ์œ„์น˜</span>
</div>

const currentUserName = document.getElementById("current-user-name")
currentUserName.innerHTML = localStorage.loginUserName


//logout
$.ajax({
    url:"/logout",
    type:"POST",
    async:false,
    dataType:'text',
    error:function(request,status,error){
    	alert('๋กœ๊ทธ์ธ ์ƒํƒœ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.')
    },
    success:function(data){
        localStorage.removeItem('loginUserId');
        localStorage.removeItem('loginUserName');
        localStorage.removeItem('loginUserEmail');
    	alert('๋กœ๊ทธ์•„์›ƒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.')
    }
})

Model์— Session ์ •๋ณด ๋‹ด์•„์„œ ๋ทฐ์— ๋žœ๋”๋งํ•˜๊ธฐ

  • ์žฅ์ 

    view(html)์— ๋ฐ”๋กœ ๋žœ๋”๋ง ๊ฐ€๋Šฅํ•˜๋‹ค

  • ๋‹จ์ 

    ์™ธ๋ถ€ js ํŒŒ์ผ์— model์ •๋ณด๋ฅผ ๋ฐ”๋กœ ๋žœ๋”๋งํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— js์— ์ ์šฉ์ด ๋ถˆํŽธํ•˜๋‹ค.

    html ํ•˜๋‹จ์—์„œ ๋žœ๋”๋งํ•ด์„œ ๋ณ€์ˆ˜๋กœ ์„ ์–ธํ•œ ํ›„์— ์ˆœ์„œ๋ฅผ ๋งž์ถฐ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

Model ์‚ฌ์šฉ ์˜ˆ์‹œ(์ง์ ‘ ํ•ด๋ณด์ง„ ์•Š์Œ)

@GetMapping
public String index(Map<String, Object> model) {
    model.put("loginUser", UserSession)
    return index;
}
...
<div class="user-info mrg-left-5">
   <span class="name pdd-right-5 text-white text-bold" th:text="${session.loginUser.name}"></span>
</div>

...
<script th:inline="javascript">
    var loginUserId = [[${session.loginUser.id}]];
    var loginUserName = [[${session.loginUser.name}]];
		var loginUserEmail = [[${session.loginUser.email}]];
</script>
<script src="/js/script.js"></script>
...

๊ฒฐ๋ก 

js์—์„œ ์‚ฌ์šฉํ•  ์ผ์ด ๋งŽ์€ ์ •๋ณด๋Š” localstorage๋ฅผ ํ™œ์šฉ

๋‹จ์ˆœํžˆ view์— renderingํ•˜๋Š” ์šฉ๋„๋กœ๋งŒ ์‚ฌ์šฉํ• ๊ฑฐ๋ผ๋ฉด Model์— ์ •๋ณด๋ฅผ ๋‹ด์•„ ๋„˜๊ฒจ์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ ํ™œ์šฉ

โš ๏ธ **GitHub.com Fallback** โš ๏ธ