web网上书店总结

前端的首页。效果如下:
基本上按照页面有的内容对其实现功能。按照用户划分功能模块,有后台管理员和普通用户,登录的时候会判断账户的类别,例如0权限代表普通用户登录,1权限代表管理员登录,然后转发到相对的页面。普通用户登录成功后返回首页,我的账户:xxx,显示用户名,这时就可以加入购物车;如果没有登陆就点击了购买就会跳转到登录页面,注册的时候需要验证码,注册成功返回登录页面。主要还是聊聊购物车和订单模块;因为用户对购物车里面的操作较为频繁,所以数据库并没有单独创建一个表,使用一个map集合book对象作为键,Integer对象作为值,如果这本图书是第一次加入,那就新创建一个hashmap,值设置为1,如果map集合中已经有这个键,那就让数值加一

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String id = request.getParameter("id");
BookService bookService = new BookService();
Book book = bookService.findBook(id); //1.先从session中获取购物车的数据
Map<Book,Integer> map = (Map<Book, Integer>) request.getSession().getAttribute("cart"); if(map==null){//如果购物车没有数据,就新创建一个购物车
map= new HashMap<Book,Integer>();
map.put(book,1);//把这本书装进购物车,数量设置成1
}else {
if (map.containsKey(book)){//如果购物车已经有这本书,那就让数量加一
// (这个containKey默认比较的是hashCode,所以要重写equals,hashCode方法)
map.put(book,map.get(book)+1);
}else {
//如果是第一次添加就是1
map.put(book,1);
} } /* for (Map.Entry<Book, Integer> map1 : map.entrySet()) {
System.out.println(map1.getKey()+": 数量:"+map1.getValue());
}*/ request.getSession().setAttribute("cart",map); //重定向到购物车页面
response.sendRedirect(request.getContextPath()+"/cart.jsp"); }

因为使用了map.containsKey();方法,这个就需要重写book类的hashCode(),和equals()方法。
book的主键是id所以生成方法的时候按照ID进行比较就好了。

当删除购物车的商品时,只需要将map集合中的键移除掉就好。map.remove(book);
订单模块中创建了两个表,order表和orderItem订单项表,订单表中是用户确认定单后,向表中插入了用户的一些信息,例如收货地址和用户ID,手机号等等。订单项表中是具体的商品信息,bookID和买的数量,订单项的订单id即是主键还是订单表的外键,商品id也是根据商品表所创建的外键。

确认订单后可以在我的账户中查看订单详情,这时的支付状态当然是未支付了,如果不想要的话就删除订单,

点击查看,确认个人信息正确后,可以进行支付。

结账的页面比较low,就是几个单选框。确认支付,跳转到支付成功页面。大概就是这个逻辑。

支付成功后会自动返回首页。
后台管理员目前仅能对书本进行增删改查。
查询的时候可以进行多条件查询。

目前就这些。具体代码实现在这里
博主比较菜,以上逻辑有不对的欢迎指正,共同进步!
代码人生!

web网上书店总结(jsp+servlet)的更多相关文章

  1. web项目总结——通过jsp+servlet实现对oracle的增删改查功能

    1.DAO模式 分包:依次建立 entity:实体包,放的是跟oracle数据库中表结构相对应的对象的属性,也就是这个对象有什么 dao:增删改查接口,实现增删改查的具体方法 service:同dao ...

  2. Java Web整合开发王者归来(JSP + Servlet + Struts + Hibernate + Spring) - 读书笔记

    第1章 状态码表示响应类型: 保留 表示请求成功地接收 完成请求客户需进一步细化请求 客户错误 服务器错误 Web服务器: Apache服务器,特长是处理静态页面,效率非常高. Tomcat提供对JS ...

  3. java web简易网上书店项目系列,使用MVC模式(servlet+jstl+dbutils),开篇

    一. 针对很多java web初学者入门困难的问题,笔者利用一个小型web项目,一步一步的展示java web开发方法,每一个章节引入一些java web开发的重点知识,让同学们可以将java web ...

  4. JSP+Servlet+C3P0+Mysql实现的网上蛋糕店

    本文存在视频版本,请知悉 项目简介 项目来源于:https://gitee.com/PositiveMumu/CakesShop/tree/master 这次分享一个蛋糕商场系统,还是很简单的系统.界 ...

  5. JSP Servlet WEB生命周期

    [转载] JavaWeb的生命周期是由Servlet容器来控制的总的来说分为三个阶段1.启动阶段:加载web应用相关数据,创建ServletContext对象,对Filter和servlet进行初始化 ...

  6. jsp+servlet+javabean开发web项目

    一.介绍: 项目依赖包:jdbc数据库包 jsp+servlet+javabean开发web项目,是最接近web项目原生运行原理的. 但是,jsp内容混乱,项目结构复杂时,代码会混乱 二.运行原理: ...

  7. JSP/Servlet Web 学习笔记 DayOne

    JSP概述 1)JSP是一种动态网页技术标准,它是在传统的页面HTML文件中插入Java程序段和JSP标记(tag),从而形成JSP文件(*.jsp),也称JSP页面. 2)JSP容器是一个支持JSP ...

  8. JSP/Servlet Web应用中.properties文件的放置与读取

    本地项目 在本地类库中,我经常使用当前目录来放置.properties文件,这时调用方只要引用我的jar,并且将我的.properties放在他的classpath里面即可,比如: p.load(ne ...

  9. 关于jsp web项目,jsp页面与servlet数据不同步的解决办法(报错404、405等)即访问.jsp和访问web.xml中注册的/servlet/的区别

    报错信息: Type Status Report Message HTTP method GET is not supported by this URL Description The method ...

随机推荐

  1. 题解-洛谷P4724 【模板】三维凸包

    洛谷P4724 [模板]三维凸包 给出空间中 \(n\) 个点 \(p_i\),求凸包表面积. 数据范围:\(1\le n\le 2000\). 这篇题解因为是世界上最逊的人写的,所以也会有求凸包体积 ...

  2. 5+App 相关记录

    一.页面跳转到app 1.应用的manifest.json文件,plus --> distribute --> google 节点下,增加属性 schemes 2.打包后,在手机里安装. ...

  3. ftp之filezilla使用记录

    1.550 can't access file错误 我们在客户端查看文件时,有些文件被另外的程序占用了,就会出现这个错误.比如,log日志文件.解决办法:在server端,找到settings设置,找 ...

  4. [JDK8]Map接口与Dictionary抽象类

    package java.util; 一.Map接口 接口定义 public interface Map<K,V> Map是存放键值对的数据结构.map中没有重复的key,每个key最多只 ...

  5. STL—— 容器(vector)的各种功能方法

    1. 获取容器的元素个数 size() 使用 vectorName.size() 可以输出这个容器中类型的个数,如下代码: 1 #include <iostream> 2 #include ...

  6. MySQL 锁(完整版)

    目录 锁总览 锁的作用 加锁流程 锁对数据库的影响 锁等待 死锁 锁类型 锁范围 锁方式 全局锁 全局读锁 全局QC锁 QC锁存在的问题: 备份锁 backup lock MDL锁 MDL锁类型 MD ...

  7. Linux下weblogic启动慢

    修改Linux上Weblogic使用的jdk $JAVA_HOME/jre/lib/security/java.security (/bea/weblogic/jdk150_12/jre/lib/se ...

  8. JavaSE01-概述

    1.1 Java语言发展史 语言:人与人交流沟通的表达方式 计算机语言:人与计算机之间进行信息交流沟通的一种特殊语言 Java语言是美国Sun公司(Stanford University Networ ...

  9. [OI笔记]三种逆元的求法

    其实这篇博客只是搬运一下我之前(大概是NOIP那会)写在word里的笔记- 下面直接复制原话,题目是洛谷上求逆元的模板题:https://www.luogu.org/problemnew/show/P ...

  10. Flink怎么做到精确一次的?

    使用 分布式快照机制 和 两阶段提交 两阶段提交 在 Flink 中两阶段提交的实现方法被封装到了 TwoPhaseCommitSinkFunction 这个抽象类中,我们只需要实现其中的beginT ...