(Subms)超市订单管理系统

运用技术java、Servlet、(JSP、js、jquery、css)不做介绍、Tomcat服务器

主要锻炼的就是如何更深层次的理解MVC三层架构 ,我们的这个超市订单管理系统实际上就一个增删改查的一个项目。主要说说一些里面的业务逻辑跟架构思想

超市 组织架构 超市组织架构怎么介绍_mysql

简单说说MVC三层架构

首先来说,三层架构与MVC的目标一致:都是为了解耦和、提高代码复用。MVC是一种设计模式,而三层架构是一种软件架构。

三层架构分为:表现层(UIl)(web层)、业务逻辑层(BLL)(service层)、数据访问层(DAL)(dao层) ,再加上实体类库(Model)

1.实体类库(Model),在Java中,往往将其称为Entity实体类。数据库中用于存放数据,而我们通常选择会用一个专门的类来抽象出数据表的结构,类的属性就一对一的对应这表的属性。

·一般来说,Model实体类库层需要被DAL层,BIL层和UI层引用。

2.数据访问层(DAL),主要是存放对数据类的访问,即对数据库的添加、删除、修改、更新等基本操作 。DAL就是根据业务需求,构造SQL语句,构造参数,调用帮助类,获取结果,DAL层被BIL层调用

3.业务逻辑层(BLL) BLL层好比是桥梁,将UI表示层与DAL数据访问层之间联系起来。所要负责的,就是处理涉及业务逻辑相关的问题,比如在调用访问数据库之前,先处理数据、判断数据。

各层引用关系如下图

超市 组织架构 超市组织架构怎么介绍_java_02

mvc与三层架构对应的关系如下图

超市 组织架构 超市组织架构怎么介绍_超市 组织架构_03

接下来我会围绕着三层架构来简述这个项目

项目搭建

搭建一个Maven web项目

配置Tomcat

测试项目是否运行起来

导入项目中会遇到的jar包;

.。jsp,servlet,mysql驱动,jstl,stand,,,(依赖)
junitgroupId>
junitartifactId>
4.11version>
dependency>
taglibsgroupId>
standardartifactId>
1.1.2version>
dependency>
com.alibabagroupId>
fastjsonartifactId>
1.2.36version>
dependency>
jstlgroupId>
jstlartifactId>
1.2version>
dependency>
javax.servletgroupId>
javax.servlet-apiartifactId>
3.0.1version>
dependency>
javax.servlet.jspgroupId>
jsp-apiartifactId>
2.1version>
dependency>
mysqlgroupId>
mysql-connector-javaartifactId>
8.0.23version>
dependency>

- 创建项目包结构

超市 组织架构 超市组织架构怎么介绍_java_04

编写实体类 上面介绍了链表映射就是把数据库中的字段封装成一个个属性 给每个字段加上get,set重点

超市 组织架构 超市组织架构怎么介绍_三层架构_05

编写基础公共类,在resources下创建一个db.properties

这个文件是数据库配置文件,其中配置如下

#数据源
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/smbms?ServerTimezone=UTC
username=root
password=123456

1.编写Dao操作数据空公共类

超市 组织架构 超市组织架构怎么介绍_mysql_06

超市 组织架构 超市组织架构怎么介绍_超市 组织架构_07

超市 组织架构 超市组织架构怎么介绍_超市 组织架构_08

公共类结束

防止页面会出现乱码我们用过滤器来实现过滤乱码的操作

-

超市 组织架构 超市组织架构怎么介绍_java_09

别忘了注册这个过滤器

超市 组织架构 超市组织架构怎么介绍_超市 组织架构_10

2.登入功能(验证密码、注销、过滤器优化)

我先把 user用户 的操作数据库层 跟业务层 的接口 跟接口实现类的名字先列出来(接口中一个方法对应实现类一个方法可以更好进行排查优化)

UserDao(Dao层接口)

UserDaoImpl(Dao层接口实现类)

UserService(业务层接口)

UserService(业务层接口实现类)

验证账号

UserDao

超市 组织架构 超市组织架构怎么介绍_java_11

UserDaoImpl

超市 组织架构 超市组织架构怎么介绍_mysql_12

超市 组织架构 超市组织架构怎么介绍_mysql_13

Userservice

超市 组织架构 超市组织架构怎么介绍_mysql_14

UserserviceImpl

超市 组织架构 超市组织架构怎么介绍_超市 组织架构_15

servlet层跟前端交互的层

超市 组织架构 超市组织架构怎么介绍_java_16

注销功能

注销功能是一个jsp页面中的a标签中 标签后面放了一个执行servlet的地址,我就只把servlet代码逻辑列出。

超市 组织架构 超市组织架构怎么介绍_超市 组织架构_17

过滤器优化

优化了 我们不登入的话是没办法访问主页面的。因为我们必须登入才能访问主页面啊。如果有人复制主页面的网址,不登入直接访问那不就炸了。

超市 组织架构 超市组织架构怎么介绍_mysql_18

3.修改密码

修改密码的页面

超市 组织架构 超市组织架构怎么介绍_java_19

UserDao

超市 组织架构 超市组织架构怎么介绍_三层架构_20

UserDaoImpl

超市 组织架构 超市组织架构怎么介绍_mysql_21

Userservice

超市 组织架构 超市组织架构怎么介绍_java_22

UserserviceImpl

超市 组织架构 超市组织架构怎么介绍_mysql_23

servlet层

超市 组织架构 超市组织架构怎么介绍_三层架构_24

总结

1.其实到这就行了,往后的功能再说也没意义,我们只要加深架构思想就行了,这个里面用的各个层之间确实是很绕,公共类中写了执行sql的方法 查询方法没创建Preparement跟Result,所以我们要在Dao层创建。 增删改方法没写Preparement方法也需要自己创建。

2.还有我们Dao层中的方法体中都加了(Conection conection),但是在Dao层中确没有实现,只是在Dao层判断了是否存在如果存在才往下走

3.以我的理解来看这个项目中service业务层中只写了connection=公共类中连接数据的方法,然后再调用一遍Dao层然后把connection跟其他属性在传进取而已,实现一个分离的过程。

4.我写这个项目的时候 是因为粗心问题造了很多的bug的,其中最需要注意的就是,实现登入校验的时候,Dao层中创建了一个实现类中smbms_user中的对象,因为里面封装了getset方法,所以这边是把查询的所有属性放在这个对象中然后返回。重点是我们这边是在Servlet层中把这个对象放在了setAttribute中,可以很方便的使我们在没个servlet中随意的取拿里面的参数(getArrribute)。

5.这个写出来的意义只是想让我们更加的了解MVC三层架构思想,所以我在叙述里面的代码的时候没有带上前端的jsp来详细的说,我列个图来简单说一下这个项目的架构

超市 组织架构 超市组织架构怎么介绍_三层架构_25

新人刚开始写,述写能力不太好见谅。