web网上书店总结(jsp+servlet)
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)的更多相关文章
- web项目总结——通过jsp+servlet实现对oracle的增删改查功能
1.DAO模式 分包:依次建立 entity:实体包,放的是跟oracle数据库中表结构相对应的对象的属性,也就是这个对象有什么 dao:增删改查接口,实现增删改查的具体方法 service:同dao ...
- Java Web整合开发王者归来(JSP + Servlet + Struts + Hibernate + Spring) - 读书笔记
第1章 状态码表示响应类型: 保留 表示请求成功地接收 完成请求客户需进一步细化请求 客户错误 服务器错误 Web服务器: Apache服务器,特长是处理静态页面,效率非常高. Tomcat提供对JS ...
- java web简易网上书店项目系列,使用MVC模式(servlet+jstl+dbutils),开篇
一. 针对很多java web初学者入门困难的问题,笔者利用一个小型web项目,一步一步的展示java web开发方法,每一个章节引入一些java web开发的重点知识,让同学们可以将java web ...
- JSP+Servlet+C3P0+Mysql实现的网上蛋糕店
本文存在视频版本,请知悉 项目简介 项目来源于:https://gitee.com/PositiveMumu/CakesShop/tree/master 这次分享一个蛋糕商场系统,还是很简单的系统.界 ...
- JSP Servlet WEB生命周期
[转载] JavaWeb的生命周期是由Servlet容器来控制的总的来说分为三个阶段1.启动阶段:加载web应用相关数据,创建ServletContext对象,对Filter和servlet进行初始化 ...
- jsp+servlet+javabean开发web项目
一.介绍: 项目依赖包:jdbc数据库包 jsp+servlet+javabean开发web项目,是最接近web项目原生运行原理的. 但是,jsp内容混乱,项目结构复杂时,代码会混乱 二.运行原理: ...
- JSP/Servlet Web 学习笔记 DayOne
JSP概述 1)JSP是一种动态网页技术标准,它是在传统的页面HTML文件中插入Java程序段和JSP标记(tag),从而形成JSP文件(*.jsp),也称JSP页面. 2)JSP容器是一个支持JSP ...
- JSP/Servlet Web应用中.properties文件的放置与读取
本地项目 在本地类库中,我经常使用当前目录来放置.properties文件,这时调用方只要引用我的jar,并且将我的.properties放在他的classpath里面即可,比如: p.load(ne ...
- 关于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 ...
随机推荐
- Luogu-P3205-HNOI2010-合唱队
题目地址 思路 这道题其实是P3146 [USACO16OPEN]248的升级版,但是N的范围很大,为262144.原先的O(N3)的方法自然会TLE,甚至O(N2)的方法也不足以解决. 定义f[i] ...
- 九、git学习之——git基本命令全总结
初始化一个Git仓库,使用git init命令. 添加文件到Git仓库,分两步: git add <file>,注意,可反复多次使用,添加多个文件: 使用命令git commit,完成. ...
- nginx负载均衡引出的登录session的配置问题
不使用session,换成cookie session是存放在服务器端的,cookie是存放在客户端的,我们可以把用户访问页面产生的session放到cookie为中转站.你访问web服务器A,产生了 ...
- css 06-CSS盒模型详解
06-CSS盒模型详解 #盒子模型 #前言 盒子模型,英文即box model.无论是div.span.还是a都是盒子. 但是,图片.表单元素一律看作是文本,它们并不是盒子.这个很好理解,比如说,一张 ...
- matplotlib的学习5-legend图例
import matplotlib.pyplot as plt import numpy as np ''' legend 图例就是为了帮我们展示出每个数据对应的图像名称. 更好的让读者认识到你的数据 ...
- TP学习第二天—
一.控制器和对应方法的创建 2.路由解析 传统的路由解析方法: 具体url地址模式设置(配置文件在 ThinkPHP/Conf/convertion.php) 停到了之前的 黑马传智的 TP课,换了个 ...
- 常用的一句话反弹shell总结
文章转载来源:https://blog.csdn.net/qq_38684504/article/details/90047213#1.%20bash%E7%9B%B4%E6%8E%A5%E5%8F% ...
- python装饰器学习详解-函数部分
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理 最近阅读<流畅的python>看见其用函数写装饰器部分写的很好,想写一些自己的读书笔记. ...
- 制作3D小汽车游戏(下)
书接上回,这一节我们分模块说一说怎么写一个这样的游戏 1. 初始化场景.相机和渲染器 这几乎是绘制three必须做的事情,我们有两套场景和相机,一个是主场景和相机,另一个是小地图的场景和相机(用来俯视 ...
- python序列(四)成员资格判断
判断是否存在指定的值 1.count()方法,如果存在则返回大于0的数,如果返回0则表示不存在. 2."in"关键字来判断一个值是否存在于列表中,返回结果为"True&q ...