控制层(controller)的职能是负责读取视图表现层的数据,控制用户的输入,并调用业务层的方法;

业务层(service)需要根据系统的实际业务需求进行逻辑代码的编写,有些业务逻辑需要通过与数据库交互的,则业务逻辑层需要调用数据访问层的相关方法实现与数据库的交互,对于一些不需要与数据库进行交互的,则直接编写业务代码,将执行结果反馈给控制层即可;

数据访问层(dao)只负责与数据库的数据交互,将数据进行存储读取操作
 

1、数据库

刷新。

设置主键、会生成DDL,右键表--对象信息--DDL

如何在SpringBoot中实现业务逻辑处理和数据库交互的 springboot业务逻辑写在哪里_表单

         先建用户表,用户拥有大棚,大棚拥有设备,设备拥有数据。

2、实现了各个功能

增删改查:数据流

前端jsp----form 中的action去js文件中Ajax函数找----controller层找链接----service层找接口----service层找实现----在service层中有mapper的函数,调用数据库。数据库有各种操作。

功能实现

登录:记住密码

记住remenber表单,jsp2处,service1处

登陆功能

数据流如上

增加用户、大棚、设备

数据流如上

修改用户、大棚、设备

数据流如上

删除用户、大棚、设备

数据流如上 

增加用户输入为空的错误

catch判定

每个用户的访问权限,非管理员无权限

cookie的保存,设置保存时间

session的保存与调用

try-catch语句的错误类型的判定

测试错误用例,找到错误类型,然后catch分类判定

where username=#{username}

指的是表里面的username和前端的name="username"传过来的username一样。

<input name="username" id="username" type="text" onblur="checkUsername()" value="<%=username%>" class="login-input"/>

onblur2021年12月24日21:21:26,指的是鼠标离开时触发,判定输入是否为空。

如何在SpringBoot中实现业务逻辑处理和数据库交互的 springboot业务逻辑写在哪里_表单_02

 value="<%=username%>" 设置初始值为保存在cookie的值。

如何在SpringBoot中实现业务逻辑处理和数据库交互的 springboot业务逻辑写在哪里_java_03

3、@RequestMapping注解

@GetMapping,处理get请求
@PostMapping,处理post请求
@PutMapping,处理put请求
@DeleteMapping,处理delete请求

Http规范定义了多种请求资源的方式,最基本的有四种,分别为:GET(查)、POST(增)、PUT(改)、DELETE(删),而URL则用于定位网络上的资源相当于地址的作用,配合四种请求方式,可以实现对URL对应的资源的增删改查操作。

在实际应用中,很多人并没有按照这个规范做,因为使用GET/POST同样可以完成PUT和DELETE操作,甚至GET也可以完成POST操作,因为GET不需要用到表单,而POST却需要通过表单来发送。

作用1:

URL路径映射,@RequestMapping("/xxx")或@RequestMapping(value="/xxx")

可以将多个url映射到同一个方法上:@RequestMapping(value={"/xx","/dd"})
 

作用2:

在class上添加@RequestMapping(url)指定通用请求前缀, 限制此类下的所有方法请求url必须以请求前缀开头,通过此方法对url进行分类管理。

@Controller
@RequestMapping("/hello")
public class HelloController {
    @RequestMapping("/demo01.do")
    public ModelAndView update(){
        //返回视图
        return new ModelAndView("jsp/hello");
    }
}
 

当访问到 /appName/hello/demo01.do 时会返回jsp/hello视图

作用3:限定请求方法

限定为GET方法:@RequestMapping(method = RequestMethod.GET)

如何在SpringBoot中实现业务逻辑处理和数据库交互的 springboot业务逻辑写在哪里_java_04

 4、@PostMapping 和@GetMapping 为其子类

@PostMapping(value = "/user/login")

等价于

@RequestMapping(value = "/user/login",method = RequestMethod.POST)

5、@ResponseBody的作用其实是将java对象转为json格式的数据。

SpringBoot 项目简历流程:

第一步,新建项目,web开发项目,下一步 

如何在SpringBoot中实现业务逻辑处理和数据库交互的 springboot业务逻辑写在哪里_spring_05

设置好这三个参数

如何在SpringBoot中实现业务逻辑处理和数据库交互的 springboot业务逻辑写在哪里_java_06

 引入依赖,这个地方出了问题。没有引入Javaweb的依赖,只引入了


thymeleaf,这样导致了,resource下面的没有templates文件,自己新建文件,导入依赖,这样导致了SpringBoot版本和Javaweb版本不对的问题,调试麻烦。 


如何在SpringBoot中实现业务逻辑处理和数据库交互的 springboot业务逻辑写在哪里_数据_07

 因此一定要记得引入javaweb的依赖。

如何在SpringBoot中实现业务逻辑处理和数据库交互的 springboot业务逻辑写在哪里_表单_08

 新建完成项目如下:(新建了llll项目,因为henqiang项目依赖少了,这个是正确的依赖)

如何在SpringBoot中实现业务逻辑处理和数据库交互的 springboot业务逻辑写在哪里_java_09

在对应文件夹下,建index前端

如何在SpringBoot中实现业务逻辑处理和数据库交互的 springboot业务逻辑写在哪里_spring_10

 

如何在SpringBoot中实现业务逻辑处理和数据库交互的 springboot业务逻辑写在哪里_表单_11

 在lai的包下面,新建controller

如何在SpringBoot中实现业务逻辑处理和数据库交互的 springboot业务逻辑写在哪里_java_12

 

如何在SpringBoot中实现业务逻辑处理和数据库交互的 springboot业务逻辑写在哪里_数据库_13

 直接运行即可

如何在SpringBoot中实现业务逻辑处理和数据库交互的 springboot业务逻辑写在哪里_java_14

单点登录功能:

登录时建立一个session Map,保存用户的session,在拦截器里面设置,对session的判断。即可

登录密码的本地存储,使用base_64编码加密实现。

1、界面加载完边执行,先用解密算法,将其解密后与数据库密码进行比对

2、输入提交时,提交加密的密码串,使用js用${"#.."}.val()进行加密显示,这样保存在浏览器的cookie密码就是加密后的了

3、在service层进行密码的解密,解密后与数据库的密码进行匹配,匹配成功则return 登录界面

4、登录成功时,保存cookie时,先将密码加密,然后再保存在cookie中。