浅谈ssm框架分层逻辑

2023-10-29

第一次接触ssm的时候感觉自己就是个无情的码字机器,完全跟着老师敲,每一行代码在干嘛都不是很理解,也经常看到这样的哀嚎
在这里插入图片描述
研究了一天后我也算是对这个框架有了一些浅薄的认识,这里我就完全用自己的理解来讲一下,如果说错欢迎指出。
ssm(Spring+SpringMVC+MyBatis)是什么就不多说了,相信很多人都是用了它之后才知道它的好处

ssm项目分层

目前所有企业基本都采用的这种分层标准,这种分层标准的好处就是让项目看起来整齐划一,每层都负责做自己的事情,方便开发者对代码进行管理与调试,让代码的可读性更强。一般无论是在学校还是在培训班都会首先跟你讲分哪些层和每个层的作用,作为刚入门的初学在编写几个完整项目之前者确实很难理解,去网上搜的解释又都太官方难懂,同样作为初学者的我在编写了一个项目研究了一天之后对这个分层终于有了比较浅薄的理解。

bean层

bean层:存放数据表转化的类。
比如你数据库的表叫tb_user,那就在bean层下面创建一个User的类,把数据库中需要用到的字段全部写进去。
比如你数据库中字段是这样的:
在这里插入图片描述
那么你创建的User类就这样写(属性+get+set方法,构造方法和ToString也推荐写进去):

public class User {
    private int id;
    private String username;
    private String password;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

dao层

持久层(Dao层):主要负责与数据库进行交互,一般为接口,简单说就是对数据库进行增删改查。写好之后去Mapper.xml里配置和写sql语句。这个层最好理解,你需要数据库中的哪些功能就写哪些方法,而且先不需要去考虑去怎么实现,因为实现属于业务层的范畴了,这里只需无脑写方法就好了,这也体现出ssm框架分层的好处,东西先有,之后再实现。

public interface UserDao {
    List<User> findAll(@Param("start") int start, @Param("username") String username);

    User findUserByUserName(String username);

    void deleteById(int id);

    void add(User user);

    void UserById(int id);

    User selectById(int id);

    void update(User user);

    int getTotalCount();

    List<User> fuzzyFindByUsername(@Param("start") int start, @Param("username") String username);

}

service层

业务层(service层):这一层是最抽象的也是最难理解的,我对业务层的理解是它负责项目的核心业务,比如登录、注册、这些都是业务,通俗的说就是在业务层中把项目的核心方法都写出来,首先定义一个业务层的接口,然后用实现类去实现它,在这个实现类中调用DAO层的方法以对数据库进行增删改查,这样就直接把Spring模块和Mybatis模块串起来了,这样说是不是很明白了,举个简单的例子,现在要实现登录功能,那要在service的实现类里面首先写一个dao层的对象(以调用MYbatis模块,对数据库增删改查)。
然后在下面的登录方法中调用dao层,实际上就是调用到了数据库,判断用户是否存在,然后再对这个方法完善,判断密码是否正确,就用ssm实现了这样一个简单的登录逻辑。

    @Autowired
    private UserDao userDao;

    @Override
    public boolean login(String username, String password) {
        User user = userDao.findUserByUserName(username);//调用MYbatis模块
        if (user != null && user.getPassword().equals(password)) {
            return true;
        }
        return false;
    }

Controller层

前面两个模块都已经写好了,那现在差的就是再网页中如何把我们的刚才的登录信息显示出来,这里就用到了控制层(controller层):属于springMVC模块,控制web访问,这一层也不难理解,它要与视图层联系起来,即前端页面发送请求,控制层接收请求并处理,最后返回数据到前端。

@Autowired
    private IUserService userService;

    @RequestMapping("/login.do")
    public ModelAndView login(User user, HttpSession session) {
        boolean flag = userService.login(user.getUsername(), user.getPassword());
        ModelAndView modelAndView = new ModelAndView();
        if (flag) {
            session.setAttribute("user", user);
            modelAndView.setViewName("main");//登陆成功进入main.jsp
        } else {
            modelAndView.setViewName("../failer");//失败进入拦截器
        }
        return modelAndView;
    }

视图层(view层):view层不需要单独建一个叫view的package来单独存放,直接放在webapp下面,这个层最简单,其实就是存放前端的网页,一般为jsp,html格式。。

结构图

图片转自https://blog.csdn.net/qq_38685503/article/details/88022904在这里插入图片描述

目录

在这里插入图片描述
当然,这只是最基础的分层,实际项目中往往还需要拦截器(filter层)等等按需求增加分层就好,总之记住一点,初学者可以先按照这个分层去写,哪怕不理解也要把每一层是干什么的,有哪些东西都要记住,写多了就对这些了如指掌了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

浅谈ssm框架分层逻辑 的相关文章

随机推荐

  • 网络安全/黑客技术(就业前景与经验分享)

    网络安全与我们每一个人都息息相关 无论是企业还是个人 现在都非常重视网络安全 而且网络安全是一个新兴的行业 人才需求量远远大于供给 所以在薪资福利上具有很大的优势 并且对于初学者而言 很多人依旧担心前景问题 从市场的情况来看 网络安全的就业
  • 删除对象中的指定元素怎么操作?

    小程序开发中 要实现的功能是 长按某个元素 将其移动到另一个对象中 例如 长按array1的苹果 苹果插入到array2中 菠萝 的前面 而array1中的苹果 删除 var array1 d 1 name 苹果 d 2 name 橘子 d
  • 两条语句告诉你 Python3 当中 [[]] * 10 和 [[] for i in range(10)] 的区别

    gt gt gt aa 10 gt gt gt bb for i in range 10 gt gt gt aa bb True gt gt gt aa 0 is aa 1 True gt gt gt bb 0 is bb 1 False
  • 面试官:说说对React中类组件和函数组件的理解?有什么区别?

    一 类组件 类组件 顾名思义 也就是通过使用ES6类的编写形式去编写组件 该类必须继承React Component 如果想要访问父组件传递过来的参数 可通过this props的方式去访问 在组件中必须实现render方法 在return
  • 华为OD机试 - 拔河比赛(Java)

    题目描述 公司最近准备进行拔河比赛 需要在全部员工中进行挑选 选拔的规则如下 按照身高优先 体重次优先的方式准备比赛阵容 规定参赛的队伍派出10名选手 请实现一个选拔队员的小程序 输入为一个数组 记录了部门人员的身高 体重信息 如 身高 体
  • linux gz文件合并,快速合并多个fastq.gz文件

    案例描述 需要将Sample test1 R1 fastq gz和Sample test2 R2 fastq gz合并为test fastq gz 操作方法1 先zcat再gzip zcat Sample test 1 R1 fastq g
  • oracle客户端与服务端的连接

    author skate time 2010 08 16 oracle客户端与服务端的连接 参考如下 http blog csdn net wyzxg archive 2010 08 16 5815335 aspx oracle服务进程如何
  • ElasticSearch7.14配置SSL,使用https访问

    ElasticSearch7 14配置SSL 使用https访问 1 生成证书 备注 一定要在es用户中生成证书 1 生成elastic stack ca p12文件 bin elasticsearch certutil ca 2 生成el
  • Validator 用法详解

    validation 用法详解 1 常用注解说明 这是javax validation包中的 主要包括上述的几个注解 注解 描述 AssertFalse 被注释的元素必须为 false AssertTrue 同 AssertFalse De
  • jdbc连接mysql 5.7.17_java jdbc连接mysql报错:No suitable driver found for jdbc

    代码如下 importjava sql publicclassJdbcTest publicstaticvoidmain Stringargs Stringurl jdbc mysql localhost zhoujian Connecti
  • Jeesite4关于权限控制之根据部门公司进行过滤

    在开发中 根据不同的部门或者公司展示相应的数据这种情况是很常见的 但是在jeesite4 中该怎样进行过滤呢 其实在这个方面作者也有考虑 都直接封装好了官方文档请参考 数据权限调用 文档中也明确指出 这个是通过在后台管理系统中 通过打对勾的
  • 基于matlab的大米,大米颗数计算MATLAB软件

    应用背景 大米是人类的主食之一 是稻谷经清理 砻谷 碾米 成品整理等工序后制成的成品 人们购买米大多采用直接称量的方法 市面上也有许多仪器采用光电传感器等方式用于生产加工时米粒的计数 然而这样的方法都比较依赖于设备 不方便人们日常的使用 运
  • 前端mqtt使用总结

    本文转载自https www codenong com cs105863097 主要解决了 mqtt 连接 重连 数据实时传递等问题 简介 MQTT Message Queuing Telemetry Transport 消息队列遥测传输协
  • 电脑网线,网线排序

    网络的使用是越来越普遍 相信不少用户家里的电脑都是使用网线来链接的 当电脑网线不小心被折断了如何来网线排序呢 接下来就来接大家如何来给电脑网线排序 网线排序 双绞线的四对八根导线是有序排列的 对于100M及以上的网络传输速率 每一根线都有定
  • 剪贴板中图片转为BASE64格式

    需求 将图片复制到剪贴板后 希望将图片快捷地转换为BASE64格式 各种在线工具往往需要先将图片保存到本地 然后将本地文件上传 现在考虑将图片保存到本地这一步去掉 直接将图片从剪贴板粘贴到网页的某个元素中 网页触发粘贴事件并获取文件 然后转
  • WebSocket+php实现tail -f 命令的web版本 实时输出日志的增量 web监控log日志

    实现方式是 php的Workerman框架 js的WebSocket PHP workerman 官网地址 可以通过 composer 安装 require walkor workerman 3 5 JS socket WebSocket
  • 数据结构第二版,顺序栈的实现(c语言版)(初始化,入栈,出栈,取栈顶元素 ,遍历)

    include
  • 靶机4 DC-3(过程超详细)

    简介 DC靶场一共有9个 对于学习渗透测试人员 有很大的帮助 是非常不错的靶场 1 下载靶场 靶机名称 DC 3 包含1个flag 下载地址 DC 3 2 VulnHub 2 安装靶场 以DC 1为例 将文件解压 一压缩包形式进行下载 打开
  • 使用DBeaver连接达梦数据库

    下载地址 https dbeaver io download 0 选择类型ODBC 1 下载服务器安装目录的jdbc的jar包 2 编辑驱动设置 上传下载的DmJdbcDriver16 jar 并配置类名与URL模板及端口 3 测试连接 软
  • 浅谈ssm框架分层逻辑

    第一次接触ssm的时候感觉自己就是个无情的码字机器 完全跟着老师敲 每一行代码在干嘛都不是很理解 也经常看到这样的哀嚎 研究了一天后我也算是对这个框架有了一些浅薄的认识 这里我就完全用自己的理解来讲一下 如果说错欢迎指出 ssm Sprin