控制层(controller)的职能是负责读取视图表现层的数据,控制用户的输入,并调用业务层的方法;
业务层(service)需要根据系统的实际业务需求进行逻辑代码的编写,有些业务逻辑需要通过与数据库交互的,则业务逻辑层需要调用数据访问层的相关方法实现与数据库的交互,对于一些不需要与数据库进行交互的,则直接编写业务代码,将执行结果反馈给控制层即可;
数据访问层(dao)只负责与数据库的数据交互,将数据进行存储读取操作
1、数据库
刷新。
设置主键、会生成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中。