โก๏ธ Java/Servlet ๊ธฐ๋ฐ์ ์น ํ๋ก์ ํธ์์ ์ฅ๋ฐ๊ตฌ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๊ณผ์ ๊ณผ ๊ธฐ๋ฅ ๊ฐ์ ์ ์ํด ๊ณ ๋ฏผํ ๋ด์ฉ๋ค ์ ๋ฆฌ
โก๏ธ Session์ ํ์ฉํ ์ฅ๋ฐ๊ตฌ๋ ๊ด๋ฆฌ, ๊ธฐ์กด ์ํ ์๋ ์ฆ๊ฐ ๋ก์ง, ์ฝ๋ ์ต์ ํ ๊ณผ์ ์ ๋ด์ฉ
๐น ์ฃผ์ ๊ธฐ๋ฅ
• ์ฌ์ฉ์๊ฐ ์ ํํ ์ํ์ ์ฅ๋ฐ๊ตฌ๋์ ์ถ๊ฐ
• ์ด๋ฏธ ๋ด๊ฒจ์ง ์ํ์ด๋ฉด ์๋๋ง ์ฆ๊ฐ
• ์ ์ํ์ด๋ผ๋ฉด ์ฅ๋ฐ๊ตฌ๋์ ์ํ ์ถ๊ฐ
• Session์ ์ด์ฉํด ์ฅ๋ฐ๊ตฌ๋ ๋ฐ์ดํฐ ์ ์ง
๐น ์ฝ๋ ๊ตฌ์กฐ ๊ฐ์
• HttpSession์์ ์ฅ๋ฐ๊ตฌ๋ ๋ฆฌ์คํธ(ArrayList<Object>) ๊ฐ์ ธ์ค๊ธฐ
• ์ํ ์ ๋ณด๋ฅผ DAO์์ ์กฐํ ํ ํ DTO์ ๋ด๊ธฐ
• ์ฅ๋ฐ๊ตฌ๋์ ๋์ผํ ์ํ์ด ๋ด๊ฒจ์๋์ง ์ฒดํฌ
• ์๋ค๋ฉด ์๋๋ง ์ฆ๊ฐ, ์๋ค๋ฉด ์ฅ๋ฐ๊ตฌ๋์ ์ถ๊ฐ
• request์ ๋ฉ์ธ์ง๋ฅผ ์ ๋ฌ ํ alert.jsp(์๋ฆผ์ฐฝ ์ถ๋ ฅ ํ์ด์ง)๋ก ์ด๋ํ์ฌ ๊ฒฐ๊ณผ ์ ๊ณต
1๏ธโฃ ์ค๋ณต ์ํ ์ฒ๋ฆฌ ๊ฐ์
: ๊ธฐ์กด ์ฝ๋์์๋ ๊ฐ๋ณ ์ํ๊ณผ ์กฐํฉ ์ํ์ ๊ฒ์ฌํ๋ ์ฝ๋๊ฐ ์ค๋ณต๋์ด ์์์
๐ ๊ณตํต ๋ก์ง์ ํ๋๋ก ์ ๋ฆฌํ๊ณ , ์ํ ํ์ ์ ๋ฐ๋ผ ์ฒ๋ฆฌํ๋๋ก ์์
boolean alreadyIn = false;
for(Object cartProduct : shoppingCart) {
if(cartProduct instanceof ProductSingleDTO && productSingleDTO != null) {
ProductSingleDTO alreadyInProductSingle = (ProductSingleDTO) cartProduct;
if(alreadyInProductSingle.getProduct_Single_Number() == productSingleDTO.getProduct_Single_Number()) {
alreadyInProductSingle.setProduct_Single_Count(alreadyInProductSingle.getProduct_Single_Count() + 1);
alreadyIn = true;
request.setAttribute("msg", "์ฅ๋ฐ๊ตฌ๋์ ์ด๋ฏธ ์กด์ฌํ๋ ์ํ์ผ๋ก ๊ฐ์๋ง ์ฆ๊ฐํฉ๋๋ค!");
request.setAttribute("flag", true);
request.setAttribute("url", "์ํ ์์ธ์ ๋ณด ํ์ด์ง.jsp?์ํ ๋ฒํธ=" + productSingleNumber);
break;
}
}
else if(cartProduct instanceof ProductComboDTO && productComboDTO != null) {
ProductComboDTO alreadyInProductCombo = (ProductComboDTO) cartProduct;
if(alreadyInProductCombo.getProduct_Combo_Number() == productComboDTO.getProduct_Combo_Number()) {
alreadyInProductCombo.setProduct_Combo_Count(alreadyInProductCombo.getProduct_Combo_Count() + 1);
alreadyIn = true;
request.setAttribute("msg", "์ฅ๋ฐ๊ตฌ๋์ ์ด๋ฏธ ์กด์ฌํ๋ ์ํ์ผ๋ก ๊ฐ์๋ง ์ฆ๊ฐํฉ๋๋ค!");
request.setAttribute("flag", true);
request.setAttribute("url", "์ํ ์์ธ์ ๋ณด ํ์ด์ง.jsp?์ํ ๋ฒํธ=" + productComboNumber);
break;
}
}
}
โ๏ธ ๋ฐ๋ณต๋ฌธ ๋ด์์ ๊ฐ๋ณ ์ํ๊ณผ ์กฐํฉ ์ํ์ ๊ฐ๊ฐ ๋น๊ต
โ๏ธ ์ค๋ณต๋๋ค๋ฉด ์๋๋ง ์ฆ๊ฐ์ํค๊ณ ๋ฐ๋ณต๋ฌธ ํ์ถ → ๋ถํ์ํ ๋ฐ๋ณต ์ต์ํ
2๏ธโฃ Object์ instanceof๋ฅผ ํ์ฉํ์ฌ ์ฅ๋ฐ๊ตฌ๋ ์ํ ๋ถ๋ฅ
: ์ฅ๋ฐ๊ตฌ๋์๋ ProductSingleDTO์ ProductComboDTO๊ฐ ํจ๊ป ์ ์ฅ๋จ
: ๋ค๋ฅธ ๋ ํ ์ด๋ธ์ ์๋ ์ํ๋ค์ ํ ์ฅ๋ฐ๊ตฌ๋์ ๋ด๊ธฐ ์ํด ArrayList<Object>๋ก ์์ฑํ์ฌ ์ํ์ ๊บผ๋ผ ๋ ์ด๋ค ํ์ ์ธ์ง ํ์ธ ํ ์ฒ๋ฆฌ๋ฅผ ํด์ค์ผ ํจ
๐ instanceof ์ฐ์ฐ์๋ฅผ ํ์ฉํ์ฌ ๊ฐ์ฒด์ ์ค์ ํ์ ์ ๊ฒ์ฌํ๊ณ ์ฒ๋ฆฌํ๋ ๋ก์ง์ ๊ตฌํ
๐น ๊ธฐ์กด ์ฝ๋
: ๊ธฐ์กด ์ฝ๋์์๋ Obejct ํ์ ๋ฆฌ์คํธ์์ ์ํ์ ๊บผ๋ธ ๋ค, instanceof ์์ด ์บ์คํ ์ ์๋ํ์ฌ ClassCastException ๋ฐ์ ์ํ์ด ์์์
for (Object cartProduct : shoppingCart) {
ProductSingleDTO product = (ProductSingleDTO) cartProduct;
if (product.getProduct_Single_Number() == productSingleDTO.getProduct_Single_Number()) {
product.setProduct_Single_Count(product.getProduct_Single_Count() + 1);
}
}
โ๏ธ instanceof๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๋ฐ๋ฅธ ํ์ ์ธ ๊ฒฝ์ฐ์๋ง ์บ์คํ ์ ์ํ
๐น instanceof๋ฅผ ์ฌ์ฉํ์ฌ ์์ ํ ์ฝ๋
for(Object cartProduct : shoppingCart) {
if(cartProduct instanceof ProductSingleDTO && productSingleDTO != null) {
ProductSingleDTO alreadyInProductSingle = (ProductSingleDTO) cartProduct;
if(alreadyInProductSingle.getProduct_Single_Number() == productSingleDTO.getProduct_Single_Number()) {
alreadyInProductSingle.setProduct_Single_Count(alreadyInProductSingle.getProduct_Single_Count() + 1);
alreadyIn = true;
request.setAttribute("msg", "์ฅ๋ฐ๊ตฌ๋์ ์ด๋ฏธ ์กด์ฌํ๋ ์ํ์ผ๋ก ๊ฐ์๋ง ์ฆ๊ฐํฉ๋๋ค!");
request.setAttribute("flag", true);
request.setAttribute("url", "์ํ ์์ธ์ ๋ณด ํ์ด์ง.jsp?์ํ ๋ฒํธ=" + productSingleNumber);
break;
}
}
else if(cartProduct instanceof ProductComboDTO && productComboDTO != null) {
ProductComboDTO alreadyInProductCombo = (ProductComboDTO) cartProduct;
if(alreadyInProductCombo.getProduct_Combo_Number() == productComboDTO.getProduct_Combo_Number()) {
alreadyInProductCombo.setProduct_Combo_Count(alreadyInProductCombo.getProduct_Combo_Count() + 1);
alreadyIn = true;
request.setAttribute("msg", "์ฅ๋ฐ๊ตฌ๋์ ์ด๋ฏธ ์กด์ฌํ๋ ์ํ์ผ๋ก ๊ฐ์๋ง ์ฆ๊ฐํฉ๋๋ค!");
request.setAttribute("flag", true);
request.setAttribute("url", "์ํ ์์ธ์ ๋ณด ํ์ด์ง.jsp?์ํ ๋ฒํธ=" + productComboNumber);
break;
}
}
}
โ๏ธ instanceof๋ก ๊ฒ์ฌ ํ ProductSingleDTO ๋๋ ProductComboDTO๋ก ๋ณํ
โ๏ธ ๊ฐ๋ ์ฑ ๋ฐ ์ ์ง๋ณด์์ฑ ํฅ์ → ๊ฐ ํ์ ์ ๋ง๊ฒ ์ ์ฐํ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅ