前提:
学习书籍:
黑马程序员的《Java Web程序设计任务教程》;
下载安装Eclipse 2021、MySQL 5.5、Tomcat 8.5,很简单,找其他人的博客就可以,其中JDK配置一定不要忘记添加在环境变量里;
经过七天的基本学习后,你应该有个JavaWeb的基础,明白基本语法,能够成功地运行简单的程序;
系统架构说明:
采用My SQL 5.5、JDBC、Eclipse2021完成开发;
共享图书馆系统分为web前台、后台和数据库,前台是用户界面,后台是管理员操作界面,数据库采用JDBC连接到本地的MySQL,存放系统的数据;
前台的用户界面可以实现用户操作和图书浏览;
用户操作有权限设置,分为登录、未登录状态以及管理员状态;
未登录状态下的用户操作包括:用户注册、登录、浏览书籍等;
登录状态下的用户操作包括:用户信息修改、借阅书籍、归还书籍、浏览个人借阅情况等;
管理员状态下可以对前台界面的书籍信息作编辑操作;
后台管理员界面的功能包括:图书管理(增删改查)、借阅排行榜、借阅管理(查看所有订单并且具删除注销功能)、上架消息(上架新书的公告);
而对于前后台存取数据,采用JDBC连接数据库,因为JDBC是一套用于执行SQL语句的Java API,通过API连接到关系型数据库,采用SQL语句来完成对数据库中数据的查询、更新、新增和删除的操作;
除此之外,JDBC是和具体的数据库驱动联系,这也使得用户不必与底层的数据库交互,SQL数据库内容也可导出来,使得代码的通用性更强,也便于小组成员之间的交互;
下图即前台(后台)采用JDBC访问数据库的方式:
为了确保数据库操作的连续性和原子性,采用ThreadLocal封装connection,使得单个线程里多次调用数据库的connection都是同一个;
上面简单地介绍了系统的几个主体部分,前台、后台、数据库连接,接着讲述一下系统如何设计以及这三者是采用什么方式交互;
因为这是一个共享图书管理系统,需要多次读取数据,数据库访问频繁,但调取的方法是类似的,甚至是一样的,所以考虑复用代码,将重复使用的方法写成一个类;
而数据存取需要通过一个集合来存储,再显示到界面上,或者是数据只需要用到某个字段,这种数据处理也作为一个类来重复调用;
前台、后台、数据库也有对应的功能模块,按照逻辑上的业务划分,将每个业务分别成类;
前、后台的页面以及点击对应超链接跳转到其他页面的样式设计,放在WebContent文件夹下,用jsp技术实现;
综上设计思路,为了在代码上实现分离逻辑层操作、页面展示、数据处理,复用代码以及方便小组分工协作,该系统采用基于MVC设计模式的JSP Model2模型进行开发;
M(Model)即业务模型,V(View)即用户界面,C(Controller)即控制器,用下图来展示该系统的架构设计;
模型采用Dao,用来封装业务数据和作为业务逻辑模型来包含业务操作,例如,本系统的Dao包如下所示:
这些Dao都是与数据库作交互操作的类,用来存放、取出、查询、删除数据库的表的数据;
众所周知,数据库操作的代码复用性很强,将这些代码作为一个数据库操作模型,用户只需要传入一个或多个参数即可返回所请求的结果,而无需重复书写繁琐的代码,代码简洁的同时又使用户与数据处理分离,用户对于数据库的操作是透明的,是通过控制器进行操作,也就是说这些Dao的更改与用户界面互不干扰,用户只是使用功能,交付控制器转发给Dao处理,最后返回用户所请求的结果;
用户界面采用JSP技术来展示,提供相应的表单和控件用于用户的请求,通过点击事件向控制器发出请求来请求模型进行更新等操作;
控制器采用Servlet技术去接收请求,其主要功能在于交互式地浏览和修改数据,生成动态Web,可以响应任何类型的请求;
例如,用户在注册界面,通过界面显示填写相关信息,点击提交按钮向控制器RegisterServlet发出存放用户信息请求,控制器将数据封装到JavaBean里,请求UserDao包对数据库的User表作插入处理;
下图为注册页面,仅为了佐证上述的设计流程是可行的;
最终整个系统的分层结构如下所示:
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;
数据库设计说明
E-R图设计:
根据共享图书馆项目有哪些实体对象,根据实体对象间的关系来设计数据库;
在本系统中主要实体对象有用户、书籍、借阅信息、借阅项、公告栏五个核心实体对象;
首先为本项目的实体对象设计E-R图,直观地表示实体类型和属性之间的关联关系;
用户实体(user)E-R图:
用户共有十个属性,用户可以借阅书籍,与书籍实体进行联系;
书籍实体(products)E-R图:
书籍共有六个属性,该实体与借阅信息实体通过用户借阅书籍生成借阅信息进行联系;
借阅信息实体E-R图:
借阅信息共有七个属性,借阅信息与书籍生成借阅项与借阅项实体联系;
借阅项实体E-R图:
借阅项共有三个属性,用户可以查看借阅项与之进行联系;
公告栏实体E-R图:
公告栏共有三个属性;
数据表设计
通过设计的E-R图进行数据表的设计:
user表:
该表用于保存共享图书馆前台用户以及后台管理员的信息,主要用于注册时保存数据和登录时对username和password进行匹配;
products表:
该表用于保存共享图书馆前台以及后台书籍的信息,主要用于前台显示的书籍信息,和生成借阅信息时获取书籍信息,后台可以通过界面修改该数据表;
orders表:
该表用于保存共享图书馆前台以及后台借阅的信息,主要在用户借阅书籍时生成信息保存进去,以及用户和管理员进行查看;