JavaWeb项目------书城

前言

这是疫情期间跟着尚硅谷视频做的一个书城项目,昨天在整理SSM文档的时候,发现还在草稿箱里面,我闲着没事就发出去了,没想到还真有人看,但是文档根本就没写完(笑),因为当时也没考虑过给所有人看,主要是想着自己看的,不过项目所实现的功能还是都在文档里面写出来了,虽然写的也不全,但是配合着视频,还是能看懂的,今天看到有小伙伴想要源码,我就先把源码分享出来,后续的再慢慢补充。

开发工具

IDEA2019

开发环境

JDK1.8+MySQL5.6+Tomcat8.0

主要技术

JSP+Servlet

源码

Github:https://github.com/UnityAlvin/book
Gitee:https://gitee.com/UnityAlvin/book
感觉本项目对你有所帮助的话,请在右上角点个Star,谢谢!

项目功能

用户

页面JSP动态化

在这里插入图片描述

  • 在 html 页面顶行添加 page 指令。
  • 修改文件后缀名为:.jsp
  • 使用 IDEA 搜索替换.html 为.jsp(快捷键:Ctrl+Shift+R)
  • regist.jsp

提取页面中相同的内容

  • head.jsp、footer.jsp、login_success_menu.jsp、manager_menu.jsp

注册、登录失败后,页面保存部分数据

  • 使用EL表达式设置需要保存数据的标签value值,动态获取Servlet中设置的返回信息
  • regist.jsp、login.jsp、UserServlet.java

合并注册、登录Servlet

  • 实际项目中,一个模块,一般只使用一个 Servlet 程序,所以使用反射提取
  • UserServlet.java

创建BaseServlet

在这里插入图片描述

  • 使用反射优化大量 else if
  • BaseServlet.java、UserServlet.java

数据的封装和提取 BeanUtils 的使用

BeanUtils 工具类,它可以一次性的把所有请求的参数注入到 JavaBean 中。
BeanUtils 工具类,经常用于把 Map 中的值注入到 JavaBean 中,或者是对象属性值的拷贝操作。
BeanUtils 它不是 Jdk 的类。而是第三方的工具类。所以需要导包。

1、导入需要的 jar 包:

  • commons-beanutils-1.8.0.jar
  • commons-logging-1.1.1.jar

2、编写 WebUtils 工具类使用

  • WebUtils.java

使用EL表达式修改表单回显

  • login.jsp

图书

  • book_manager.jsp、book_edit.jsp、
  • bookServlet.java
  • bookDao.java、bookDaoImpl.java、
  • Book.java

图书列表

在这里插入图片描述

添加图书

在这里插入图片描述

给WebUtils工具类添加转换 int 类型的工具方法

  • WebUtils.java

删除图书

在这里插入图片描述

修改图书

在这里插入图片描述

分页

在这里插入图片描述

分页模型Page

  • Page.java

实现列表分页

  • BookDaoImpl.java
  • BookService.java、BookServiceImpl.java
  • BookServlet.java
  • manager_menu.jsp、book_manager.jsp

首页、上一页、下一页、末页

  • page_nav.jsp

分页模块中跳转到指定页数功能实现

  • page_nav.jsp
  • Page.java:setPageNo()
  • BookService.java:page()

点击页码跳转、自定义显示页码

  • 显示 5 个连续的页码,而且当前页码在中间。除了当前页码之外,每个页码都可以点击跳到指定页。
  • page_nav.jsp

修改分页后,增加,删除,修改图书信息的回显页面

以修改图书为例:

  • book_manager.jsp中,在修改请求地址上追加当前页码参数
  • book_edit.jsp中,使用隐藏域记录下 pageNo 参数
  • book_servlet.jsp中,在服务器重定向的时候,获取当前页码追加上进行跳转

首页 index.jsp 的跳转

在这里插入图片描述

分页条的提取

在 page 对象中添加 url
  • Page.java
在 Servlet 程序的 page 分页方法中设置 url 的分页请求地址
  • BookServlet.java

修改分页条中请求地址为 url 变量输出, 并抽取一个单独的 jsp 页面

  • nav_book.java

首页价格搜索

在这里插入图片描述

  • ClientBookServlet.java、BookService.java、
  • BookDao.java、BookDaoImpl.java
  • index.jsp

登录、注销、验证码

登录-显示用户名

  • UserServlet 程序中保存用户登录的信息
  • 修改 login_succuess_menu.jsp
  • 修改Index.jsp

注销

  • 销毁 Session 中用户登录的信息(或者销毁 Session)
  • 重定向到首页(或登录页面)。
  • UserServlet.jsp、index.jsp

谷歌 kaptcha 图片验证码的使用

表单重复提交

  • 提交完表单,服务器使用请求转发来进行页面跳转,此时,用户按下F5,就会发起最后一次的请求,造成表单重复提交问题,可使用重定向跳转解决
  • 用户正常提交服务器,但是由于网络延迟等原因,导致用户多次点击提交按钮,也会造成表单重复提交,可以采用验证码校验。
  • 用户正常提交服务器,服务器也没有延迟,但是提交完成后,用户回退浏览器,重新提交,也会造成表单重复提交,可以采用验证码校验。
    在这里插入图片描述

谷歌验证码 kaptcha 使用步骤如下:

  • 导入谷歌验证码的 jar 包:kaptcha-2.3.2.jar
  • 在 web.xml 中去配置用于生成验证码的 Servlet 程序
  • 在页面表单中使用
  • 在服务器比较谷歌生成的验证码和客户端发送过来的验证码
  • 切换验证码
  • regist.jsp、UserServlet.java、

购物车

在这里插入图片描述

购物车模型

  • Cart.java、CartItem.java

加入购物车

  • CartServlet .java
  • index.jsp

展示购物车

  • cart.jsp

删除购物车商品项

  • CartServlet.java
  • cart.jsp

清空购物车

  • CartServlet.java
  • cart.jsp

修改购物车商品数量

  • CartServlet.java
  • cart.jsp

首页购物车数据回显

  • 在添加商品到购物车的时候,保存最后一个添加的商品名称 CartServlet.java
  • 在 index.jsp 页面中输出购物车信息

订单

在这里插入图片描述

生成订单

  • 商品添加到购物车之后,点击去结账,会创建一个对应购物车的订单
  • ClientOrderServlet.java、order.jsp

查询所有订单(管理员)

  • 分页展示出所有用户的订单信息
  • OrderServlet.java、order_manager.jsp

发货

  • 向未发货的用户发货
  • OrderServlet.java、order_manager.jsp

查看订单详情

  • 根据订单查看订单详细信息
  • OrderServlet.java、order_detail.jsp

查看我的订单

  • 根据用户id查询属于自己的订单信息
  • ClientOrderServlet.java、order.jsp

签收订单

  • 用户可在我的订单内签收已发货的订单
  • ClientOrderServlet.java、order.jsp

未登录、数据库

使用Filter过滤界面、请求

  • 用户未登录时无法访问订单、管理员界面
  • web.xml、ManagerFilter.java

使用ThreadLocal确保所有操作用一个Connection实现事务处理

在这里插入图片描述

  • getConnection()、commitAndClose()、rollbackAndClose()-------JDBCUtils.java
  • 抛出CRUD中try-catch的异常------BaseDao.java

使用Filter为所有Service方法都加上Try-Catch来管理事务

在这里插入图片描述

  • 抛出doPost()try-catch的异常------BaseServlet.java
  • 统一管理所有的事务------TransactionFilter.java
  • 添加TransactionFilter的配置------web.xml

使用Tomcat统一管理异常界面

  • 创建异常界面------error500.jsp、error404.jsp
  • 配置error标签------web.xml

注册时使用AJAX请求验证用户名是否可用

  • 在js中添加事件------user.jsp
  • ajaxExistsUsername()------UserServlet.java

使用AJAX把商品添加到购物车

  • 在js中添加事件------index.jsp
  • ajaxAddItem()------CartServlet.jsp
  • 19
    点赞
  • 142
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
JavaWeb书城项目是一个基于JavaWeb技术开发的在线图书销售平台。该项目旨在为用户提供一个方便快捷的购书平台,并支持在线购买、浏览图书信息等功能。 该项目的主要功能包括用户注册登录、图书分类浏览、商品搜索、购物车管理、订单管理等。 用户可以通过注册登录功能创建自己的账号,并进行个人信息的管理。用户登录后可以浏览不同分类的图书,并支持按关键字搜索特定的图书。同时,用户可以将心仪的图书添加到购物车中,并支持修改购物车数量和删除购物车中的图书。当用户完成商品的选购后,可以提交订单进行结算,实现购物流程的完整。 图书分类浏览的功能可以让用户根据自己的需求,选择不同的图书分类进行浏览和选择。用户可以根据自己的兴趣和需求来选择特定类型的图书。 商品搜索功能可以方便用户根据关键字快速找到所需要的图书。用户只需输入关键字即可快速搜索到与该关键字相关的图书信息。 购物车管理功能可以帮助用户管理已选购的图书。用户可以对购物车中的图书进行数量的增减和删除操作,方便用户根据自己的需求进行调整。 订单管理功能可以帮助用户查看和管理自己的订单。用户可以查看已购买的订单详情,并支持订单的取消和重新购买等操作。 总之,该JavaWeb书城项目通过提供用户注册登录、图书分类浏览、商品搜索、购物车管理、订单管理等功能,为用户打造了一个便利的在线图书销售平台。用户可以通过该平台方便地浏览、购买自己喜欢的图书,提高图书销售的便捷性和用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值