购物车(前台)关于转发和重定向

转发和重定向的问题

在购物车界面修改数量跳转到数据处理界面,数据处理界面再转发回来,就转发不回来了

在这里插入图片描述
解决方式:把转发改成重定向

购物车(前台)

涉及的技术点:三层架构+servlet
Jdbc
Entity
Goods
User
Session:购物车(增删改查)

实现功能:

  • 其中商品数量可以在修改数量以后点修改按钮修改
  • 删除按钮则可以删除该购买商品
  • 点击继续购物后应该转入购物页面继续购物
  • 点击购物车按钮加入购物车

在这里插入图片描述

package com.zking.servlet;import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import com.zking.biz.IGoodsBiz;
import com.zking.biz.impl.GoodsBiz;
import com.zking.entity.Goods;
//@WebServlet("/LoadDateServlet.do")
public class LoadDateServlet extends HttpServlet{List<Goods> listGoods ;Goods goods ;protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//设置编码req.setCharacterEncoding("utf-8");resp.setContentType("text/html;charset=utf-8");//获取out内置对象PrintWriter out = resp.getWriter();//获取session对象HttpSession session = req.getSession();//调用查询方法IGoodsBiz igb = new GoodsBiz();try {List<Goods> listGoods = igb.queryGoods();System.out.println(listGoods);//把listGoods添加session里面session.setAttribute("listGoods", listGoods);resp.sendRedirect(req.getContextPath()+"/home/index.jsp");} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}
}

<%@page import="com.zking.entity.Goods"%>
<%@page import="com.zking.biz.impl.GoodsBiz"%>
<%@page import="com.zking.biz.IGoodsBiz"%>
<%@ page import="java.util.List" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html><head><title>购物车</title><!-- 最新版本的 Bootstrap 核心 CSS 文件 --><link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css" integrity="sha384-HSMxcRTRxnN+Bdg0JdbxYKrThecOKuH5zCYotlSAcp1+c8xmyTe9GYg1l9a69psu" crossorigin="anonymous"><%--    <!-- 最新的 Bootstrap 核心 JavaScript 文件 -->--%><script src="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha384-aJ21OjlMXNL5UyIl/XNwTMqvzeRMZH2w8c5cRVpzpU8Y5bApTppSuUkhZXN0VxHd" crossorigin="anonymous"></script></head><%//调用业务逻辑层查询所有的方法IGoodsBiz igb = new GoodsBiz();List<Goods> listGoods = (List)session.getAttribute("listGoods");%><body><div class="container"><h3 style="text-align: center">商城列表</h3><table border="1" class="table table-bordered table-hover" style ="text-align: center;"><tr class="success"><th>商品序号</th><th>商品名称</th><th>商品价格</th><th>商品描述</th><th>商品图片</th><th>商品数量</th><th>操作</th></tr><%for(Goods g :listGoods){%><tr><td><%=g.getGid() %></td><td><%=g.getGname() %></td><td><%=g.getGprice() %></td><td><%=g.getGinfo() %></td><td><img src="<%=request.getContextPath() %>/static/<%=g.getGpath() %>"></td><td><a class="btn btn-default btn-sm" href="cart.jsp">购买</a>&nbsp;</td><td><a class="btn btn-default btn-sm" href="<%=request.getContextPath() %>/AddCartsServlet.do?gid=<%=g.getGid()%>"><img src="<%=request.getContextPath()%>/static/images/购物车.png"></a>&nbsp;</td></tr><%   }%><tr><td colspan="8" align="center"><a class="btn btn-primary" href="add.html">添加联系人</a></td></tr></table></div></body>
</html>
package com.zking.servlet;import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import com.zking.biz.IGoodsBiz;
import com.zking.biz.impl.GoodsBiz;
import com.zking.entity.Goods;
import com.zking.entity.OrderItem;@SuppressWarnings("all")//忽略所有警告
@WebServlet("/AddCartsServlet.do")
/**
增加购物车数据处理界面
public class AddCartsServlet extends HttpServlet{List listGoods = new ArrayList();Goods goods ;protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {try {//设置编码req.setCharacterEncoding("utf-8");resp.setContentType("text/html;charset=utf-8");//获取out内置对象PrintWriter out = resp.getWriter();//获取session对象HttpSession session = req.getSession();//获取gidString gid = req.getParameter("gid");System.out.println(gid);//先获取session里面的订单项集合listOrderItemList listOrderItem = (List)session.getAttribute("listOrderItem");//如果listOrderItem集合为null,则表示没有商品。则new一个if(null==listOrderItem) {//定义一个订单项集合(其实就是一个订单)listOrderItem = new ArrayList();}IGoodsBiz igb = new GoodsBiz();//调用查询单个的方法goods = igb.queryGoods(gid);System.out.println(goods);listGoods.add(goods);session.setAttribute("listGoods", listGoods);/*** 修改数量* 1.遍历订单集合* 2.非空判断* 3.判断要增加的商品是否存在listOrderItem集合里面* 4.修改该订单项的商品数量(oi.getGcount()+1* 5.重新计算订单总价(调用计算订单项价格)*/boolean flag = true;for (OrderItem oi : listOrderItem) {if(oi!=null) {if(oi.getGoods().getGid()==Integer.parseInt(gid)) {oi.setGcount(oi.getGcount()+1);oi.calOrderItemPrice();flag = false;break;}}}//如果要增加的商品不在listOrderItem集合里面,则创建新的订单项对象,存放商品if(flag) {//创建一个订单项对象OrderItem orderItem = new OrderItem();//给订单项对象orderItem属性赋值orderItem.setGoods(goods);orderItem.setGcount(1);//每次只能往购物车添加一个商品orderItem.calOrderItemPrice();//调用计算订单项总价的方法//当订单项对象添加到订单项集合里面listOrderItem.add(orderItem);//把订单项集合保存到session里面session.setAttribute("listOrderItem", listOrderItem);}resp.sendRedirect(req.getContextPath()+"/home/cart.jsp");} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
package com.zking.servlet;import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import com.zking.biz.IGoodsBiz;
import com.zking.biz.impl.GoodsBiz;
import com.zking.entity.Goods;
import com.zking.entity.OrderItem;
/*** 删除购物车数据处理界面* @author jin**/
public class DelGoodsServlet extends HttpServlet{protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req, resp);}protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//设置编码req.setCharacterEncoding("utf-8");resp.setContentType("text/html;charset=utf-8");//获取out内置对象PrintWriter out = resp.getWriter();//获取session对象HttpSession session = req.getSession();//获取gidString gid = req.getParameter("gid");System.out.println(gid);//获取BuyGoodsServlet的session值(listGoods)List<OrderItem> listgOrderItem =(List)session.getAttribute("listOrderItem");//删除操作for(OrderItem oi:listgOrderItem) {if(oi.getGoods().getGid()==Integer.parseInt(gid)) {//数组里面的gid和界面获取页面的gid等同,才可以移除listgOrderItem.remove(oi);//移除订单项break;}}req.getRequestDispatcher("/home/cart.jsp").forward(req,resp);}}
package com.zking.servlet;import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import com.zking.entity.OrderItem;
/*** 修改数量数据处理界面* @author jin**/
@WebServlet("/UpdateGoodsServlet.do")
public class UpdateGoodsServlet extends HttpServlet{protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//设置编码req.setCharacterEncoding("utf-8");resp.setContentType("text/html;charset=utf-8");//获取out内置对象PrintWriter out = resp.getWriter();//获取session对象HttpSession session = req.getSession();// 获取要修改的商品编号Integer gid = Integer.parseInt(req.getParameter("gid"));// 获取用户修改后的商品数量Integer gcount = Integer.parseInt(req.getParameter("gcount"));// 先获取   session里面的订单项集合listorderItemList<OrderItem> listOrderItem = (List<OrderItem>)session.getAttribute("listOrderItem");/*** 修改数量* 1.遍历订单集合* 2.非空判断* 3.判断要增加的商品是否存在listOrderItem集合里面* 4.修改该订单项的商品数量(oi.getGcount()+1* 5.重新计算订单总价(调用计算订单项价格)*/if(null!=listOrderItem) {for (OrderItem oi : listOrderItem) {if(oi!=null) {if(gid==oi.getGoods().getGid()) {oi.setGcount(gcount);oi.calOrderItemPrice();break;}}}}resp.sendRedirect(req.getContextPath()+"/home/cart.jsp");
//			req.getRequestDispatcher("/home/cart.jsp");}
}

<%@page import="com.zking.entity.OrderItem"%>
<%@page import="com.zking.entity.Goods"%>
<%@page import="java.util.List"%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<script type="text/javascript">// 修改商品数量function update(gid){// 获取修改后的商品数量var gcount = document.getElementById(gid).value;//跳转到后台,并且传商品id和修改后的商品数量location.href="/jsp_12/UpdateGoodsServlet.do?gcount="+gcount+"&gid="+gid+""}</script><title>Title</title><!-- 最新版本的 Bootstrap 核心 CSS 文件 --><link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css" integrity="sha384-HSMxcRTRxnN+Bdg0JdbxYKrThecOKuH5zCYotlSAcp1+c8xmyTe9GYg1l9a69psu" crossorigin="anonymous"><%--    <!-- 最新的 Bootstrap 核心 JavaScript 文件 -->--%><script src="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha384-aJ21OjlMXNL5UyIl/XNwTMqvzeRMZH2w8c5cRVpzpU8Y5bApTppSuUkhZXN0VxHd" crossorigin="anonymous"></script><script type="text/javascript">//页面加载的时候,所有的复选框都是未选中的状态function checkOrCancelAll(){//1.获取checkbo的元素对象`var chElt=document.getElementById("chElt");//2.获取选中状态var checkedElt=chElt.checked;console.log(checkedElt)//3.若checked=true,将所有的复选框选中,checked=false,将所有的复选框取消var allCheck=document.getElementsByClassName("interest");//4.循环遍历取出每一个复选框中的元素//var mySpan=document.getElementById("mySpan");if(checkedElt){//全选for(var i=0;i<allCheck.length;i++){//设置复选框的选中状态allCheck[i].checked=true;}//mySpan.innerHTML="取消全选";}else{//取消全选for(var i=0;i<allCheck.length;i++){allCheck[i].checked=false;}
//mySpan.innerHTML="全选";}}function checkChecked(){let input = document.getElementsByClassName("interest");for (let i = 0; i < input.length; i++) {if(input[i].checked == true){let price = document.getElementsByClassName("price");}}}</script>
</head>
<body>
<%request.setCharacterEncoding("utf-8");List<OrderItem> listOrderItem =(List)session.getAttribute("listOrderItem");System.out.print(listOrderItem);%><div class="container"><h3 style="text-align: center">商城列表</h3><table border="1" class="table table-bordered table-hover"><tr class="success"><th><input type="checkbox" id="chElt" onclick="checkOrCancelAll()"><span id="mySpan"></span></th><th>商品序号</th><th>商品名称</th><th>商品价格</th><th>商品描述</th><th>商品图片</th><th>商品数量</th><th>商品总价</th><th>操作</th></tr><%//订单项总价:double sum=0.0;for (OrderItem oi:listOrderItem) {System.out.print(oi);sum+=oi.getOrderItemPrice();%><tr><td><input type="checkbox" class="interest"></td> <td><%=oi.getGoods().getGid()%></td><td><%=oi.getGoods().getGname() %></td><td><%=oi.getGoods().getGprice() %></td><td><%=oi.getGoods().getGinfo() %></td><td><img alt="图片加载失败!" src="<%=request.getContextPath() %>/static/<%=oi.getGoods().getGpath() %>"></td><td>	<input type="text" id="<%=oi.getGoods().getGid() %>" value="<%=oi.getGcount() %>" style="text-align: center; align:content;width:40px " /></td><td><%=oi.getOrderItemPrice() %>  </td><td><a class="btn btn-default btn-sm" href="cart.jsp">购买</a>&nbsp;<a class="btn btn-default btn-sm" href="javascript:update('<%=oi.getGoods().getGid() %>')">修改</a></td><td><a class="btn btn-default btn-sm" href="<%=request.getContextPath() %>/DelGoodsServlet.do?gid=<%=oi.getGoods().getGid()%>"><img src="<%=request.getContextPath()%>/static/images/删除.png"></a>&nbsp;</td><!-- <td><a class="btn btn-default btn-sm" href="update.html">购买</a>&nbsp;</td> --></tr><%}%><tr><td colspan="8" align="left"><a href="<%=request.getContextPath() %>/LoadDateServlet.do">返回商品页面</a></td>
<%--            <td colspan="8" align="center"><a class="btn btn-primary" href="add.html">添加联系人</a></td>--%><td colspan="8" align="right"><a href="javascript:checkChecked();">我要结账</a></td></tr></table><h1>总价:<%=sum %></h1></div></body>
</html>


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部