首页 > 编程知识 正文

jsp购物车提交订单,购物车html代码

时间:2023-05-04 13:43:15 阅读:35977 作者:3432

前几天复习完了servlet和JSP的知识,想总结一下,想开发简化版的购物车。 虽说是简化版,但购物车的逻辑与天猫、京东购物车的逻辑基本相同。 看看这辆购物车是怎么实现的。

说明:本文参考某大人物教材,在文末说明出处

主要就以下方面进行开发。

相关产品模块购物车模块订购模块首先,产品订单用户,http://www.com/他们的关系怎么样呢? 产品与订单项目之间有一对多的关系,订单项目与订单的关系是多对一的,订单与用户的关系是多对一的。 在介绍了班级和班级的关系之后,我们进行开发。

首先,创建数据库,创建新的product表,然后插入四个数据供以后使用

接下来,创建与idea对应的实体类。 字段与数据库中的字段一一对应。 接下来,必须为product表创建DAO作为查询数据。 因为是简化的购物车,所以这里只进行查询操作。 然后,需要调用DAO以显示在浏览器中的servlet。 代码如下。

@ overrideprotectedvoidservice (httpservletrequestreq,HttpServletResponse resp ) throws ServletException,io exception { list req.getrequest dispatcher (JSP/list product.JSP ).forward ) req,resp ); 在JSP中,这意味着有一个表,每一行都是根据传递的数组添加的。 效果如下。

如果登录失败,请再次跳转到登录页面。 登录的servlet代码如下:

@ overrideprotectedvoiddopost (httpservletrequestreq,HttpServletResponse resp ) throws ServletException,io exception { req . string password=req.getparameter (password ); User user=new UserDAO ().getuser(name,password ); if (空!=user.getName () { System.out.println '登录成功! ' ); req.getSession ().setattribute )、user ); resp.sendredirect (产品列表servlet ); }else { System.out.println ('登录失败! ' ); resp.sendredirect(index.JSP ); }然后是用户模块。 刚才实施的用户注册是用户模块的内容。 简要说明大致的安装过程。 首先需要用户表。 以下内容需要相应的实体类: 而且,仍然需要DAO来调查用户表的内容。 请先叫我用户列表道。 调查的东西在哪里有用吗? 因此,需要一个用于验证输入是否正确的servlet。 如果正确,可以传递用户内容并登录。

然后,让我们仔细想想购物车的显示模块。 购物车里的哪个订单是怎么实现的呢? 不仅同一订单在一个订单项目中,还有很多订单项目。 同样的商品可以买一个,也可以买多个,但是买多个的话就只能产生一个订单项目。 如果买三个同样的商品,对应三个订单项目,那就不正确了。 在此阶段,所有订单项目都存储在session中,并且仅在上次提交订单时存储在数据库中。

这里需要新建订单项目的OrderItem类。 那里有数量和商品的信息。 购买商品时提交的是pid,OrderItem上是Product,所以需要从id中查找商品的价格和名称。 实际上,购买行为本身就是创建OrderItem的过程。 因为每次创建新订单时,都会创建新的OiderItem对象,将价格名称添加到集中,最后添加到集中。 第一次创建时,该集为空,包含第一条记录,跳转到显示屏,执行添加到购物车的操作,然后直接添加。

查看购物车时更容易,几乎都在服务器上

t当中都做好了,就是把数据显示出来而已,另外再增加一个删除操作。

刚才说到相同的订单不管数量是多少都对应一条订单项,然后我们需要在servlet当中进行判断是否是相同的id,如果是的话只改变数量就可以了。

boolean found = false; for (OrderItem orderItem : ois) { if (orderItem.getProduct().getId() == oi.getProduct().getId()) { orderItem.setNum(orderItem.getNum() + oi.getNum()); found = true; break; } } if (!found) ois.add(oi);

删除操作大体思路就是把这条订单项也就是这个商品的id号传到servlet当中,然后将集合进行遍历,比较,如果找到对应的订单项,那么就remove删除此记录。跳转到购物车界面。

@Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { int id = Integer.parseInt(req.getParameter("id")); List<OrderItem> ois ; ois = (List<OrderItem>) req.getSession().getAttribute("ois"); for (OrderItem orderItem : ois) { if(orderItem.getProduct().getId()==id){ ois.remove(orderItem); req.getSession().setAttribute("ois", ois); break; } } resp.sendRedirect("/listOrderItem"); }

前面根据购物车的逻辑已经做好了下单之前额所有准备了,当我们在淘宝上下单的时候加入购物车确定数量之后接下来要做什么呢?没错,就是提交订单然后付款了,提交订单之后购物车的使命就正式结束了。那么然后我们接下来就做一下清空购物车的操作吧!
大致做完了购物车的逻辑实现,先贴几张图片看看效果吧


我们看完了效果再说一下逻辑,首先我们需要两个表,一个是用来存储用户信息的表,另一个是用来存储购物车里面的信息的表,购物车里面的信息出了商品名数量还有价格之外,还有对应的用户名,因为每次提交订单都是同一个对象提交的订单,不可能是两个对象提交了同一个订单,所以我们知道了这个逻辑之后就要新建一个servlet对其进行操作,我们也要新建两个DAO一个是用来存储用户名的另一个是用来存储购物车里面的信息的,servlet里面做的事情就是验证是否已经登录(这是各大电商平台的下单的逻辑,没有登陆的话必须先登录)。如果不为空的话就先把用户名的id存入到数据库中,有了用户的id就可以遍历购物车里面的内容了,然后每遍历一项都要把这个用户的id存进去,然后再把整个的订单项存到数据库当中,当购物车里面的东西都存好之后就要清除购物车了,因为这个购物车里面的东西是一个集合,没有涉及到数据表,所以我们只需要调用集合的clear方法,清空即可。
提交订单的servlet代码:

@Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { User u = (User) req.getSession().getAttribute("user"); if (null == u){ resp.sendRedirect("JSP/index.jsp"); } Order o = new Order(); o.setUser(u); //将这个购物车的用户存入数据库 new OrderDAO().insert(o); List<OrderItem> ois = (List<OrderItem>)req.getSession().getAttribute("ois"); for (OrderItem oi:ois) { oi.setOrder(o); new OrderItemDAO().insert(oi); } //清空购物车 ois.clear(); resp.setContentType("text/html; charset=UTF-8"); resp.sendRedirect("JSP/success.jsp"); }

清空之后也就代表着下单完成了,跳转到订单完成界面就ok了,如果是在真正的购物的时候是需要跳转到支付界面的,由于我们这里是简化版的所以这一步我们就省略了,只要知道大概的逻辑就可以了。
好了,以上这些就是开发一个简化版购物车的所有逻辑,基本上所有的电商平台开发购物车的逻辑与之无二,所以有了这个逻辑去开发更全面的购物车也会顺手一些,继续努力吧骚年们~

参考文献:https://how2j.cn/k/cart/cart-tutorials/595.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。