Flask接口签名sign原理与实例代码浅析
208
2023-06-29
mvc架构实现商品的购买(二)
在上篇文章中 使用了mode1的模型来实现商品的浏览,这篇文章在上篇的基础上,使用mvc架构实现商品的购买。
运行结果:
相对与上篇文章 我们多了购物车类
由于我们在购买物品时,购物车需要的属性为购买的商品和数量 所以我们用map的键值来保存购买的商品。
当然还有一个总价格,购物车的方法有 添加商品 删除商品 计算总价格 其中总价格应该在每次添加商品和删除商品时 重新计算 购物车商品集合 只在初始化购物车的时候实例化一次即可
package entity;
import java.util.HashMap;
public class Cart {
//购物车商品集合
private HashMap
//总金额
private double totalPrices;
public Cart() {
cart=new HashMap
totalPrices=0.0;
}
public HashMap
return cart;
}
public void setCart(HashMap
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(
PpaZZBm request,http:// 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开始处理当前物品 并将当前物品放入购物车
再放入购物车之前 首先判断是否是第一次创建购物车 (购物车肯定只有一个 不能有多个)如果是第一次创建购物车cart
将当前购物车放入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+"/";
%>
<%
//首先判断session中是否有购物车对象
if(request.getSession().getAttribute("cart")!=null)
{
%>
<%
Cart cart = (Cart)request.getSession().getAttribute("cart");
HashMap
Set
Iterator
while(it.hasNext())
{
Items i = it.next();
%>
<%=i.getPrice()*goods.get(i) %>
<%=goods.get(i)%>
<%
}
%>
<%
}
%>
当点击了删除商品 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;
}
逻辑代码主要如上。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~