JavaWeb:后端部分

maven

maven概述及安装

idea集成maven

配置maven环境

创建maven项目

导入maven项目

依赖管理

依赖配置

依赖传递

依赖范围

生命周期

这些生命周期的执行都是由maven中的插件来完成的。

SpringBootWeb入门

spring&springboot

springbootweb快速入门

HTTP协议

概述

请求协议

响应协议

响应状态码&响应头:

协议解析

Tomcat

介绍

基本使用

入门程序解析(内嵌tomcat)

请求响应

概述

请求

Postman

简单参数&实体参数

数组,集合参数

日期参数&json参数

json当中所有的key值必须使用""包裹

路径参数

总结

响应

@Responsebody

统一响应结果

构建一个统一的Result类:

package com.itheima.pojo;

/**

* 统一响应结果封装类

*/

public class Result {

private Integer code ;//1 成功 , 0 失败

private String msg; //提示信息

private Object data; //数据 date

public Result() {

}

public Result(Integer code, String msg, Object data) {

this.code = code;

this.msg = msg;

this.data = data;

}

public Integer getCode() {

return code;

}

public void setCode(Integer code) {

this.code = code;

}

public String getMsg() {

return msg;

}

public void setMsg(String msg) {

this.msg = msg;

}

public Object getData() {

return data;

}

public void setData(Object data) {

this.data = data;

}

public static Result success(Object data){

return new Result(1, "success", data);

}

public static Result success(){

return new Result(1, "success", null);

}

public static Result error(String msg){

return new Result(0, msg, null);

}

@Override

public String toString() {

return "Result{" +

"code=" + code +

", msg='" + msg + '\'' +

", data=" + data +

'}';

}

}

分层解耦

三层架构

分层解耦

IOC&DI入门

IOC详解

DI详解

Mybatis

入门

快速入门程序

上面的接口代码在运行时,会自动生成该接口的实现类对象,并且将该对象交给IOC容器管理。

配置SQL提示

JDBC

数据库连接池

lombok工具包

基础操作

删除

新增

注意:#{属性名},属性名不要写成表中的字段名了!

id只的是返回回来的主键值往emp对象的id属性中去封装

更新

查询

不能自动封装解决方案:

注:如果使用第三个方案需要严格遵守数据库中的字段名是下划线分隔,类中的属性名是驼峰命名法。

注意:#{}是不能出现在引号内的!所以接口方法方案一用${}来替换。

小补充:

XML映射文件

resultType:单条记录所封装的类型(图中查询出来的单条记录为Emp对象类型)

动态SQL

if

注:自动去除子句开头的and或者or是只去除多余的,并不是全都去掉!

如果字段是String类型除了考虑null的情况还要考虑该字段是否为空字符串的情况!!

foreach

sql&include

补充细节

文件上传

简介

上传上来的文件是临时文件,文件上传这次请求响应完之后临时文件会自动删除。

本地存储

常用的MultipartFile方法:

阿里云OSS

配置文件

参数配置化

yml配置文件

@ConfigurationProperties

如果需要注入的属性只有一两个且只用注入一次则使用@Value即可;如果要注入的属性非常的多且还想做到复用,则可以先定义一个bean对象,再用@ConfigurationProperties批量得把属性注入到bean对象的属性当中,在其他类当中要是想获取到注入到bean对象的属性,就可以直接注入bean对象再调用getXXX方法获取到属性值。

登录校验

概述

会话技术

看会话数量一般是看浏览器数量,每个会话内的多次请求都是独立的(http协议)

JWT令牌

介绍

生成和校验

登陆后下发令牌

Filter过滤器

快速入门

详解

登录校验过滤器

用到一个快速JSON格式转换的依赖包

<!--fastJSON-->

<dependency>

<groupId>com.alibaba</groupId>

<artifactId>fastjson</artifactId>

<version>1.2.76</version>

</dependency>

代码:

@Slf4j

@WebFilter(urlPatterns = "/*")

public class LoginCheckFilter implements Filter {

@Override

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

HttpServletRequest req = (HttpServletRequest) request;

HttpServletResponse resp = (HttpServletResponse) response;

//1.获取请求url

String url = req.getRequestURL().toString();

log.info("请求的url: {}",url);

//2.判断请求url中是否包含login,如果包含,说明是登录操作,放行。

if(url.contains("login")){

log.info("登录操作, 放行...");

chain.doFilter(request,response);

return;

}

//3.获取请求头中的令牌(token)。

String jwt = req.getHeader("token");

//4.判断令牌是否存在,如果不存在,返回错误结果(未登录)。

if(!StringUtils.hasLength(jwt)){

log.info("请求头token为空,返回未登录的信息");

Result error = Result.error("NOT_LOGIN");

//手动转换 对象--json --------> 阿里巴巴fastJSON

String notLogin = JSONObject.toJSONString(error);

resp.getWriter().write(notLogin);

return;

}

//5.解析token,如果解析失败,返回错误结果(未登录)。

try {

JwtUtils.parseJWT(jwt);

} catch (Exception e) {//jwt解析失败

e.printStackTrace();

log.info("解析令牌失败, 返回未登录错误信息");

Result error = Result.error("NOT_LOGIN");

//手动转换 对象--json --------> 阿里巴巴fastJSON

String notLogin = JSONObject.toJSONString(error);

resp.getWriter().write(notLogin);

return;

}

//6.放行

log.info("令牌合法, 放行");

chain.doFilter(request, response);

}

}

Interceptor拦截器

快速入门

详解(拦截路径,执行流程)

异常处理

注释包含@ResponseBody,就会将方法的返回值转化成JSON格式返回给前端。

事务管理

spring事务管理

rollbackFor属性

propagation属性

AOP

基础

快速入门

核心概念

一旦进行了AOP程序的开发,执行的不再是一开始的目标对象,而是基于目标对象所生成的代理对象。调用的方法也是代理对象内的方法了。

进阶

通知类型

通知顺序

切入点表达式【execution和@annotation】

包名.类名不建议省略

需要先自己创建一个注解类再使用这个注解去注解在方法/类上再作为切点表达式

@Retention是指生效的时间

@Target是指该注解要注解在方法还是类上去作为标记

连接点

用来在通知中获取方法运行时的相关信息。

Springboot原理篇

配置优先级

Bean管理

bean的获取

代码例子:

bean作用域

第三方bean

Springboot原理

起步依赖

自动配置

概述
方案
原理分析-->源码跟踪
原理分析-->@Conditional
自定义starter

Maven高级

分模块设计与开发

继承与聚合

继承关系实现

详细步骤:

版本锁定

聚合实现

私服

介绍

资源的上传与下载

相关推荐
机器学习之心1 小时前
基于CPO-VMD冠豪猪优化优化变分模态分解与最小包络熵的自适应变分模态分解方法,附MATLAB代码
开发语言·matlab·cpo-vmd·冠豪猪优化优化变分模态分解
lly2024061 小时前
Font Awesome 文件类型图标
开发语言
QH_ShareHub1 小时前
从 R 到 Python:数据科学生态的“双语”对照手册
开发语言·python·r语言
dishugj1 小时前
HANA数据库常用命令总结
java·前端·数据库
MacroZheng1 小时前
横空出世!IDEA最强MyBatis插件来了,功能很全!
java·后端·mybatis
zhangjw341 小时前
第9篇:Java集合框架入门,List详解:ArrayList与LinkedList底层彻底吃透
java·开发语言·list
大大杰哥1 小时前
Java集合框架(List/Set/Queue)核心总结与代码示例
java·数据结构
报错小能手1 小时前
Swift经典面试题汇总
开发语言·ios·swift
深蓝轨迹1 小时前
RedisTemplate 核心操作API汇总(Spring Data Redis)
java·redis·spring