JavaWeb知识点随记
SpringMVC:
第一层controller用于接收请求和返回响应
第二层service:业务逻辑层,处理具体的业务逻辑
第三层mapper:数据访问层(持久层),负责数据访问操作,增删改查。
@Component:
衍生注解有@Controller @Service @Repository
Bean的声明:要把某个对象交给IOC容器管理,需要在对应的类加上注解
第一层 controller:用@RestController注解 @RestController = @Controller + @ResponseBody
第二层service:用@Service 注解
第三层mapper:用@mapper 注解
而@Component一般用于工具类
但是springboot集成web中,声明控制器bean只能用@Controller
Mybatis:
数据持久层mapper。只需要定义mapper接口,因为框架底层在程序运行时会自动生成该接口的实现类。
1.创建项目,springboot、数据库user、实体类User
2.引入Mybatis的相关依赖,配置Mybatis(数据库连接信息)
3.编写SQL语句(注解/XML)
请求路径的参数注解:
用@PathVariable与该方法的形参进行绑定
参数名和方法形参不一致:
可以用@RequestParam进行绑定
#{}:
匹配的是一个占位符,相当于JDBC中的一个?,会对一些敏感的字符进行过滤,编译过后会对传递的值加上双引号,因此可以防止SQL注入问题。
@RequestBody与@RequestParam
前端页面发送json格式的数据,需要创建对应数据库的实体类且用@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);GET方式无请求体,所以使用@RequestBody接收数据时,前端不能使用GET方式提交数据,而是用POST方式进行提交。在后端的同一个接收方法里,@RequestBody与@RequestParam()可以同时使用,@RequestBody最多只能有一个,而@RequestParam()可以有多个。
注:一个请求,只有一个RequestBody;一个请求,可以有多个RequestParam。
application.yml文件配置 写法
#配置数据库基本信息
spring:
datasource:
url: jdbc:mysql://localhost:3306/user?useSSL=false&serverTimezone=UTC
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
lombok:依赖坐标
@Data注解可自动完成get/set、tostring、hashCode方法的实现 有参和无参构造器需另外注解 可在项目导入的时候直接选择添加
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
分页查询思路:
返回查询数据(limit 0,5 0:起始索引,5:每页记录数 )和总记录数,再把这两个数据封装到一个实体类返回响应。(page页码 - 1)*pageSize每页展示记录数 = 起始索引
事务:
概念:是一系列操作,这些操作要么完全执行,要么完全不执行,以确保数据库的完整性和一致性。 用于多次访问数据的增删改查操作,位置业务层的方法、类、接口上。交给spring进行事物管理
事务属性-回滚 @Transactional(rollbackfor = Exception.class) 默认情况下,只有出现RuntimeException才回滚异常。rollbackfor属性用户控制出现任何异常类型都会回滚事务。
事物的属性-传播行为 @Transactional(propagation = Propagation.REQUIRED)
两个常用属性值REQUIRED(默认值 需要事物,有则加入,无则创建新事物)、REQUIRES_NEW(需要新事物,无论有无,总是创建新事物)
将配置文件配置项值自动注入对象属性中
1.key的值与实体类的值保持相同
2.该类提供get、set方法 -->@Data
3.交给IOS容器管理 成为bean对象 -->@Component
4.指定前缀 --> @ConfigurationProperties(prefix = “aliyun.oss”)
全局异常处理器
@RestControllerAdvice:全局异常处理器 @ExceptionHandler:声明捕获的异常类型 (Exception.class:全部异常)
@RestControllerAdvice = @ControllerAdvice + @@ResponseBody @ResponseBody:底层会将数据封装成json格式响应浏览器
idea快捷键
Ctrl+Alt+L:整理代码格式
Alt+Enter:自动生成需要的参数类型和方法的重载
Alt+左键:任意选择同列复制
ctrl+alt+t:把选中的代码块装进一些带有{}的语句中,比如if,try,for等等
http协议
概念:规定浏览器与服务器之间数据传输的规则。
特点:
1.基于TCP协议(面向连接,安全)
2.一次请求一次响应
3.是无状态协议:对事物处理没有记忆功能。每次请求-响应都是独立的(比如登录界面输入密码成功进入页面,再访问其它页面读取数据。
因为http协议一次请求一次响应且无状态,所以这次请求并不知道用户是否登录成功 ------解决----- web会话技术!)