bookStore项目总结

感想

该项目是目前为止,我写过代码量最多的项目了…..虽然清楚是没有含金量的【跟着视频来写的】,但感觉自己也在进步中…..

写的过程中,出了不少的问题…..非常多的Servlet,JSP看得眼花…..

现在,想把该项目好好梳理一下要点,于是有了这篇博文….

E-R图

该项目涉及到了5个表:user、orders、orderItem、category、book

这里写图片描述

难点

E-R图设计中最难的地方就是做到订单模块那里…..

难点一

首先,要明白为什么在订单模块中设计Orders和OrderItem表两张表,而不是一张表Orders就搞掂了…当然了,这也可参考购物车案例的设计【Cart、CartItem】

  • 因为订单模块分了两个部分,一部分是显示普通的订单信息【定单人、价钱、订单时间、订单状态】
  • 而在后台中,我们还要在显示订单普通信息时,给予查看详细信息的功能【也就是订单的具体内容:具体的商品价钱、数量】

难点二:

订单模块我是最后才开始写的,订单模块和用户模块、图书模块都有相连,这就复杂了不少….

  • 一个用户可以拥有多个订单
  • 一个订单对应多个订单项
  • 一本图书对应多个订单项

难点三:

在实体的设计上,一般地,一对多的关系我们都是在多的类上使用变量了来记住一的关系。例如:在分类和图书一对多的关系中,我就是在Book类用category_id来记住分类的关系

但是呢,在订单和订单项的关系中,这样是行不通的。

  • 不能在订单项类上用一个变量来记住订单【我们在前台生成订单,普通的订单信息可以直接生成。当我们想查看详细信息时,是不能把订单和订单项连接起来,从而得到订单项的具体信息的】
  • 所以说,当生成订单的时候,也应该把所有订单项也一起封装到订单中…因此,我们这样做:在订单中维护一个Set集合来装载着所有的订单项..
  • 这也有购物车案例的味道【Cart使用Map集合来存储CartItem】….

项目中遇到的要点

  1. 在Tomcat中创建文件夹不能是manager,不然会出现403 Access Denied错误
  2. frameset标签是可以嵌套的,分列用“cols”,分行用“rows”,在src后指定target,后面request跳转显示的页面都是在target指定的页面上
  3. 实现分页主要在Page类上编写代码,在DAO层中要获取总记录数、分页数据。start和end参数是通过currentPage和linesize来计算出来的。
  4. 获取分类后的分页数据,需要在DAO层中获取分类后的总记录数,以分类作为WHERE条件得到分页数据
  5. 提交表单中有上传文件的话,我们可以使用FileUpload组件。普通字段我们使用BeanUtils的setProperty()来封装数据到Bean对象上,文件我们就写到服务端的指定目录下
  6. 在分帧页面上,如果首页就要显示数据了,我们可以在frame标签的src上指定的是Servlet,Servlet再跳转回JSP,这样JSP页面就有数据了!
  7. 如果想要div不全是浮动,我们可以在后边跟一个清除浮动的div。<div style="clear: both"></div>
  8. 想要页面上的按钮能够完成对应的功能,需要用到JavaScript代码,通过DOM编程得到对应的数据,使用window.location.href,让它跳转到对应的Servlet上实现功能
  9. Cart和CartIem的设计上,CartItem的总价是数量*价钱,Cart的总价是全部CartItem的价钱之和。
  10. Cart应该提供把商品加到购物车的功能,判断该商品的购物项是否存在,不存在着创建并保存在里边。存在则购物项的数量+1
  11. BussinessService提供购买功能,参数是Cart和Book。
  12. 用户想要购买商品时,判断用户是否登陆了,还要判断购物车是否存在【购物车使用Session来保存】,不存在则创建。
  13. Mysql中不能将表命名为“order”,这样会出错
  14. 订单的基本信息可以在Cart和User中获取,订单项的基本信息可以在CartItem中获取。因此,在BussinessService中需要Cart【通过Cart就可以找到CartItem了】和User参数。
  15. 在生成订单的Dao中,需要把订单的基本信息,订单项的基本信息封装到数据库中
  16. 通过id查找订单的时候,先找出订单的基本信息。订单表和用户表联结,就可以查找出订单的用户。通过id也就可以查找出订单中所有的订单项了。最后把查找出来的数据全部封装到订单对象上。
  17. 想要让未发货的订单变成已发货,其实就是更新订单的状态。得到未发货的全部订单和已发货的全部订单,其实就是检索出不同状态的全部订单。
  18. 在Dao层中,我们需要的参数往往是单一的,要么是具体的对象,要么就是id…然而在Service层中,我们要的参数是与该实体类相连的。
    • 例子1:在生成订单的时候,Dao层仅仅需要Order对象参数。在Service层中,Order需要把User、Cart的数据封装到Order对象中,于是就需要了这两个参数。
    • 例子2:Cart提供了把商品添加到购物车的功能,参数只需要具体商品的id。而在Service中,它需要用户的购物车对象和具体商品的id。
<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>
java图书馆管理系统项目总结PPT java图书馆管理系统的项目总结PPT,希望能对大家有帮助 立即下载

相关推荐

Cursor聊天记录迁移工具:实现跨设备AI对话同步与备份

在软件开发中,数据持久化与迁移是常见需求,尤其当工具依赖本地存储时。SQLite作为轻量级关系型数据库,因其嵌入式、零配置特性,常被用于存储应用状态与用户数据。其WAL(预写式日志)模式提升了并发性能,但也增加了数据操作复杂性。通过命令行工具与JSON序列化技术,可以实现结构化数据的提取、转换与安全迁移,这对于保障开发资产的连续性与可移植性具有重要价值。例如,在AI辅助编程场景下,开发者与AI的对话记录包含关键的问题分析、解决方案与决策逻辑,是重要的上下文资产。cursor-chat-transfer工具正

weixin_42551967的博客 533

Java Web图书管理系统总结(jsp+servlet+jdbc+javabean+dao)

这周进行了课程实践,题目是老掉牙的图书管理系统,因为一些原因,原本打算做前端的我做了全栈,虽然最后交的不是我写的,就当练手了。 首先上部分运行截图: 前端部分:采用bootstrap与layui结合,导航栏,输入框,按钮用的layui,表格用的bootstrap,大部分样式在原有框架的基础上进行了重构。 后端部分:管理员对用户和图书的管理,用户对图书的各种操作均是对数据库的更改,为 ...

Andrelia的博客 1万+

PRD撰写效率翻倍秘籍:我是如何用大模型+飞书文档搭建自动化工作流的

本文分享了如何利用大模型与飞书文档构建自动化工作流,以大幅提升PRD撰写效率。通过结构化需求输入、设计模块化提示词模板,并借助自动化脚本桥接数据与文档,产品经理可将繁琐的文档撰写工作自动化,从而将精力聚焦于产品战略与用户洞察。

weixin_28520495的博客 405

javaweb--书城项目阶段总结(一)

一,表单校验: 静态页面 包括:首页,注册,注册成功,登录页面等 验证用户名,密码这些用到了正则表达式**

mono的博客 1677

Anaconda离线创建python环境

既然是离线创建python环境,就需要有一个已经创建好的python环境。所以我们有两台win10的机器,分别是A和B。两台机器都安装了anaconda。其中A可以连网,因此我们在A上创建好一个python2.7的环境py27,然后将py27移植(安装)到B上。B连不连网都无所谓。 一、机器上A上创建python2.7的环境py27 有两种方法: 方法1:使用Anaconda的图形界面。首先,点击Environments->Create,然后输入要创建的环境名称"py27",然后选择2.7,如图

FY_2018的博客 6787

从内外参推导IPM变换方程及代码实现(生成AVM环视拼接图)

最近想实现AVM拼接,看了不少博客和论文,不过比较愚钝,一直没能很好理解原理,尤其是怎么在实现时把下文中Z1和Z2消除的,所以严谨的推导了一下对应的公式,如有不对,水平有限,烦请指出~IPM变换(逆透视变换),顾名思义,即将正常透视效应消除的变换,变换结果为鸟瞰图BEV(俯视图);AVM环视拼接一般是将车身前后左右的四个鱼眼相机拼接成环视图(也是俯视),其使用的单应矩阵将四个相机转到同一个俯视坐标系。

mxdsdo09的博客 4173

Javaweb基于ssm框架实现图书管理系统

前些天一直没有开学在家打王者,突然意识到有些荒废,于是做了一个基于ssm框架的图书管理系统,来做一下自我安慰吧。 先上效果图: 如上图所示,首页已经展示了主要的功能,这里我再细说一下吧: 首页: 首页的主要功能大部分都实现不了(首页主要用来展示一下小编的审美,前端是layui的组件拼接的,使用过layui的应该一眼就看出来了)前面纯属皮一下,这个管理系统需要身份的识别,需要先进行登录,在最右上角,点开登录有两种身份的登录方式:普通用户和管理员。 登录过后就会知道服务器关闭之前身份信息都会一直携带在.

归途 4289

JAX/JAXlib GPU 加速版本安装教程(CUDA)

本文介绍了在Windows WSL2+Ubuntu22.04环境下配置JAX/JAXlib GPU加速版本的详细步骤。使用RTX 4060显卡,安装CUDA 12.4和cuDNN 8.9.7驱动,通过Miniconda创建Python 3.9虚拟环境。具体步骤包括:安装Miniconda、配置CUDA环境变量、安装cuDNN驱动、下载并安装JAX/JAXlib。最后通过测试代码验证GPU加速功能,成功检测到GPU并完成矩阵运算。整个过程配有详细命令和截图说明,适合需要搭建JAX GPU开发环境的用户参考。

猿小白的博客 627

【JavaWeb实验】图书管理系统

【小实验】JavaWeb图书管理系统 实验目的 通过JSP&JDBC的综合运用,掌握服务端Java Web数据库编程的基本原理和常用技术。具体包括: 1、编写Java代码,熟悉并掌握JDBC的使用,包括Connection、Statement、PreparedStatement和ResultSet等对象的使用。 2、掌握JDBC在JSP页面中的综合运用。 3、掌握JSP&JDBC对单表和关联关系表进行CRUD等常规数据操作。

qq_59213531的博客 3907

TriCore架构-如何将系统刷成HSM

本文介绍了芯片刷写操作流程:首先加载project_Merge.s19文件,进入UCB界面展开BMHD0_ORIG和BMHD1_ORIG。重点说明需要将STAD地址从原始值A0000000修改为0XA00A0000,并详细描述了编辑、更新和写入芯片的步骤。最后提示在HSM刷写过程中如遇错误可能需要输入密码。该操作涉及关键地址修改,需谨慎执行。

xiandang8023的博客 95

深入大模型-19-Windows10中安装OpenClaw-CN配置接入智谱免费大模型

OpenClaw CN (中国社区版) 是 OpenClaw 的本地化维护版本,针对国内网络环境进行了深度优化,源码级原生支持 DeepSeek/Qwen 等国产大模型,致力于让中国开发者拥有最顺滑的 Agent 开发体验。

qq_20466211的博客 771

BookStore 开源项目教程

BookStore 开源项目教程 1、项目介绍 BookStore 是一个基于开源技术的在线书店管理系统。该项目旨在提供一个完整的解决方案,帮助用户快速搭建和管理自己的在线书店。BookStore 项目包含了用户管理、书籍管理、订单处理、支付集成等功能模块,适用于中小型书店的日常运营。 2、项目快速启动 环境准备 在开始之前,请确保您的开发环境已经安装了以下工具: Node.js (推荐版本: ...

gitblog_00934的博客 873

使用 MATLAB/Simulink + Simscape Electrical,构建一个含光伏并网系统与SVG的联合仿真模型,实现动态无功补偿与电压支撑

摘要:本文详细介绍了基于Simulink的SVG与光伏并网逆变器联合系统建模方法。通过构建包含光伏单元、SVG主电路和控制模块的仿真模型,实现动态无功补偿与电压稳定。重点阐述了ip-iq无功检测算法、双闭环控制和SVPWM调制等关键技术。仿真结果表明,该系统能快速响应无功需求,在10ms内将功率因数提升至0.98以上,有效抑制电压波动。文章为新能源并网系统中的电能质量治理提供了实用解决方案,并提出了进一步优化方向。

xiaoheshang_123的博客 322

SAFE-BookStore 项目教程

SAFE-BookStore 项目教程 1. 项目的目录结构及介绍 SAFE-BookStore 项目的目录结构如下: SAFE-BookStore/ ├── .github/ ├── .paket/ ├── .fake/ ├── docs/ ├── src/ │ ├── Client/ │ ├── Server/ │ ├── Shared/ ├── test/ ├── .gitign...

gitblog_00214的博客 1101

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Bookstore 开源项目教程

Bookstore 开源项目教程 1. 项目介绍 Bookstore 是一个开源项目,旨在为大众提供笔记本存储和发布工作流程的工具和建议。它通过自动版本控制、存储路径管理和发布功能,简化了 Jupyter Notebook 的管理和发布流程。Bookstore 的主要功能包括: 自动笔记本版本控制:每次保存笔记本时,都会在对象存储中创建一个不可变的副本。 存储路径管理:所有笔记本都归档到一个版本...

gitblog_01023的博客 453

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

AspNetCore.BookStore 开源项目教程

AspNetCore.BookStore 开源项目教程 1. 项目介绍 AspNetCore.BookStore 是一个基于 ASP.NET Core 的开源项目,旨在提供一个完整的图书管理系统。该项目展示了如何使用 ASP.NET Core 构建一个功能齐全的 Web 应用程序,包括用户认证、图书管理、订单处理等功能。通过这个项目,开发者可以学习到如何使用 ASP.NET Core 进行 Web...

gitblog_00839的博客 1006

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

abp示例项目BookStore搭建部署

之前部署过BookStore项目,但是换了新电脑也想好好学习下这个示例项目,于是在新电脑上重新拉了Git上的ABP项目代码,一编译生成BookStore项目就报错,可以参考 abp示例项目BookStore编译报错。解决了这个问题之后又报错了,截图如下: 我一开始以为是我的数据库链接语句配置错了,后来一排查,发现是我没有使用ef core迁移生成数据库,我的建议是使用sql server。接下来有两个方法迁移数据库。第一,在Acme.BookStore.EntityFrameworkCore.D...

zhoumouren88的博客 1090

开源项目 "Bookstore" 使用指南

开源项目 "Bookstore" 使用指南 一、项目目录结构及介绍 Bookstore 是一个用于存储、调度和发布 Jupyter 笔记本的工具,旨在为大众提供便捷的工作流。以下是此项目的基本目录结构及其简要说明: - bookstore/ ├── CHANGELOG.md # 版本更新日志 ├── CHECKLIST-release.md # 发...

gitblog_00316的博客 537

bookstore项目

bookstore项目介绍 转载于:https://my.oschina.net/javaGeeker/blog/685990

253

Fenix Bookstore 前端项目推荐

Fenix Bookstore 前端项目推荐 1. 项目基础介绍 Fenix Bookstore 前端项目是配合《凤凰架构》中单体、微服务、无服务后端工程的一个前端示例代码。该项目旨在展示如何与后端技术架构配合,实现一个线上书店的前端功能。项目使用 Vue.js 作为主要编程语言,辅以 JavaScript 和 CSS,构建用户界面。 2. 项目的核心功能 该项目的核心功能包括: 用户注册与登录...

gitblog_00150的博客 348

BookStore 开源项目安装与使用教程

BookStore 开源项目安装与使用教程 欢迎使用 BookStore 开源项目,该项目旨在提供一个简单的在线书籍管理平台示例。以下是关于如何理解和操作此项目的指南,涵盖目录结构、启动文件以及配置文件的详细介绍。 1. 项目目录结构及介绍 BookStore ├── backend # 后端服务代码所在目录 │ ├── app ...

gitblog_00576的博客 582

bookstore-cqrs-example项目指南

bookstore-cqrs-example项目指南 项目介绍 书店CRQS示例(GitHub)是一个基于CQRS(命令查询责任分离)模式和事件溯源设计原则的开源项目。该项目由Citerus开发,旨在提供一个实际的应用示例,帮助开发者理解如何在实际软件项目中实施这些复杂的设计模式。通过这个示例,你可以学习到如何将复杂的业务逻辑分解为独立的处理命令和查询组件,以及如何管理数据变更的历史记录。 项目快...

gitblog_01108的博客 373

BookStore-iOS 开源项目教程

BookStore-iOS 开源项目教程 项目介绍 BookStore-iOS 是一个示例应用程序,旨在帮助开发者练习使用 Swift 5 中的 Result 类型、模拟网络请求进行单元测试、将功能分离到框架中以及编写 Swift 文档。该项目通过展示如何实现一个简单的图书商店应用,涵盖了现代 iOS 开发中的多个关键技术点。 项目快速启动 克隆项目 首先,克隆项目到本地: git clone h...

gitblog_01024的博客 429

Bookstore项目测试缺陷报告

Bookstore项目测试缺陷报告 缺陷编号:02.02.0028发现人:林德 记录日期:2016.6.9 所属模块:购物车 确认人:林德 确认日期:2016.6.9 当前状态:公开 严重度:2 优先级:2 问题概述: 购物车书籍数量没有变化。 问题...

204

开源项目推荐:Bookstore

开源项目推荐:Bookstore Bookstore 是一个开源项目,旨在为笔记本存储和发布工作流提供工具和流程建议。该项目主要使用 Python 编程语言,同时也包含一些 JavaScript、HTML 等其他技术栈。 项目基础介绍 Bookstore 提供了一套完善的笔记本存储和发布解决方案。通过该工具,用户可以方便地将笔记本存储在对象存储中,并进行版本管理。目前,该项目主要依赖 S3 作为对...

gitblog_01138的博客 412

SAFE-BookStore 开源项目教程

SAFE-BookStore 开源项目教程 1. 项目介绍 SAFE-BookStore 是一个基于 SAFE-Stack 框架的开源项目,旨在展示如何使用 F#、Fable、Elmish 和 Saturn 等技术构建现代 Web 应用程序。SAFE-Stack 是一个全栈开发框架,结合了 F# 的强大功能和现代 Web 开发的最佳实践。SAFE-BookStore 项目提供了一个完整的示例,展示...

gitblog_00042的博客 303
上一篇: bookStore第三篇【用户模块、购买模块、订单模块】
下一篇: 泛型基础【介绍泛型、泛型类、泛型方法、通配符、擦除】
Java3y
Java3y 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 1万+粉丝 509原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值