Subms超市管理系统(主要谈MVC三层架构)

(Subms)超市订单管理系统

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

主要锻炼的就是如何更深层次的理解MVC三层架构 ,我们的这个超市订单管理系统实际上就一个增删改查的一个项目。主要说说一些里面的业务逻辑跟架构思想
在这里插入图片描述
简单说说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数据访问层之间联系起来。所要负责的,就是处理涉及业务逻辑相关的问题,比如在调用访问数据库之前,先处理数据、判断数据。

各层引用关系如下图
在这里插入图片描述
mvc与三层架构对应的关系如下图
在这里插入图片描述
接下来我会围绕着三层架构来简述这个项目

项目搭建

  • 搭建一个Maven web项目
  • 配置Tomcat
  • 测试项目是否运行起来
  • 导入项目中会遇到的jar包;
    .。jsp,servlet,mysql驱动,jstl,stand,,,(依赖)
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
    </dependency>

<!--standard-->
    <dependency>
      <groupId>taglibs</groupId>
      <artifactId>standard</artifactId>
      <version>1.1.2</version>
    </dependency>
    
    
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.36</version>
    </dependency>
<!--    jstl标签注解依赖-->
    <dependency>
      <groupId>jstl</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>
<!--    servlet 依赖-->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.0.1</version>
    </dependency>

<!--    jsp依赖-->
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.1</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->

<!--    mysql依赖 我的数据库版本是8.0.23版本不同的去官网换新的-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.23</version>
    </dependency>

- 创建项目包结构
在这里插入图片描述

  • 编写实体类 上面介绍了链表映射就是把数据库中的字段封装成一个个属性 给每个字段加上get,set重点
    在这里插入图片描述
  • 编写基础公共类,在resources下创建一个db.properties
    这个文件是数据库配置文件,其中配置如下
#数据源
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/smbms?ServerTimezone=UTC
username=root
password=123456



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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
公共类结束

  • 防止页面会出现乱码我们用过滤器来实现过滤乱码的操作
    -在这里插入图片描述
    别忘了注册这个过滤器
    在这里插入图片描述





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

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

  • UserDao(Dao层接口)
  • UserDaoImpl(Dao层接口实现类)
  • UserService(业务层接口)
  • UserService(业务层接口实现类)

验证账号


UserDao
在这里插入图片描述

UserDaoImpl

这里是引用
在这里插入图片描述

Userservice
在这里插入图片描述
UserserviceImpl
在这里插入图片描述
servlet层跟前端交互的层
在这里插入图片描述



注销功能

        注销功能是一个jsp页面中的a标签中 标签后面放了一个执行servlet的地址,我就只把servlet代码逻辑列出。
在这里插入图片描述

过滤器优化

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





3.修改密码

修改密码的页面
在这里插入图片描述

UserDao
在这里插入图片描述

UserDaoImpl
在这里插入图片描述

Userservice
在这里插入图片描述

UserserviceImpl
在这里插入图片描述
servlet层
在这里插入图片描述

总结

  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来详细的说,我列个图来简单说一下这个项目的架构
在这里插入图片描述

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

  • 7
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值