学点技术不容易,感谢实验室同门

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

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

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

1、数据库

因为navicate的新建连接,数据库服务是开启的,因此直接新建查询,将DDL复制到查询语句中,然后刷新。

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

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

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,指的是鼠标离开时触发,判定输入是否为空。

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

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)

4、@PostMapping 和@GetMapping 为其子类

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

等价于

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

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

SpringBoot 项目简历流程:

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

设置好这三个参数

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

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

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

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

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

在lai的包下面,新建controller

直接运行即可

单点登录功能:

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

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

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

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

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

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

SpringBoot项目--智慧农业相关推荐

  1. Dockerfile springboot项目拿走即用,将yml配置文件从外部挂入容器

    Dockerfile 将springboot项目jar包打成镜像,并将yml配置文件外挂. # 以一个镜像为基础,在其上进行定制.就像我们之前运行了一个 nginx 镜像的容器,再进行修改一样,基础镜 ...

  2. SpringBoot项目使用nacos,kotlin使用nacos,java项目使用nacos,gradle项目使用nacos,maven项目使用nacos

    SpringBoot项目使用nacos kotlin demo见Gitte 一.引入依赖 提示:这里推荐使用2.2.3版本,springboot与nacos的依赖需要版本相同,否则会报错. maven ...

  3. win10安装docker并结合Idea2018.1部署springboot项目

    一.准备工作 1..工具:win10,idea2018,maven3.5,jdk8 二.win10安装docker 1.win10安装docker:http://www.runoob.com/dock ...

  4. 关于SpringBoot项目通过jar包启动之后无法读取项目根路径静态资源

    前言:这个是昨天晚上在部署一个项目的时候发现的,在此记录一下 关于SpringBoot项目通过jar包启动之后无法读取项目根路径静态资源 问题描述 在部署了一个项目之后,打开项目页面进行测试,发现有一 ...

  5. 使用idea创建springboot项目并打成war包发布到weblogic上...

    部署tomcat也是类似的,但是需要注意项目配置的路径,或者直接将项目放到webapp的ROOT目录下. 使用工具:intelliJ IDEA2016.3, jdk1.8 ,weblogic12 一 ...

  6. SpringBoot项目打包war部署到服务器去掉项目名所遇到的坑

    个人资源与分享网站:http://xiaocaoshare.com/ 前言 将SpringBoot项目打成war主要是方便自己后期维护,也就是每次更新网站的时候不需要打成jar包,主要是文件太大,复制 ...

  7. 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上

    一个用于构建和推送Docker镜像的Maven插件. 使用Maven插件构建Docker镜像,将Docker镜像push到DockerHub上,或者私有仓库,上一篇文章是手写Dockerfile,这篇 ...

  8. Docker 部署 SpringBoot 项目整合 Redis 镜像做访问计数Demo

    Docker 部署SpringBoot项目整合 Redis 镜像做访问计数Demo 最终效果如下 大概就几个步骤 1.安装 Docker CE 2.运行 Redis 镜像 3.Java 环境准备 4. ...

  9. 一个 SpringBoot 项目该包含哪些?

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 作者:不一样的科技宅  juejin.im/post/68 ...

最新文章

  1. python的切片和索引是什么_NumPy 切片和索引
  2. Android开发中遇到的问题(二)——新建android工程的时候eclipse没有生成MainActivity和layout布局...
  3. 网络学习(七)Windows XP系统之纯净版安装
  4. 鸿蒙开发-在JS中获取hml页面中Input输入的值
  5. 如何linux查看硬盘文件,如何使用linux 指令查看硬盘
  6. ITK:创建高斯导数内核
  7. struts.xml mysql_mybatis3.3 + struts2.3.24 + mysql5.1.22开发环境搭建及相关说明
  8. Github常用搜索指令(毕设资料搜索必备)
  9. 小白也能看懂的缓存雪崩、穿透、击穿
  10. 4999元起!iQOO 9 Pro赛道版上架:迄今为止成本最高手机后盖
  11. Android 开发环境搭建之——ADT-Bundle for Windows
  12. 如何修复苹果Mac中的快速视频播放错误
  13. 移动端登录页样式错乱_手机登录界面样式设计启示
  14. 科学计算机符号大全,计算机符号代码大全
  15. java读取txt文件乱码解决方案
  16. 【福大/计院】转专业
  17. LCD1602原理驱动代码及例程
  18. 跳过评价教师看成绩html,学校评优秀教师只看成绩,这种做法对吗?
  19. 02.微信小程序——AntV F2制作柱状图,折线图
  20. php转化xlsx,使用PHP将Word doc,docx和Excel xls,xlsx转换为PDF

热门文章

  1. 015-Storm计算网站UV(去重计算模式)
  2. 两种计算Java对象大小的方法
  3. efishell无法开机shell_通过uefi shell引导linux系统
  4. 31. Opinion-based Relational Pivoting forCross-domain Aspect Term Extraction 阅读笔记
  5. 虚拟化之路一:虚拟化概述
  6. 刚刚用鸿蒙跑了个“hello world”!我开始怀疑人生了...
  7. 树莓派玩转WIN10之安装篇
  8. ue4 小知识点 APlayerCameraManager 和 角色的自己相机
  9. 飞舟语录[持续更新]
  10. html用户名和密码不能为空,【JS】判断用户名和密码是否为空