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高级

分模块设计与开发

继承与聚合

继承关系实现

详细步骤:

版本锁定

聚合实现

私服

介绍

资源的上传与下载

相关推荐
charlie11451419128 分钟前
Cinux: 为大内核铺路
开发语言·c++·操作系统·现代c++
2501_9142459330 分钟前
C语言设计模式详解:从理论到实践的完整指南
c语言·开发语言·设计模式
Hazenix1 小时前
Go 指南:一篇文章速通 Golang
开发语言·后端·golang
灯澜忆梦1 小时前
GO_复合类型---指针
开发语言·后端·golang
Ulyanov1 小时前
雷达导引头Python仿真框架:GPU加速、6-DOF模型与半实物仿真接口
开发语言·python·雷达信号处理·雷达导引头
wuqingshun3141591 小时前
MYSQL的乐观锁和悲观锁是什么?
java
唐青枫2 小时前
Java SLF4J 实战指南:从日志门面到 Logback、MDC 和链路追踪
java
名字还没想好☜2 小时前
Go slice 的 append 陷阱:共享底层数组导致的数据串改
开发语言·后端·golang·go·slice
bitbrowser2 小时前
Claude 账号频繁被封?转向国内可直接使用的 AI 工具
开发语言·php
jvmind_dev3 小时前
Java GC 实战指南(番外篇):被忽视的隐形杀手 —— Class Unloading 如何拖垮 GC
java·后端