[spring] localStorage 사용법!
by mini_min[spring] localStorage 사용법!
✔️ localStorage 사용법
: 로컬 스토리지는 데이터에 보존기간 제한이 없다.
: 도메인당 하나만 생성. 동일한 브라우저만 접근 가능하다.
: 쿠키를 이용한 설정을 대신하기에 적당하다.
✨ 삭제하고 싶으면 localStorage.clear(); // 모두 지울 수 있다!
<p>
<input type="text" id="subject" placeholder="좋아하는 과목">
<button type="button" onclick="addSubject()">추가</button>
<button type="button" onclick="deleteSubject()">삭제</button>
</p>
<div id="log"></div>
📓 주요 메소드
- length : 스토리지에 저장된 데이터의 수를 반환
- key(index) : 지정된 인덱스의 키를 반환하고 키가 없으면 null 반환
- getItem(key) : 지정된 키에 대응하는 데이터를 반환
- setItem(key, data) : 지정된 키로 스토리지에 데이터를 저장
- removeItem(key) : 지정된 키에 대응하는 데이터를 삭제
- clear() : 모든 데이터를 스토리지에서 삭제
📓 사용예
- 저장
localStorage.subject = "java";
localStorage.setItem("subject", "java");
- 읽기
var c = localStorage.subject ;
var c = localStorage.getItem["subject"];
✔️ JSON.parse
: JSON 문자열의 구문을 분석하고, 그 결과를 javaScript 값이나 객체로 생성한다!
자바스크립트 객체로 변환된 데이터는 . 이나 [] 기호를 사용해 속성에 접근할 수 있다.
✔️ JSON.stringify()
: javaScript 객체를 JSON 문자열로 반환한다.
예제 1
- 데이터 추가하기
: setItem 으로 저장, getItem 으로 데이터를 불러올 수 있다.
✨ 기존에 있던 데이터에 추가해야하기 때문에 "subject" 로 저장된 로컬 스토리지 데이터 getItem 으로 가져오기
: id가 subject인 input 에 입력되는 값을 가져와서 'ss' 값에 push() 한다.
: JSON.stringify(ss) 하여 로컬 스토리지에 set 하면 끝!
let ss = JSON.parse(localStorage.getItem("subject")) || [];
let s = document.getElementById("subject").value.trim();
ss.push(s);
localStorage.setItem("subject", JSON.stringify(ss));
- 데이터 결합하여 보기
let s = ss.join(); //문자열 결합
예제 2
- 이벤트 추가하기
<ul class="list">
<li id="java">자바</li>
<li id="oracle">오라클</li>
<li id="html">HTML</li>
<li id="javascript">javascript</li>
<li id="spring">spring</li>
<li id="css">css</li>
</ul>
- language 로 저장된 로컬 스토리지 데이터 가져와보기
- 저장된 데이터들을 forEach 로 돌려서 i 에 className 'clk' 추가
- 클릭 이벤트
: language 에서 id 로 index 검색을 한다. 검색해서 language 에 이미 데이터가 있으냐 없느냐에 따라 classname 속성을 주거나 없앤다.
처음 찍는거면 language 에 없는 데이터니까 index 값이 -1이 나와서 className 으로 'clk' 클래스를 갖는다.
<script type="text/javascript">
let language = JSON.parse(localStorage.getItem("language")) || [];
language.forEach( (i) => document.getElementById(i).className = 'clk' );
document.querySelector(".list").addEventListener("click", function(e){
let id = e.target.id;
let item = e.target;
console.log(item);
//아~ language 에 이미 있냐 없냐에 따라 없으면 -1 이니까 clk 추가해줌
let index = language.indexOf(id);
console.log(index);
if(index === -1) {
language.push(id);
item.className = 'clk';
} else {
language.splice(index, 1);
item.className = '';
}
localStorage.setItem("language", JSON.stringify(language));
});
</script>
예제 3
- 카운트 횟수 추가하기
function clickCount() {
/*
let s = document.getElementById("log").value++;
let ss = JSON.parse(localStorage.getItem("log")) || [];
ss.push(s);
localStorage.setItem("log", JSON.stringify(ss));
viewCount();
*/
let count = localStorage.count;
count = count ? Number(count)+1 : 1;
localStorage.count = count;
viewCount();
}
function clickDelete() {
/*
localStorage.removeItem("log");
viewCount();
*/
let count = localStorage.count;
count = count ? Number(count)-1 : 0;
count < 0 ? 0 : count;
localStorage.setItem("count", count);
viewCount();
}
function viewCount() {
/*
let ss = JSON.parse(localStorage.getItem("log")) || [];
document.getElementById("log").innerHTML = "카운트 횟수 : " + ss;
*/
let count = localStorage.getItem("count");
count = count ? count : "";
document.getElementById("log").innerHTML = "카운트 횟수 : " + count;
}
'Spring' 카테고리의 다른 글
[spring] 주간 매출!!!!! 차트 출력하기 (echart) (0) | 2022.12.01 |
---|---|
[spring] XML 파싱, JSON 파싱 ⭐⭐ (1) | 2022.11.30 |
[spring] 최근 본 게시글 보기 (0) | 2022.11.29 |
[spring] 파일 처리 / 사진파일 업로드 / 사진 여러개 올리기 (0) | 2022.11.26 |
[spring] 트랜잭션 처리 주의사항 (0) | 2022.11.26 |
블로그의 정보
개발자 미니민의 개발로그
mini_min