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

分模块设计与开发

继承与聚合

继承关系实现

详细步骤:

版本锁定

聚合实现

私服

介绍

资源的上传与下载

相关推荐
J2虾虾5 小时前
Spring AI Alibaba - Tools
服务器·人工智能·spring
罗超驿5 小时前
15.JavaScript 函数与作用域完全指南:语法、参数、表达式与作用域链实战
开发语言·前端·javascript
江南十四行5 小时前
并发编程(七)
java
.千余5 小时前
【C++】C++类与对象2:C++构造函数、运算符重载与流输入输出全面解析
c语言·开发语言·前端·c++·经验分享
郭涤生5 小时前
C++ 高性能状态机
开发语言·c++
SOC罗三炮5 小时前
OpenHuman 源码深度解构:一个 Rust 驱动的本地优先 AI 个人助手
开发语言·人工智能·rust
亦暖筑序5 小时前
单模型成本高、风险大?Spring AI多模型路由实战:成本降70%,可用性更稳
java·后端·ai编程
404号扳手5 小时前
Java 进阶知识(二)
java·后端
心怀梦想的咸鱼5 小时前
OpenCode 接入 API 报错 read ECONNRESET:基于环境变量的证书校验绕过方案
开发语言·php
SamDeepThinking6 小时前
一个业务场景只需要一个ThreadLocal实例
java·后端·程序员