[准备]基础知识web开发

VUE

通过View 和 Model的绑定,数据发生变化Model更新带动View更新。

前端工程化

传统Ajax

主流的Ajax

<script>
    function get(){
        //标准版
        // //通过axios发送异步请求-get
        // axios({
        //     //请求方法
        //     method: "get",
        //     //请求地址
        //     url: "https://mock.apifox.cn/m1/3128855-0-default/emp/list"
        //
        // }).then(result => {
        //     //返回结果,处理
        //     console.log(result.data);
        // })

        //简化版
        axios.get("https://mock.apifox.cn/m1/3128855-0-default/emp/list").then(result => {
            console.log(result.data);
        })
    }

    function post(){
        //标准版
        // axios({
        //     method: "post",
        //     url: "https://mock.apifox.cn/m1/3128855-0-default/emp/deleteById",
        //     //与get的请求差别就在于数据放在data字段中,get请求中参数则直接放在请求链接中
        //     data: "id=1"
        // }).then(result => {
        //     console.log(result.data);
        // })
        //简化操作
        axios.post("https://mock.apifox.cn/m1/3128855-0-default/emp/deleteById","id=2").then(result => {
            console.log(result.data);
        })
    }
</script>

Maven依赖传递:

A->依赖B,B->依赖C,则 C的依赖也会传入A中,可以通过下图方式防止c的依赖传入A中

Maven依赖范围:

Maven生命周期:

Maven的3套不同生命周期

Maven的生命周期是由插件来完成的

无状态协议http的格式(我们使用cookie记录信息)

常见的相应码

springboot的核心控制器

在SpringBoot进行web程序开发时,它内置了一个核心的Servlet程序 DispatcherServlet,称之为 核心控制器。 DispatcherServlet 负责接收页面发送的请求,然后根据执行的规则,将请求再转发给后面的请求处理器Controller,请求处理器处理完请求之后,最终再由DispatcherServlet给浏览器响应数据。

基于Springboot进行开发的一般都是BS架构:指通过浏览器请求、接收信息。

接收前端参数,总得来说保持形参名同请求的参数名一致即可,若不一致则需要加@RequestParam 绑定参数关系。后端接收用的形参,可以是容器(数组,集合等),也可以是单个参数变量,实例对象(pojo)等。

真实项目中的统一相应信息(后端->前端)

在IOC容器中,每一个Bean都有一个属于自己的名字,可以通过注解的value属性指定bean的名字。如果没有指定,默认为类名首字母小写。

使用四大注解声明的bean,要想生效,还需要被组件扫描注解@ComponentScan扫描(springboot默认自动扫描本包下的bean,@SpringBootApplication 中自带扫描的范围是SpringBoot启动类所在包及其子包。)

不用多余配置,像这样所有bean就都能扫描到了

所有子包与启动类同级

@Autowired注解,默认是按照类型进行自动装配的(去IOC容器中找某个类型的对象,然后完成注入操作)

mybatis

配置mybatis依赖,数据库依赖,配置数据库连接信息,创建实体,配置mapper接口,注解式书写sql语句

在idea中配置配置数据库连接的好处:提示sql编写的内容

简化实体类书写

两步引入数据库连接池:

1.导入依赖

        <dependency>
            <!-- Druid连接池依赖 -->
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.2.8</version>
        </dependency>

2.修改数据库配置文件

#驱动类名称
#spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#引入数据库连接池
spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver
#数据库连接的url
spring.datasource.url=jdbc:mysql://localhost:3306/demo2
#连接数据库的用户名
spring.datasource.username=root
#连接数据库的密码
spring.datasource.password=root

配置日志

预编译SQL,编译一次之后会将编译后的SQL语句缓存起来,后面再次执行这条语句时,不会再次编译。(只是输入的参数不同)

mybatis配置xml写sql

Mybatis注解方式sql,主要是来完成一些简单的增删改查功能。如果需要实现复杂的SQL功能,建议使用XML来配置映射语句。

1. xml所在文件夹层次与mapper接口包名保持一致,xml名称与mapper接口名称保持一致

2. 引入mybatis约束

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="">

</mapper>

查询数据时,实体对象有些数据值为null,有多种解决方法

1.

2、

3、

统一规范

简化公共路径

简化分页查询

文件上传

本地文件存储

    @PostMapping("/upload")
    public Result upload(String username, Integer age, MultipartFile image) throws IOException {
        log.info("文件上传:{},{},{}",username,age,image);
        //本地存储文件
        //1.构建文件名,使文件名唯一
            //获取拓展名
        int index = image.getOriginalFilename().lastIndexOf(".");
            //截取拓展名
        String suffix = image.getOriginalFilename().substring(index);
            //新拓展名使用唯一的UUID+原文件后缀的形式
        String newFileName = UUID.randomUUID().toString() + suffix;
        image.transferTo(new File("E:\\upload\\"+newFileName));
        return Result.success();
    }

OSS文件存储

有坑,为了返回url,endpoint要带https://

  private String endpoint = "https://oss-cn-beijing.aliyuncs.com";

修改账户信息用了两个请求:1.请求账户信息(查询id),2.根据id请求修改账户信息。

集中化配置文件

好处:1.集中管理; 2.修改配置文件后,Java文件不用重新编译

简化配置文件

再次简化类中配置信息

将阿里云配置信息独立成一个类,配置该类图上右方的3个注解。这样项目项目启动时,将自动创建此对象,并将阿里云oss配置注入对象属性中。我们可以在需要使用这些配置信息的阿里云工具类中注入即可。

会话跟踪技术

cookie

由于http协议的支持,服务端响应头中set-Cookie字段设置了cookie,客户端将接收到的cookie存储到本地,且每次请求时在请求头中的cookie字段带上cookie内容。

服务端
客户端

session

(第一次收到请求时)服务端生成并返回session给客户端(以请求头的形式),客户端将记录下该session(以cookie形式记录),且客户端下次请求时带上该session id 信息。

令牌技术:存储在任意文件下

页面拦截

过滤器

拦截器

全局异常处理器

防止尴尬

定义全局异常处理器

mysql事务

索引:用于优化大数据量表的查询速度

无索引情况下默认“全表查询”——即从第一行开始扫描,直到找到为止;而有索引的情况下,类似一棵BST的搜索流程。

由于BST和红黑树高度较高(由于二叉的特性导致的),故MySql中采用B+树进行索引建立,这大大降低了树的高度

B+树所有的key都在叶子节点,且每层元素都是有序的,叶子节点间形成了一个双向链表。

spring事务

默认情况下只有运行时异常才回滚,but可进行设置所有异常情况都回滚

可以通过注解配置bean是否为单例,也可以通过注解设置对象创建时间

Leave a Reply

Your email address will not be published. Required fields are marked *