一文叫你学会用JavaWeb开发共享图书馆系统(附加支付宝沙箱支付接入)

本文介绍了一个使用JavaWeb技术开发的共享图书馆系统,详细阐述了从系统架构、数据库设计到实现的全过程。系统采用MySQL、JDBC、Eclipse、Tomcat等工具,实现用户注册、登录、借阅、归还等功能,并讨论了MVC设计模式的应用。同时,文章提及了即将接入支付宝沙箱支付的计划,以完善交易流程。
摘要由CSDN通过智能技术生成

 

前提:

学习书籍:

        黑马程序员的《Java Web程序设计任务教程》;

下载安装Eclipse 2021、MySQL 5.5、Tomcat 8.5,很简单,找其他人的博客就可以,其中JDK配置一定不要忘记添加在环境变量里;

经过七天的基本学习后,你应该有个JavaWeb的基础,明白基本语法,能够成功地运行简单的程序;

 

 

系统架构说明:

采用My SQL 5.5、JDBC、Eclipse2021完成开发;

        共享图书馆系统分为web前台、后台和数据库,前台是用户界面,后台是管理员操作界面,数据库采用JDBC连接到本地的MySQL,存放系统的数据;

        前台的用户界面可以实现用户操作和图书浏览;

        用户操作有权限设置,分为登录、未登录状态以及管理员状态;

        未登录状态下的用户操作包括:用户注册、登录、浏览书籍等;

        登录状态下的用户操作包括:用户信息修改、借阅书籍、归还书籍、浏览个人借阅情况等;

        管理员状态下可以对前台界面的书籍信息作编辑操作;

ff23494c6c5b4ac79326de4fdbbc7883.png

adbd55e62c5f4c05935ebc7d27e412d6.png

        后台管理员界面的功能包括:图书管理(增删改查)、借阅排行榜、借阅管理(查看所有订单并且具删除注销功能)、上架消息(上架新书的公告);

7d6d54a2f3a64fb1bf914e911c130aac.png

 2546b62c9d28435ea3bfc7febc3c94b1.png

         而对于前后台存取数据,采用JDBC连接数据库,因为JDBC是一套用于执行SQL语句的Java API,通过API连接到关系型数据库,采用SQL语句来完成对数据库中数据的查询、更新、新增和删除的操作;

        除此之外,JDBC是和具体的数据库驱动联系,这也使得用户不必与底层的数据库交互,SQL数据库内容也可导出来,使得代码的通用性更强,也便于小组成员之间的交互;

        下图即前台(后台)采用JDBC访问数据库的方式:

14ef55de79654ea4ba5bd7ee0a490af7.png

         为了确保数据库操作的连续性和原子性,采用ThreadLocal封装connection,使得单个线程里多次调用数据库的connection都是同一个;

        上面简单地介绍了系统的几个主体部分,前台、后台、数据库连接,接着讲述一下系统如何设计以及这三者是采用什么方式交互;

        因为这是一个共享图书管理系统,需要多次读取数据,数据库访问频繁,但调取的方法是类似的,甚至是一样的,所以考虑复用代码,将重复使用的方法写成一个类;

        而数据存取需要通过一个集合来存储,再显示到界面上,或者是数据只需要用到某个字段,这种数据处理也作为一个类来重复调用;

        前台、后台、数据库也有对应的功能模块,按照逻辑上的业务划分,将每个业务分别成类;

        前、后台的页面以及点击对应超链接跳转到其他页面的样式设计,放在WebContent文件夹下,用jsp技术实现;

        综上设计思路,为了在代码上实现分离逻辑层操作、页面展示、数据处理,复用代码以及方便小组分工协作,该系统采用基于MVC设计模式的JSP Model2模型进行开发;

        M(Model)即业务模型,V(View)即用户界面,C(Controller)即控制器,用下图来展示该系统的架构设计;

         1420702abe364e0bab6295b9e4bdd8ce.png

         模型采用Dao,用来封装业务数据和作为业务逻辑模型来包含业务操作,例如,本系统的Dao包如下所示:

0cd7897aca454e399aab228326722190.png

         这些Dao都是与数据库作交互操作的类,用来存放、取出、查询、删除数据库的表的数据;

        众所周知,数据库操作的代码复用性很强,将这些代码作为一个数据库操作模型,用户只需要传入一个或多个参数即可返回所请求的结果,而无需重复书写繁琐的代码,代码简洁的同时又使用户与数据处理分离,用户对于数据库的操作是透明的,是通过控制器进行操作,也就是说这些Dao的更改与用户界面互不干扰,用户只是使用功能,交付控制器转发给Dao处理,最后返回用户所请求的结果;

        用户界面采用JSP技术来展示,提供相应的表单和控件用于用户的请求,通过点击事件向控制器发出请求来请求模型进行更新等操作;

        控制器采用Servlet技术去接收请求,其主要功能在于交互式地浏览和修改数据,生成动态Web,可以响应任何类型的请求;

        例如,用户在注册界面,通过界面显示填写相关信息,点击提交按钮向控制器RegisterServlet发出存放用户信息请求,控制器将数据封装到JavaBean里,请求UserDao包对数据库的User表作插入处理;

        下图为注册页面,仅为了佐证上述的设计流程是可行的;

9aa0ad741cfa4b98a5440537f9eb9473.png

最终整个系统的分层结构如下所示:

        dao包下的java文件为与数据库进行交互的类;

        domain包下的java文件为实体类(例如user、product);

        exception包下的java文件为异常类(自定义);

        service包下的java文件为编写业务逻辑,调用dao操作数据库;

        tag包下的java文件为自定义标签类,仅有一个PrivilegeTag的java文件,用于判断用户是否登录;

        utils包下的java文件为项目中所用到的工具类;

        web.filter包下的java文件有两个过滤类,分别用于过滤全站编码和判断用户权限;

        web.servlet.client包下的类为前台的类;

        web.servlet.manager包下的类为后台的类;

        WebContent目录下就是存放系统所用到的图片以及jsp、css、js; 

00824cb3b47345a08b2b05b4cbd3cdfc.png

 

数据库设计说明

E-R图设计:

        根据共享图书馆项目有哪些实体对象,根据实体对象间的关系来设计数据库;

        在本系统中主要实体对象有用户、书籍、借阅信息、借阅项、公告栏五个核心实体对象;

        首先为本项目的实体对象设计E-R图,直观地表示实体类型和属性之间的关联关系;

 

        用户实体(user)E-R图:

        用户共有十个属性,用户可以借阅书籍,与书籍实体进行联系;

9c29fd9eb4dc4d2a9f34a1f7aed62906.png

 

        书籍实体(products)E-R图:

        书籍共有六个属性,该实体与借阅信息实体通过用户借阅书籍生成借阅信息进行联系;

f7fdddaa398a40e3ab5902dc070156a9.png

 

        借阅信息实体E-R图:

        借阅信息共有七个属性,借阅信息与书籍生成借阅项与借阅项实体联系;

3fe98520756a4492a56da1922acfe595.png

     

        借阅项实体E-R图:

        借阅项共有三个属性,用户可以查看借阅项与之进行联系;

28043f7367dc46bf9e9cff03293c8230.png

 

        公告栏实体E-R图:

        公告栏共有三个属性;

5f138d68ae994872b461d21ea46bc431.png

 

数据表设计

        通过设计的E-R图进行数据表的设计:

        user表:

        该表用于保存共享图书馆前台用户以及后台管理员的信息,主要用于注册时保存数据和登录时对username和password进行匹配;

f995a863db9a4409a36973a8f600d2e4.png

 

        products表:

        该表用于保存共享图书馆前台以及后台书籍的信息,主要用于前台显示的书籍信息,和生成借阅信息时获取书籍信息,后台可以通过界面修改该数据表;

c8607f9497ca42138605872b7fd8ebc9.png

         

        orders表:

        该表用于保存共享图书馆前台以及后台借阅的信息,主要在用户借阅书籍时生成信息保存进去,以及用户和管理员进行查看;

71061868edca4abfa51f098fdd7677d3.png

 

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值