Programing_Java
[Servlet] ๊ฐ๋ณ ์ํ & ์กฐํฉ ์ํ ์ฅ๋ฐ๊ตฌ๋ ์ถ๊ฐ ๋ก์ง ํตํฉํ๊ธฐ ๐ ๋ณธ๋ฌธ
[Servlet] ๊ฐ๋ณ ์ํ & ์กฐํฉ ์ํ ์ฅ๋ฐ๊ตฌ๋ ์ถ๊ฐ ๋ก์ง ํตํฉํ๊ธฐ ๐
Joyfullyever 2025. 3. 27. 23:381๏ธโฃ ๊ธฐ์กด ๋ฐฉ์ : ๊ฐ๋ณ ์ํ๊ณผ ์กฐํฉ ์ํ์ ๋ฐ๋ก ๊ด๋ฆฌ
• ๊ธฐ์กด ProductSingle๊ณผ ProductCombo๋ฅผ ์ฅ๋ฐ๊ตฌ๋์ ์ถ๊ฐํ๋ ๊ฐ๊ฐ์ ์๋ธ๋ฆฟ์ ๋ง๋ฌ
• /AddCartSingleProductServlet → ๊ฐ๋ณ ์ํ ์ถ๊ฐ
• /AddCartComboProductServlet → ์กฐํฉ ์ํ ์ถ๊ฐ
: ์ฒ์ ๊ตฌํ ์ ์ง๊ด์ ์ด์์ง๋ง, ๋๊ฐ์ ์๋ธ๋ฆฟ์ด ๋์ผํ ๊ธฐ๋ฅ์ ์ํํ๋ฉฐ ์ฝ๋์ ์ค๋ณต์ ํ์ธ ๋ฐ ์ ์ง๋ณด์๊ฐ ์ด๋ ค์
2๏ธโฃ ํ๋์ ์๋ธ๋ฆฟ์์ ํตํฉ ๊ด๋ฆฌ
• ProductSingle๊ณผ ProductCombo๋ฅผ ํ๋์ ์๋ธ๋ฆฟ์์ ์ฒ๋ฆฌํ๋๋ก ๊ฐ์
• isComboProduct ํ๋ผ๋ฏธํฐ๋ฅผ ํ์ฉํ์ฌ ์ํ ์ ํ์ ๋จผ์ ํ๋ณ ํ → ๋์ผํ ๋ก์ง์ผ๋ก ์ฅ๋ฐ๊ตฌ๋์ ์ถ๊ฐํ๋ ๋ฐฉ์
@WebServlet("/AddCartProductServlet")
public class AddCartProductServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("application/json; charset=UTF-8");
PrintWriter out = response.getWriter();
HttpSession session = request.getSession();
ArrayList<Object> shoppingCart = (ArrayList<Object>) session.getAttribute("shoppingCart");
if (shoppingCart == null) {
shoppingCart = new ArrayList<>();
session.setAttribute("shoppingCart", shoppingCart);
}
try {
int productNumber = Integer.parseInt(request.getParameter("productNumber"));
int cartProductCount = Integer.parseInt(request.getParameter("cartProductCount"));
boolean isComboProduct = Boolean.parseBoolean(request.getParameter("isComboProduct"));
boolean alreadyIn = false;
if (isComboProduct) {
ProductComboDAO productComboDAO = new ProductComboDAO();
ProductComboDTO productComboDTO = productComboDAO.selectOne(new ProductComboDTO(productNumber));
if (productComboDTO == null) {
throw new IllegalArgumentException("ํด๋น ์กฐํฉ ์ํ์ด ์กด์ฌํ์ง ์์ต๋๋ค.");
}
for (Object cartProduct : shoppingCart) {
if (cartProduct instanceof ProductComboDTO) {
ProductComboDTO alreadyInProduct = (ProductComboDTO) cartProduct;
if (alreadyInProduct.getProductComboNumber() == productComboDTO.getProductComboNumber()) {
alreadyInProduct.setProductComboCount(alreadyInProduct.getProductComboCount() + cartProductCount);
alreadyIn = true;
break;
}
}
}
if (!alreadyIn) {
productComboDTO.setProductComboCount(cartProductCount);
shoppingCart.add(productComboDTO);
}
} else {
ProductSingleDAO productSingleDAO = new ProductSingleDAO();
ProductSingleDTO productSingleDTO = productSingleDAO.selectOne(new ProductSingleDTO(productNumber));
if (productSingleDTO == null) {
throw new IllegalArgumentException("ํด๋น ๊ฐ๋ณ ์ํ์ด ์กด์ฌํ์ง ์์ต๋๋ค.");
}
for (Object cartProduct : shoppingCart) {
if (cartProduct instanceof ProductSingleDTO) {
ProductSingleDTO alreadyInProduct = (ProductSingleDTO) cartProduct;
if (alreadyInProduct.getProductSingleNumber() == productSingleDTO.getProductSingleNumber()) {
alreadyInProduct.setProductSingleCount(alreadyInProduct.getProductSingleCount() + cartProductCount);
alreadyIn = true;
break;
}
}
}
if (!alreadyIn) {
productSingleDTO.setProductSingleCount(cartProductCount);
shoppingCart.add(productSingleDTO);
}
}
session.setAttribute("shoppingCart", shoppingCart);
JSONObject jsonResponse = new JSONObject();
jsonResponse.put("success", true);
out.print(jsonResponse);
} catch (NumberFormatException e) {
response.sendError(HttpServletResponse.SC_BAD_REQUEST, "์๋ชป๋ ์
๋ ฅ๊ฐ์
๋๋ค.");
} catch (IllegalArgumentException e) {
response.sendError(HttpServletResponse.SC_BAD_REQUEST, e.getMessage());
} finally {
out.flush();
}
}
3๏ธโฃ ๊ฐ์ ํ ๊ธฐ๋ ํจ๊ณผ
โ
์ฝ๋ ์ค๋ณต ์ ๊ฑฐ – ํ๋์ ์๋ธ๋ฆฟ์์ ๊ฐ๋ณ ์ํ๊ณผ ์กฐํฉ ์ํ์ ๋ชจ๋ ์ฒ๋ฆฌ
โ
์
๋ ฅ๊ฐ ์์ธ ์ฒ๋ฆฌ ๊ฐํ – NumberFormatException ๋ฐ null ์ฒดํฌ ์ถ๊ฐ
โ
์ํ ์กฐํ ์คํจ ์ ์ค๋ฅ ๋ฐํ – ์กด์ฌํ์ง ์๋ ์ํ์ ์ถ๊ฐํ๋ ค๋ ๊ฒฝ์ฐ ๋ช
ํํ ์ค๋ฅ ๋ฉ์์ง ์ ๊ณต
4๏ธโฃ ๋ง๋ฌด๋ฆฌ
• ProductSingle๊ณผ ProductCombo๋ฅผ ํ๋์ ์๋ธ๋ฆฟ์์ ์ฒ๋ฆฌํ ์ ์์ด ์ฝ๋ ๊ด๋ฆฌ์ ์ฉ์ด