Coding Planet
μ΅κ·Ό λ³Έ μν ꡬννκΈ° : urlμμ product_idκ°μ Έμμ μΏ ν€μ μ μ₯νκΈ° λ³Έλ¬Έ
πνλ‘μ νΈ/π³μΌνλͺ° νλ‘μ νΈ
μ΅κ·Ό λ³Έ μν ꡬννκΈ° : urlμμ product_idκ°μ Έμμ μΏ ν€μ μ μ₯νκΈ°
jhj.sharon 2023. 6. 15. 21:30λ°μν
μ΅κ·Ό μνμ μ μ₯νλλ°λ ν¬κ² λ κ°μ§ λ°©λ²μ΄ μλ€. μλ²μ μ μ₯νλ λ°©λ²κ³Ό ν΄λΌμ΄μΈνΈ, μ¦ ν¬λ‘¬ λ± μ¬μ©μ νκ²½μ μ μ₯νλ λ°©λ²μ΄λ€.
μλ²μ μ μ₯νλ λ°©λ²μ λ κ°μ§ μλ―Έμμ κ·Έ νκ³κ° λͺ ννλ€. 첫째, μ¬μ©μκ° νμ΄μ§λ₯Ό ν΄λ¦νλ κ²μ λΆμν λ§ν λ§μΌν μ κ°μΉκ° λ¨μ΄μ§λ€. λ¬Όλ‘ λκ² λ³΄λ©΄ μ¬μ©μκ° ν₯λ―Έ μλ μνμ ν΄λ¦νλ€λ μ μμ μλ―Έκ° μκ² μ§λ§ 'κ΄μ¬ μν λͺ©λ‘'μ΄λΌλ λ λͺ νν λ§μΌν μ κ°μΉκ° μλ κΈ°λ₯보λ€λ κ·Έ ν¨μ©μ΄ λ¨μ΄μ§λ€. λμ§Έ, μΌνλͺ°μ λͺ¨λ νμμ΄ λ€μ΄κ° λͺ¨λ νμ΄μ§μ μνμ μλ²μ μ μ₯νκΈ°μλ κ·Έ μ©λμ΄ λ무 컀μ μλ²λΉμ©μ΄ κΈ°νκΈμμ μΌλ‘ λμ΄λλ€.
μ’ ν©μ μΌλ‘ λ§νμλ©΄ λ§μΌν μ ν¨μ©μ΄ νμ ν μ μ 'μ΅κ·Ό μν μ μ₯νκΈ°'λ₯Ό κ·Έ λ§μ μλ²λΉμ©μ λ€μ¬κ°λ©΄μ μλ²μ μ μ₯ν νμκ° μλ€λ κ²μ΄λ€. λ°λΌμ 'μΏ ν€'λ₯Ό μ΄μ©νμ¬ μ΅κ·Ό λ³Έ μνμ ꡬννλλ‘ νλ€.
1. μΏ ν€μ μλμ리 πͺ
μΏ ν€λ₯Ό λ±λ‘νλ λ©μ»€λμ¦μ ν¬κ² λ κ°μ§ λ¨κ³λ‘ μ΄λ£¨μ΄μ§λ€. 첫 λ²μ§Έ λ¨κ³λ μΏ ν€λ₯Ό μμ±νκ³ μ€μ νλ κ²μ΄κ³ , λ λ²μ§Έ λ¨κ³λ μΏ ν€λ₯Ό λΈλΌμ°μ μ μ μ₯νλ κ²μ΄λ€.
1. μΏ ν€ μμ± λ° μ€μ :
- JavaScriptλ₯Ό μ¬μ©νμ¬ `document.cookie` μμ±μ μ΄μ©νμ¬ μΏ ν€ κ°μ μ€μ νλ€. `document.cookie`μ νμ¬ νμ΄μ§μ μΏ ν€μ μ κ·Όνκ³ μμ νλ λ° μ¬μ©λλ μμ±μ΄λ€.
- μΏ ν€μ μ΄λ¦, κ°, λ§λ£ λ μ§, κ²½λ‘, λλ©μΈ λ° λ³΄μ μ€μ λ±μ μ€μ νλ€.
- μ΄ μ 보λ `name=value; expires=date; path=path; domain=domain; secure`μ κ°μ νμμΌλ‘ μ€μ λλ€.
2. μΏ ν€ μ μ₯:
- μΏ ν€κ° μμ±λκ³ μ€μ λλ©΄, λΈλΌμ°μ λ ν΄λΉ μΏ ν€λ₯Ό μ μ₯νλ€. μ μ₯λ μΏ ν€λ λΈλΌμ°μ κ° μ’ λ£λμ΄λ μ μ§λλ©°, μ€μ λ λ§λ£ λ μ§ μ΄νμλ μμ λλ€.
- μΏ ν€λ λΈλΌμ°μ μ "μΏ ν€ μ μ₯μ"μ μ μ₯λλ€. ν¬λ‘¬μμλ μ΄ μ μ₯μλ₯Ό κ΄λ¦¬νλ "μΏ ν€ κ΄λ¦¬μ"λ₯Ό μ 곡νμ¬ μ¬μ©μκ° μΏ ν€λ₯Ό νμΈνκ³ μμ ν μ μλλ‘ νλ€. μΏ ν€ κ΄λ¦¬μλ μ£Όμ μ°½μ "μ€μ " λ©λ΄μμ "μΏ ν€ λ° κΈ°ν μ¬μ΄νΈ λ°μ΄ν°" μ΅μ μ μ ννμ¬ μ κ·Όν μ μλ€.
- λν κ°λ°μ λꡬμ Applicationμμ λ€μκ³Ό κ°μ΄ νμΈν μ μλ€.
2. μΏ ν€ λ±λ‘ μ½λπͺ
- μν λͺ©λ‘ νμ΄μ§μμ μμΈνμ΄μ§λ‘ μ΄λν λ 쿼리μ€νΈλ§μΌλ‘ product_Idκ°μ΄ λ€μ΄μ€λλ‘ κ΅¬νλμ΄μλ€.
- (http://localhost:8080/stroke/product/productDetail?product_id=72)
- μν μμΈνμ΄μ§μμλ urlμ product_Id κ°μ λ°μμ μΏ ν€μ λμ μ μ₯νλ€.
- μ΄ λ product_Idλ₯Ό μ€λ³΅λμ§ μμΌλ©° 24μκ° λμ μ μ₯λκ³ μλμΌλ‘ μμ λλ€. μλμμλ μλμ κ°λ€.
- 1) νμ΄μ§κ° λ‘λλλ©΄ onPageLoad()ν¨μκ° μ€νλλ€ window.addEventListener('load', onPageLoad);
- onPageLoad()μμλ μΏ ν€ λ±λ‘μ νμν μΏ ν€μ keyκ°, value κ°, λ§λ£μΌμ μΏ ν€ λ±λ‘ ν¨μsetCookie(cookieName, value, expirationDate)μ μ λ¬νλ€.
//Cookies----------------------------------------------------
// νμ΄μ§ λ‘λ ν μ€νν ν¨μ
function onPageLoad() {
var url = window.location.href;
var productId = getProductIDFromURL(url);
console.log("productId::" + productId);
if (productId) {
var recentProducts = getCookie('recent_products');
var recentProductIds = recentProducts ? recentProducts.split('/') : [];
if (!recentProductIds.includes(productId)) {
recentProductIds.push(productId);
}
// μ΅λ 10κ°κΉμ§ μ μ§
if (recentProductIds.length > 10) {
recentProductIds.shift();
}
recentProducts = recentProductIds.join('/');
// 24μκ° νμ μκ° κ°μ²΄ μμ±
var expirationDate = new Date();
expirationDate.setTime(expirationDate.getTime() + (24 * 60 * 60 * 1000));
console.log("expirationDate::" + expirationDate);
// μΏ ν€μ recent_products μ μ₯ (μ ν¨κΈ°κ°: 24μκ°)
setCookie('recent_products', recentProducts, expirationDate);
}
}
// νμ΄μ§ λ‘λ μ΄λ²€νΈ 리μ€λ λ±λ‘
window.addEventListener('load', onPageLoad);
function setCookie(cookieName, value, expirationDate) {
var cookieValue = escape(value) + ((expirationDate == null) ? '' : '; expires=' + expirationDate.toUTCString());
document.cookie = cookieName + '=' + cookieValue;
}
function getCookie(cookieName) {
var name = cookieName + '=';
var decodedCookie = decodeURIComponent(document.cookie);
var cookieArray = decodedCookie.split(';');
for (var i = 0; i < cookieArray.length; i++) {
var cookie = cookieArray[i];
while (cookie.charAt(0) == ' ') {
cookie = cookie.substring(1);
}
if (cookie.indexOf(name) == 0) {
return cookie.substring(name.length, cookie.length);
}
}
return '';
}
//urlμμ productIdλ₯Ό κ°μ Έμ€λ ν¨μ
function getProductIDFromURL(url) {
var regex = /[?&]product_id=(\d+)/;
var match = regex.exec(url);
if (match && match[1]) {
return match[1];
}
return null;
}
//Cookies End----------------------------------------------------
λ°μν
'πνλ‘μ νΈ > π³μΌνλͺ° νλ‘μ νΈ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[JSP, JSTL] forEachλ¬ΈμΌλ‘ λ§λ ν μ΄λΈ λ³ν©νκΈ° (varStatus="status"μμ±) (0) | 2023.06.20 |
---|---|
μΌνλͺ° μν μΉ΄ν κ³ λ¦¬ ꡬννκΈ° - 쿼리 μ€νΈλ§ (0) | 2023.06.13 |
Comments