화면 음악 c 구조 로 상품 구 매 실현(2)
실행 결과:
상대 와 상편 저희 가 카 트 가 많아 졌어 요.
우리 가 물품 을 구 매 할 때,카 트 에 필요 한 속성 은 구 매 한 상품 과 수량 이기 때문이다. 그래서 우 리 는 맵 의 키 로 구 매 한 상품 을 저장 합 니 다.
물론 총 가격 도 있 습 니 다.카 트 를 구입 하 는 방법 은 상품 을 추가 하 는 것 입 니 다. 상품 삭제 총가격 을 계산 하 다 그 중 총 가격 은 상품 을 추가 하고 삭제 할 때마다 다시 계산 해 야 한다. 카 트 상품 집합 카 트 를 초기 화 할 때 한 번 만 예화 하면 됩 니 다.
package entity;
import java.util.HashMap;
public class Cart {
//
private HashMap<Items,Integer> cart;
//
private double totalPrices;
public Cart() {
cart=new HashMap<Items, Integer>();
totalPrices=0.0;
}
public HashMap<Items, Integer> getCart() {
return cart;
}
public void setCart(HashMap<Items, Integer> cart) {
this.cart = cart;
}
public double getTotalPrices() {
return totalPrices;
}
public void setTotalPrices(double totalPrices) {
this.totalPrices = totalPrices;
}
//
public boolean addToCart(Items item,int counts){
//
if(cart.containsKey(item)){
cart.put(item, cart.get(item)+counts);
}else{
cart.put(item, counts);
}
//
calTotalPrice(item.getPrice()*counts);
return true;
}
//
public boolean removeFromCart(Items item){
if(cart!=null&&cart.containsKey(item)){
calTotalPrice(-item.getPrice()*cart.get(item));
cart.remove(item);
}
return true;
}
//
private void calTotalPrice(double price){
totalPrices+=price;
}
}
CartServlet 의 doGett 방법 은 action 에 따라 상응하는 처 리 를 한다
if (request.getParameter("action") != null) {
action = request.getParameter("action");
if ("add".equals(action)) { //
if (addGoodsToCart(request, response)) {
request.getRequestDispatcher("../success.jsp").forward(
request, response);
} else {
request.getRequestDispatcher("../failure.jsp").forward(
request, response);
}
} else if ("show".equals(action)) {//
request.getRequestDispatcher("../cart.jsp").forward(request,
response);
} else if ("delete".equals(action)) {//
deleteGoodFromCart(request, response);
request.getRequestDispatcher("../cart.jsp").forward(request,
response);
}
}
상품 인터페이스 에서 우 리 는 카 트 에 넣 을 때 현재 상품 의 번 호 를 카 트 에 전달 하 는 servlet 류 CartServlet 을 클릭 하여 현재 물품 을 처리 하고 현재 물품 을 카 트 에 넣 습 니 다.카 트 에 넣 기 전에 카 트 를 처음 만 드 는 건 지 아 닌 지 를 먼저 판단 하 겠 습 니 다. (카 트 는 하나 밖 에 없 을 거 야. 여러 개가 있 을 수 없다)카 트 를 처음 만 들 었 다 면
현재 카 트 를 session 에 넣 고 ItemsDao 대상 을 통 해 getItemById(id)방법 으로 상품 대상 을 획득 합 니 다. 。그리고 해당 상품 의 대상 과 상품 의 수량 을 카 트 에 넣 습 니 다.
//
private boolean addGoodsToCart(HttpServletRequest request,
HttpServletResponse response) {
String id=request.getParameter("id");
String counts=request.getParameter("num");
Items item=dao.getItemById(Integer.parseInt(id));
//
if(request.getSession().getAttribute("cart")==null){
Cart cart=new Cart();
request.getSession().setAttribute("cart", cart);
request.getSession().setAttribute("dao", dao);
}
Cart cart=(Cart) request.getSession().getAttribute("cart");
//
if(cart.addToCart(item, Integer.parseInt(counts))){
return true;
}else{
return false;
}
}
하면,만약,만약... CartServlet 카 트 페이지 로 다시 설정
<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
<%@ page import="entity.Cart" %>
<%@ page import="entity.Items" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'cart.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<link type="text/css" rel="stylesheet" href="css/style1.css" />
<script language="javascript">
function delcfm() {
if (!confirm(" ?")) {
window.event.returnValue = false;
}
}
</script>
</head>
<body>
<h1> </h1>
<a href="goods.jsp"> </a> >> <a href="goods.jsp"> </a>
<hr>
<div id="shopping">
<form action="" method="">
<table>
<tr>
<th> </th>
<th> </th>
<th> </th>
<th> </th>
<th> </th>
</tr>
<%
// session
if(request.getSession().getAttribute("cart")!=null)
{
%>
<!-- -->
<%
Cart cart = (Cart)request.getSession().getAttribute("cart");
HashMap<Items,Integer> goods = cart.getCart();
Set<Items> items = goods.keySet();
Iterator<Items> it = items.iterator();
while(it.hasNext())
{
Items i = it.next();
%>
<tr name="products" id="product_id_1">
<td class="thumb"><img src="images/<%=i.getPicture()%>" /><a href=""><%=i.getName()%></a></td>
<td class="number"><%=i.getPrice() %></td>
<td class="price" id="price_id_1">
<span><%=i.getPrice()*goods.get(i) %></span>
<input type="hidden" value="" />
</td>
<td class="number">
<%=goods.get(i)%>
</td>
<td class="delete">
<a href="servlet/CartServlet?action=delete&id=<%=i.getId()%>" onclick="delcfm();"> </a>
</td>
</tr>
<%
}
%>
<!-- -->
</table>
<div class="total"><span id="total"> :<%=cart.getTotalPrices() %>¥</span></div>
<%
}
%>
<div class="button"><input type="submit" value="" /></div>
</form>
</div>
</body>
</html>
상품 삭제 CartServlet 클래스 호출 을 클릭 하면 상품 삭제 방법
//
private boolean deleteGoodFromCart(HttpServletRequest request,
HttpServletResponse response) {
// session
Cart cart = (Cart) request.getSession().getAttribute("cart");
if (cart != null) {
int id = Integer.parseInt(request.getParameter("id"));
if (cart.removeFromCart(dao.getItemById(id))) {
return true;
}
}
return false;
}
논리 코드 는 주로 위 와 같다.이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
클린 아키텍처의 Presenter를 이해하기 어려운 것은 MVC 2가 아니기 때문에클린 아키텍처에는 구체적인 클래스 구성 예를 보여주는 다음 그림이 있습니다. 이 그림 중에서 Presenter와 Output Boundary(Presenter의 인터페이스)만 구체 구현을 이미지하는 것이 매우 어렵다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.