从0开始,用实例详细讲解SSM项目(大学生福音) 您所在的位置:网站首页 service层调用dao层怎么解释 从0开始,用实例详细讲解SSM项目(大学生福音)

从0开始,用实例详细讲解SSM项目(大学生福音)

2024-06-03 14:22| 来源: 网络整理| 查看: 265

从0开始,用实例详细讲解SSM项目 前言一、必须了解的常识1. 什么是前端与后端2. 项目运行的环境 二、SSM介绍?1. SSM指的是什么2. SSM 与 SpringBoot 三、项目讲解1.工程目录介绍① 根目录② src目录 2. 代码层级讲解① Controller 层② Dao 层③ Service 层④ 其他 3. 配置文件讲解① 数据源配置② MyBatis配置③ Spring-MVC配置 4. 运行原理讲解① 文字概括② 结合代码 四、答辩环节1. 答辩准备2. 答辩演示3. 技术分享4. 问题回答5. 项目亮点(以本项目为例)(1)功能实现比较完整(2)MVC的全局异常捕获(3)登录密码的加密(4)编码格式处理

前言

在这里插入图片描述

最近看到很多大学生又开始买项目,买讲解了,我就知道期末答辩来了。以前写了一篇《从零开始,手把手教你搭建Spring Boot后台工程并说明》,评论区老哥说我写的不是很详细,正巧这段时间,有同学找我,让我帮他讲解下他的一个SSM项目,我就顺便写一篇博客,尽我所能把东西讲得细一点。如果你还有什么疑问,欢迎在评论区留言,咱们的目的是让大家都能掌握这个知识与技能。`

一、必须了解的常识 1. 什么是前端与后端 前端 简单的说,你在浏览器上看到花花绿绿的那些东西都属于前端的,它包括页面布局、图形和多媒体等内容。也就是页站的可视化部分。常见的文件后缀为.html .css .js 等后端 是指用户在浏览器或应用程序中看不到的部分,主要负责数据库管理、数据处理等。前端会向后台发送请求,后台需要执行对应的逻辑并返回结果,文件后缀为 .java

在这里插入图片描述

简而言之,前端关注网站或应用程序的外观和用户体验,后端关注处理和管理数据的技术。只有前端和后端合作才能构建出完整的网站或应用程序。

2. 项目运行的环境

一般同学们拿到手的应该是个压缩包,或者类似的项目文件,而想要并成功跑通项目,一般情况下,你至少还需要下载至少这么几个东西:

JDK 你下的是java语言的项目,这是java的地基,没这个东西你根本跑不起来IDEA 查看文件和工程的软件,就跟打开压缩文件需要解压软件一样,没这个你打开java文件看到的是乱码。maven 项目管理软件,简单来说,你不可能所有功能都是自己写的,肯定会依赖一些别人写的底层框架,这软件就能自动帮你下载。如果没这个,你打开项目可能是一片红色的报错。而且你到手的是一堆目录及文件,需要它帮你打包成一个可执行文件。mySQL 数据库,就是存储数据的软件,你的项目启动后会往里面存数据,比如商品信息,学生信息啥的。一般数据库都选msyql,因为它免费。没有它,你运行时项目会报错tomcat 运行容器,如果说maven打包是把一堆零散的菜处理好打包成一盒,但它也需要在锅里才能加热,不可能直接把盒子放火上烤,这个锅就是容器,一般来说是tomcat,因为它免费。所以没有它,你的项目跑不起来(SpringBoot项目不需要额外下载,因为你的预制菜里自带一口锅,直接起火就行)

至于上面几个东西咋下载安装,可以看我这篇《从零开始,手把手教你搭建Spring Boot后台工程并说明》,虽然那是SpringBoot项目而且我没写前端…

二、SSM介绍? 1. SSM指的是什么

SSM 框架是指 Spring + SpringMVC + MyBatis 三个开源框架的组合,也就是如果你的项目用了这三个框架,就算作SSM项目。

三个框架都是后端框架,它们的作用其实说白了都是一个目的 —— 为了让你少写点代码。,下面我们就简单讲下三个框架各自的作用

Spring框架: 提供了依赖注入和控制反转的功能,简化了对象之间的依赖关系管理,提供了大量的开箱即用的功能和工具。是现如今几乎所有java项目都会用的框架,也是很多其他框架的地基SpringMVC框架:基于模型-视图-控制器(MVC)的设计模式,用于处理Web应用程序的请求和响应,简化开发者处理请求的逻辑MyBatis框架:数据库与java应用的中间层,可以更方便地进行数据库操作,避免了编写繁琐的JDBC代码

在这里插入图片描述

针对Spring 或者 myBatis ,如果你要想了解得更多,可以去看我的专栏 《Spring全家桶专栏》 , 《MyBatis专栏》 ,里面有使用及原理的说明,这里我们就不展开了

2. SSM 与 SpringBoot

两者其实并不冲突, SpringBoot 是基于 Spring的,所以,你完全可以使用 SpringBoot + SpringMVC + MyBatis 来开发项目。关于Spring 为什么进化成了 springBoot,可以去看《Spring框架与SpringBoot的关联与区别》,简单的说就是与时俱进,原先的傻瓜包越来越繁琐,必须再提炼和浓缩,重新搞个傻瓜包出来。

那么如何区分是否使用了SpringBoot呢,其实对于初学者来说,可以看项目根目录下是否有一个启动类,如下图

在这里插入图片描述

通过这个启动类,它能够自动启动一个Tomcat,然后把我们的项目放在Tomcat里执行。这也就是上面我说 SpringBoot 为什么不需要下载tomcat的原因,因为它自己就内置了。

三、项目讲解

一般拿到的项目大概的目录如下

project-name ├── src │ ├── main │ │ ├── java │ │ │ ├── com │ │ │ │ └── example │ │ │ │ └── controller │ │ │ │ └── MyController.java │ │ │ └── resources │ │ │ └── application.properties │ │ └── webapp │ │ ├── WEB-INF │ │ │ └── web.xml │ │ └── index.jsp │ └── test │ ├── java │ └── resources ├── target ├── pom.xml └── README.md

接下来我们以一个实际的SSM工程来讲解

1.工程目录介绍 ① 根目录

最外层是src 和 pom 文件,可以说所有工程包含的东西都需要放在里面,pom文件则是工程构造的总结与定义

在这里插入图片描述

② src目录

src目录是我们的资源目录,其下一般就只有一个main 和 test 来存放内容,main目录放我们正常运行需要的内容,test目录则用来存放测试的相关内容(可以没有),如下:

在这里插入图片描述

针对SSM项目,src下一般可分为三个目录

java:后台java源代码的存放地resources:资源文件的存放地,例如配置文件、脚本文件等webapp:Web应用程序的根目录,包含了Web项目的静态资源文件、视图模板文件等。一些前后端分离的项目可能没有此目录 2. 代码层级讲解

一般来说,请求的流转会经历如下几个层级

在这里插入图片描述

那么对应的,源代码会按这些层级,划分成好几个包。Controller - Service - Dao。需要注意的是,代码分层不是强制的,而是一种项目的规范,大家都约定俗成有这么几个层级

在这里插入图片描述

① Controller 层

Controller层是接收请求的第一站,一般不处理业务,最多进行参数的判断 ,它的独特性主要在于注解

在这里插入图片描述

② Dao 层

Dao层面向数据库,只处理对数据库增删改查 ,Dao层分为两个部分,一部分为接口,一部分为写了SQL的xml文件(放在resource目录下)。需要注意的是,本项目Dao层接口上没有写@Mapper注解,是因为配置文件中已经配置了 mapper扫描位置

在这里插入图片描述

③ Service 层

Service层负责真正的业务处理,所以在复杂项目中,往往Service非常臃肿,此时还需要把Service再做细分

在这里插入图片描述

④ 其他

而除了规范中的三层,一个项目可能还有其他包,比如

entity包 :你数据库的数据需要转成java的对象才能处理,这些对象的定义就放在这里。 config包:项目运行时的一些配置类 util包:你自己写的一些辅助工具类放这里,比如你想自己写两个Double相乘的方法,写完扔这里

3. 配置文件讲解

在项目中,基本每一个框架的引入都需要配置,所以配置文件的内容并不是固定的。而且很多配置可以写在类里(配置类),所以如果你发现你的配置文件和别人不太一样,不用惊慌。

在这里插入图片描述

比如这位同学的配置文件就比较奇怪,有一个application.properties文件,这个文件一般是作为springBoot项目的默认配置文件被SpringBoot默认加载的。但是这里因为是SSM项目,这个配置文件无法被识别,所以不会被主动加载。他这里先在web.xml里引入了spring.xml

在这里插入图片描述

又在 spring.xml里做了 import resource=“classpath:spring-mybatis.xml” 又在 spring-mybatis.xml 里做了 context:property-placeholder location=“classpath:application.properties”

在这里插入图片描述 在这里插入图片描述 通过这样的操作,最终才把三个配置文件都识别进去

① 数据源配置

连接数据库肯定需要配置上数据库地址,用户,密码啥的 在这里插入图片描述

上面有一些值采用了 ${XXX} 的形式,这是一种常见的变量引用,这些变量的具体值维护在了application.properties里,一般在配置很多的时候这么用,会比较清爽

在这里插入图片描述

② MyBatis配置

引入了MyBatis,那么自然也需要一些配置,主要是指定Dao层以及xml文件的位置,并指定数据源,以方便MyBatis的数据库做操作

在这里插入图片描述

③ Spring-MVC配置

这里的配置写在了两个文件中,一个是web.xml中,另一部分在spring.xml中。这些配置都是基础的,比如DispatcherServlet是前置控制器,拦截匹配的请求,然后依据相应的规则分发到目标Controller来处理,是配置spring MVC的第一步。

在这里插入图片描述

在这里插入图片描述

4. 运行原理讲解 ① 文字概括

我们以一个总体的视角来分析,当页面发送一个请求后,到浏览器接收到返回数据的全流程是怎么样的?大概是下面这些流程

前端发送请求:前端页面通过浏览器向服务器发送一个HTTP请求,可以是GET请求或者POST请求。请求的URL通常是服务器上的接口地址,携带了请求参数。

DispatcherServlet接收请求:请求到达服务器后,由前端控制器DispatcherServlet接收。DispatcherServlet是Spring MVC框架的核心控制器,它是一个Servlet,负责将请求分发给相应的控制器进行处理。

HandlerMapping进行URL映射:DispatcherServlet会通过HandlerMapping来进行URL映射,找到对应的控制器(Controller)。

控制器处理请求:控制器是一个Java类,它包含了处理请求的业务逻辑。控制器会根据请求中的参数进行相应的处理,可能会调用Service层的方法。

Service层处理业务逻辑:Service层是业务逻辑的处理层,用于组织和处理业务逻辑。控制器会调用相应的Service层方法来处理请求,并进行一些数据处理或者业务逻辑判断。

调用持久层进行数据操作:Service层可能会调用持久层(DAO层)来进行数据的增删改查操作,通过MyBatis等持久层框架与数据库进行交互。

返回数据给控制器:持久层将处理结果返回给Service层,Service层再将结果返回给控制器。

控制器返回视图(View):控制器将处理结果封装成一个Model对象,然后将Model对象传递给视图解析器(ViewResolver)。视图解析器根据配置将Model对象渲染成最终的视图(HTML、JSP等)。

返回响应给前端:视图解析器将渲染好的视图返回给DispatcherServlet,DispatcherServlet再将响应返回给前端浏览器。

前端浏览器渲染页面:前端浏览器接收到响应后,根据返回的HTML、CSS等文件进行页面的渲染,最终用户可以看到页面上显示的内容。

② 结合代码

比如我们在这个项目中做一个简单的登录操作,它的页面表单其实对应这login.jsp中的一段代码

在这里插入图片描述 在这里插入图片描述

当我们点下按钮“登录”后,在控制台可以看到一条HHTP请求的来回信息,返回的内容为json格式的,然后页面上弹出了个框,显示“登陆成功” 在这里插入图片描述

在这里插入图片描述

当这个请求发送到后台时,其路径其实就剩下了个 “/login”,因为是“/” 开头,所以命中了我们配置的分发器

在这里插入图片描述

既然是分发器,那他分发给谁呢?其实当我们项目启动时,我们写在Controller 及其 方法上的注解,就会把路径以及对应的方法绑定起来,那么此刻路径是 “/login” 就会进入 LoginController 的 verify 方法中

在这里插入图片描述

进入方法后,我们当然要把前台传进来的用户名-密码与数据库进行比对,一致才能返回成功

在这里插入图片描述 我们返回的是一个ApiResponse对象,在SpringMVC下被转换成json返回,此时前台jsp中是这么写的

在这里插入图片描述 所以我们页面会弹出一个框,写着“登陆成功”,而当我们确认这条消息后,页面又会接着转向一个新的url。如下图

在这里插入图片描述

因为这个url没有命中任何的Controller, 所以会在我们静态资源里找相同名字的,当然,他最终能找到这个main.jsp

在这里插入图片描述

而当mian.js返回后,在浏览器的渲染及数据读取下,我们就看到了后台管理主页的样子

在这里插入图片描述 在这里插入图片描述

四、答辩环节

这一段仅针对需要拿项目上去答辩的同学,知道很多大学生拿到项目不知道如何答辩,其实不用慌,按照下面的步骤走就可以:

1. 答辩准备 确保项目功能完整、稳定运行,并进行充分测试。了解答辩评分标准和要求,准备相关文档和PPT材料。清晰理解项目的设计思路、技术实现和使用的框架。 2. 答辩演示 对项目进行演示,展示项目的主要功能和特点,让评委和观众能够直观了解项目。演示时可以使用实际的运行环境,或者使用截图、录屏等方式展示。应重点突出项目的亮点和创新之处。 3. 技术分享 介绍项目中使用的技术和框架,包括前端、后端以及数据库等。分享项目开发过程中遇到的困难、解决方案和经验教训。说明项目的技术架构、设计模式和性能优化等关键点。 4. 问题回答 针对评委和观众提出的问题,认真分析并给出合理的回答。可能的问题包括项目设计思路、技术选型、功能实现、性能优化等方面。 5. 项目亮点(以本项目为例)

以我们本期的项目为例,虽然项目比较简陋,但仍有几点值得一说的地方:

(1)功能实现比较完整

有用户 和 管理员权限的区分,商品-订单-后台管理功能基本实现,也支持媒体文件(图片)的上传下载

在这里插入图片描述

(2)MVC的全局异常捕获

@ExceptionHandler 注解可以标注在Controller 上,这里单独写了一个Controller,然后让其他所有Controller 继承该 BaseController,这样所有的 Controller 都能使用这个异常处理方式了

在这里插入图片描述

(3)登录密码的加密

数据库不保存真实密码,而是采用md5加密后保存的,这样即使数据库信息被盗,也无法拿到用户的密码。

在这里插入图片描述

在这里插入图片描述

(4)编码格式处理

这也是新手几乎都会踩的坑了,如果不在配置中进行编码格式的指定,容易产生乱码的现象,所以在这里做一个编码格式的配置是十分必要的 在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有