02 2024 档案
摘要:概述 UI 组件库:提供了一些如输入框、布局、按钮等在网页UI布局中常用的元素,并将这些元素以组件的形式提供给我们。 一般会说UI组件库是基于哪个框架【Vue/React/...】的、PC端/移动端 什么项目适合用UI组件库,什么项目不适合?【UI组件库的应用场景】 不适合【页面中包含很多定制化、个
阅读全文
摘要:Element UI 完整引入 import ElementUI from 'element-ui'; //引入所有组件的样式 import 'element-ui/lib/theme-chalk/index.css'; 引入所有的组件 Vue.use(ElementUI); 注:仅用了几个组件,就
阅读全文
摘要:VuePress 一、部署 创建项目文件夹 在任意目录下创建文件夹mydocs 注:路径中不要包含中文 安装VuePress npm install vuepress 注:如需全局安装,请执行npm install -g vuepress 初始化项目 在项目文件夹下打开命令行,执行 npm init
阅读全文
摘要:模块化+命名空间 Vuex中的高级写法:Vuex的模块化编码 把不同分类【业务分类不同,比如订单管理类的和商品管理类的】的mutation放在不同位置 模块化编码的最终目标:对actions、mutations、state、getters中的内容进行分类整理 1. Vuex模块化编码的步骤 根据业务
阅读全文
摘要:四个map方法的使用 这四个map方法的作用是帮我们生成代码。 计算属性优化了模板中的语法,使得插值语法变得简洁,但仍然没有解决代码冗余的问题,只是将插值语法中的冗余转移到了计算属性中 为什么我们需要生成代码? 模板中获取state中的数据时,代码冗余很高,存在代码优化的可能。 可以通过计算属性简化
阅读全文
摘要:getters配置项 概念:getters配置项并不是必须要使用的,当state中的数据需要经过加工后再使用时,可以使用getters加工。 应用场景:运算逻辑复杂而且需要复用,用于抽取基于state中数据的公共运算 在store.js中追加getters配置 ...... // 准备getters
阅读全文
摘要:Vuex Devtools 由于Vue和Vuex都是由官方团队开发的,Vue的Devtools和Vuex的Devtools是合二为一的 组件页签、Vuex页签、事件页签 事件页签:观察自定义事件和全局事件总线中的事件 Vuex Devtools仅仅捕获mutations中的动作,actions中的动
阅读全文
摘要:求和案例 // index.js import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) const actions = { // 对于不包含业务逻辑也不进行Ajax请求转发的操作可以不经过actions,直接调用mutations中的
阅读全文
摘要:搭建Vuex环境 安装Vuex npm i vuex@3 注:目前使用的是vue 2,所以要安装vuex 3 创建src/vuex/store.js或src/store/index.js,二选一,js文件的内容都是一样的,该文件用于创建Vuex中最为核心的store //引入Vue核心库 impor
阅读全文
摘要:关于Vue和Vuex的版本对应关系 Vue 2 对应 Vuex 3 Vue 3 对应 Vuex 4 注:如果版本不对应,就会报错
阅读全文
摘要:工作原理 vuex原理图 Devtools:vuex官方提供的开发者调试工具 Backend API:后端接口`` vuex原理图-理解 mutations相当于后端里的dao层,直接操作数据【数据库】 actions相当于后端里的Service层,封装业务逻辑,发送接口 如果一个操作没有业务逻辑或
阅读全文
摘要:概述 一、是什么 在Vue中实现集中式状态(数据)管理的一个Vue插件,对vue应用中多个组件的共享状态进行集中式的管理(读/写),也是一种组件间通信的方式,且适用于任意组件间通信。 注:Vue和Vuex的关系与React和Redux是一样的 解析 集中式与分布式 状态 <=> 数据 <=> 状
阅读全文
摘要:路由器的两种工作模式 对于一个url来说,什么是hash值?—— #及其后面的内容就是hash值。 hash值不会包含在 HTTP 请求中,即:hash值不会作为路径的一部分随着http请求带给服务器。【#/。。。】 hash模式:默认的工作模式 地址中永远带着#号,路由的名是以hash值的形式呈现
阅读全文
摘要:路由守卫 作用:对路由进行权限控制,满足一定条件才能看到跳转到的路由组件 分类:全局守卫、独享守卫、组件内守卫 全局守卫: // src/router/index.js // router:我们创建的路由器实例 // router.beforeEach(function):每一次进行路由跳转之前都会
阅读全文
摘要:两个新的生命周期钩子 缓存路由组件和定时器一起使用时,如果进行了路由跳转,本应触发在beforeDestroy钩子中清除定时器方法,但因为缓存了路由组件,就导致原来的路由组件的beforeDestroy钩子不会被触发,定时器也就不会清除 作用:路由组件所独有的两个钩子,用于捕获路由组件的激活状态
阅读全文
摘要:缓存路由组件 完善路由的技巧 作用:让不展示的路由组件保持挂载,不被销毁。 正常情况下,进行了路由跳转后,之前的组件会被销毁,如果之前的组件中存在input框之类的表单类组件,输入的内容也就消失了,也就是说,要保证路由跳转后不销毁之前的组件 具体编码: // 缓存的对象:并不是所有路由组件都需要
阅读全文
摘要:编程式路由导航 作用:不借助<router-link> 实现路由跳转,让路由跳转更加灵活。 为什么需要除了<router-link>标签之外实现路由跳转的方式? <router-link>标签最后变为<a>标签,无法实现button按钮的跳转 触发路由跳转可能需要异步触发,<router-link>
阅读全文
摘要:<router-link>的replace属性 作用:控制路由跳转时操作浏览器历史记录的模式 浏览器的历史记录有两种写入方式:分别为push和replace,push是追加历史记录,不破坏栈中的任何一条数据,不断的压入数据,replace是替换掉当前栈顶的那一条记录。路由跳转时候默认为push 注:
阅读全文
摘要:路由的props配置项 路由组件读取其他组件传递的参数时,是通过$route.params.id这种方式读取的,$route.params 部分代码冗余度高,如何能够降低这种冗余?props配置项可以做到 作用:让路由组件更方便的收到参数 { name:'xiangqing', path:'
阅读全文
摘要:命名路由 命名路由:给你的路由规则起个名字 作用:可以简化路由的跳转【路由层级比较多时】。 如何使用 给路由规则命名: { path:'/demo', component:Demo, children:[ { path:'test', component:Test, children:[ { nam
阅读全文
摘要:路由传参 如何给路由组件传递参数 点击导航区的时候将数据带给路由组件,展示区根据数据渲染组件,渲染的都是同一个组件,只不过数据不同 路由组件可以接收两种参数:query参数和params参数 这两种参数的写法与Ajax中query参数和params参数的写法是一样的 1. query参数 传递参数
阅读全文
摘要:嵌套(多级)路由 展示区中包含了新的导航区和展示区 配置路由规则,使用children配置项: routes:[ //routes中直接配置的是一级路由 { path:'/about', component:About, }, { path:'/home', component:Home, chil
阅读全文
摘要:几个注意点 路由组件通常存放在pages文件夹,一般组件通常存放在components文件夹。 通过组件的使用方式不同将组件划分为不同的分类:路由组件和一般组件 路由组件:靠路由规则匹配出来,由路由器帮我们渲染的组件【我们没有亲自写过这种组件标签】 一般组件:我们亲自写的组件标签 路由组件从某种意义
阅读全文
摘要:使用步骤 安装vue-router,命令:npm i vue-router 导入并应用插件 // main.js import VueRouter from 'vue-router' Vue.use(VueRouter) 创建src/router/index.js,该文件专门用于创建整个应用的路由器
阅读全文
摘要:路由 1. SPA应用 单页Web 应用(single page web application,SPA)。 整个应用只有一个完整的页面(index.html)。 点击页面中的导航链接不会刷新页面,页面不会跳转,只会做页面的局部更新。 数据需要通过ajax 请求获取。 注:多页面应用,多个页面来回跳
阅读全文
摘要:总结 父组件 =》 子组件【props】 子组件 =》 父组件【函数类型的props、组件自定义事件】 孙组件 =》 父组件【全局事件总线】 在组件中引入库时,顺序是这样的 第三方库 自己写的组件 所有开发人员都要用的样式配置在App中 当标签中的属性过多时,可进行改写,改写时通常将原生属性放在最上
阅读全文
摘要:插槽 结构在哪【结构的代码在哪个组件】,样式就写在哪【样式就写在哪个组件中】 这里的App组件是Category组件的父组件 <!-- Category组件 --> <h3>{{title}}分类</h3> <!-- 定义一个插槽,相当于提前挖了个坑 --> <!-- slot标签的作用相当于占位符
阅读全文
摘要:Vue 中的 ajax 如何借助Vue脚手架解决ajax请求跨域的问题 node server.js 运行nodejs文件 一、常用的发送Ajax请求的方式 xhr:js中内置的 new XMLHttpRequest():windows对象身上的,可以直接用 xhr.open():配置请求信息 xh
阅读全文
摘要:Vue模块化开发 # 全局安装webpack npm install webpack@4.41.2 -g # 全局安装vue脚手架 npm install @vue/cli-init@4.0.3 -g # 创建模块化的脚手架工程 # vue脚手架使用webpack模板初始化一个appname项目 v
阅读全文
摘要:过渡与动画 Vue封装的过渡与动画 1. 前置知识 CSS 3 动画【2D转换、3D转换、过渡、动画】 参考网站:https://www.runoob.com/css3/css3-animations.html <h1 v-show="isShow" id="title">显示了</h1> <sty
阅读全文
摘要:$nextTick $nextTick这也是一个生命周期 如果要实现一个input框点击后进行一些数据修改的操作【这里是指能够引起Vue重新解析模板的数据修改操作,比如修改data中的数据】,然后让该input框获取焦点,该怎么做? // Item组件中有一个input输入框和一个编辑按钮,实现
阅读全文
摘要:消息订阅与发布【pubsub】 1. 理解消息订阅与发布 2. 原理图 通过报纸的订阅与发布来理解就是:A去C那订阅了报纸demo,并说明了自己的住址test,由于test是定义在A中的,而A又把test的引用提供出来了,这样C只要一调用test,自动就来到了A这,也就找到了A住的地儿,C发布t
阅读全文
摘要:全局事件总线【GlobalEventBus】🔥🔥🔥 1. 原理图 2. 成为x的条件 所有组件都能看到x x要能够调用$on、$off、$emit几个API,分别用于绑定、解绑、触发事件 探究一:将x放在哪能满足所有组件都能看到x这个条件? 可以放在window上,但这样不好,也可以修改源
阅读全文
摘要:组件自定义事件 区别于js内置事件,内置事件是给html元素用的,而自定义事件是给组件用的 1. 给组件实例对象绑定自定义事件 给组件绑定自定义事件 v-on:自定义事件名="回调函数" 比如:<Student v-on:atguigu="demo"/> 上面代码的含义为:由于v-on是在Stude
阅读全文
摘要:webStorage【浏览器本地存储】 localStorage和sessionStorage统称为webStorage 1. localStorage 未登录账号的情况下进行了商品搜索,搜索历史中保存了之前的搜索记录 借助浏览器的本地存储可以将数据存到硬盘上,用于缓存数据 通过浏览器如何查看浏览器
阅读全文
摘要:Todo-list案例 1. 工作情景 从0到1编写每个组件的结构和样式 已有上一版项目的代码【HTML+CSS+JavaScript】,但不是组件化项目,需要进行改造 首先将HTML中body标签内的部分全部放到App组件的模板中,然后把所有的样式也都放到App组件中,这样整个界面就出来了 先拆结
阅读全文
摘要:lang样式 lang(language):指定css使用的编写方式【css/less/sass/scss等】,不指定lang默认就是lang="css" 写法:<style lang="less"> css的预编译语言:less 脚手架处理不了less,处理less需要安装less-loader
阅读全文
摘要:scoped样式 脚手架当中编写样式的技巧 当多个组件的样式有冲突时,以最后引入的组件的样式为最终样式 作用:让样式在局部生效【样式仅对当前组件生效】,防止因App组件中通过import汇总组件时样式冲突【比如不同组件中有相同类名等】。 写法:<style scoped> 工作原理: 注:如果在Ap
阅读全文
摘要:插件 功能:用于增强Vue 本质:包含install方法的一个对象,install的第一个参数是Vue构造函数,第二个以后的参数是插件使用者传递的数据。 定义插件: 对象.install = function (Vue, option1, option2, option3...) { // 1. 添
阅读全文
摘要:mixin混入(合)配置项 多个组件共享一个配置 混合中都能写什么东西 组件中定义组件时的每一个配置项都可以写在混合中,作为公共配置 组件中最终的配置项是原来在组件中写的配置和混合的配置项进行了整合【你有的,我有的,组合在一起给你用】 如果同一个配置【生命钩子除外】组件中有,混合中也有,那以组件中的
阅读全文
摘要:props配置项 对于一个新功能,结构、交互、样式都与已有的组件一样,唯独数据不一样 也就是说数据是从外部带给组件的,数据是动态获取的,这也是一种组件的复用 功能:让组件接收外部传过来的数据/方法 传递数据:<Demo name="xxx"/> 传值时可通过v-bind指令【简写为:】传递不同数据类
阅读全文
摘要:ref标签属性 被用来给元素或子组件注册引用信息【打个标识,回头我能找到你】(id的替代者) 应用在html标签上获取的是真实DOM元素,应用在组件标签上是组件实例对象(vc) 使用方式: 打标识:<h1 ref="xxx">.....</h1> 或 <School ref="xxx"></Scho
阅读全文
摘要:vue.config.js配置文件 脚手架是依托着webpack的,webpack有一个自己的配置文件【webpack.config.js】,而webpack.config.js这个文件是没有暴露出来的 Vue 脚手架隐藏了所有webpack 相关的配置,若想查看具体的webpack 配置, 使
阅读全文
摘要:初始化脚手架 Vue CLI【Vue脚手架】 Vue CLI:Vue Command Line Interface 1. 说明 Vue 脚手架是 Vue 官方提供的标准化开发工具(开发平台)。 最新的版本是 4.x。 脚手架版本的选择:一般脚手架选最新版本,注意不要用很新的Vue版本对应比较旧的Vu
阅读全文
摘要:一些注意点 vue基础 vue-cli:工程化开发 vue-router:在Vue中实现前端路由 vuex:应用足够复杂时,用于保管数据 element-ui vue3 Angular ==》 React ==》 Vue 生命周期函数中的this都是vm 开发中自行向vm身上追加属性时【场景:比如m
阅读全文
摘要:Vue组件化编程 一、对组件的理解 什么是组件? 组件的定义: 实现应用中局部【组件要拆的尽量细致】功能代码【对于前端来说,就是css+html+js】和资源【mp3、mp4、ttf、.zip...】的集合【组件是一个集合】 与传统方式编程相比,组件化编程有什么优势? 依赖关系不混乱、好维护、代
阅读全文
摘要:生命周期[函数]🔥🔥🔥 js 不善于处理小数,0.1 + 0.2 不一定等于0.3,当通过js判断一个不断缩小的变量的值是否缩小到0时,可以通过<=0进行判断;如果直接判断 0,可能会出现递减的值取不到0的情况 mounted的执行时期:Vue完成模板的解析并把初始的真实DOM元素放入页面后(
阅读全文
摘要:自定义指令 从某种程度上来说,Vue中的自定义指令就是把原生DOM操作进行了一次封装 指令是不能脱离元素【标签】存在的 定义指令:big 使用指令:v-big 值的写法:对象【可以处理一些细节上的问题】和函数 定义指令可以通过两种方式,函数式和对象式 1. 函数式 指令名(真实DOM元素[eleme
阅读全文
摘要:内置指令 我们学过的指令: v-bind : 单向绑定解析表达式, 可简写为 :xxx v-model : 双向数据绑定 v-for : 遍历数组/对象/字符串 v-on : 绑定事件监听, 可简写为@ v-if : 条件渲染(动态控制节点是否存存在) v-else : 条件渲染(动态控制节点是否存
阅读全文
摘要:过滤器 BootCDN:包含了一些免费、优秀的第三方类库 官网:https://www.bootcdn.cn/ moment.js:js的日期处理类库 dayjs:moment.js的轻量化解决方案,API同moment.js完全一致 引入dayjs,全局就多了一个dayjs()函数,dayjs()
阅读全文
摘要:方法区 🔥🔥🔥 方法区使用的是本地内存(物理上的内存) 方法区在JDK 8以后就被称为元空间,元空间使用的就是本地内存(直接内存) 1. 栈、堆、方法区的交互关系 也叫栈、堆、方法区的配合关系 1.1 运行时数据区结构图 从线程共享与否的角度来看运行时数据区,可以作如下划分: 元空间除动态加载
阅读全文
摘要:堆 🔥🔥🔥 堆空间是运行时数据区中最大的一部分区域,但不是绝对的,因为堆空间大小是可以设置的。 1. 堆的核心概述 一个Java程序对应一个JVM实例,一个JVM实例对应一个进程,一个进程对应多个线程,一个进程中的多个线程共享【多个线程共享就会出现线程安全问题】同一个堆和方法区,每个线程各自拥
阅读全文
摘要:本地方法栈 Java虚拟机栈用于管理Java方法的调用,而本地方法栈用于管理本地方法的调用。 本地方法栈,也是线程私有的。 允许被实现成固定或者是可动态扩展的内存大小。(在内存溢出方面是相同的) ➢如果线程请求分配的栈容量超过本地方法栈允许的最大容量,Java虚拟机将会抛出一一个stackoverf
阅读全文
摘要:本地方法接口(JNI) 1. 什么是本地方法? 简单地讲,一个Native Method就是-一个Java调用非Java代码的接口。一个Native Method是这样一个Java方法:该方法的实现由非Java语言实现,比如C【以C为代表的本地方法】。这个特征并非Java所特有,很多其它的编程语言都
阅读全文
摘要:虚拟机栈(Java栈)🔥🔥🔥 1. 虚拟机栈概述 1.1 虚拟机栈出现的背景 由于跨平台性的设计,Java的指令都是根据栈来设计的【基于栈的指令集架构】。不同平台CPU架构不同,所以不能设计为基于寄存器的。 优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令。
阅读全文
摘要:程序计数器(PC寄存器) 1. PC Register 介绍 JVM中的程序计数寄存器(Program Counter Register) 中,Register 的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能够运行。 这里,并非是广义上所指的物理寄存
阅读全文
摘要:运行时数据区概述及线程 1. 概述 经过类加载器子系统之后,方法区中就保存了运行时类本身。 内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程序的实时运行。JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策略,保证了JVM的高效稳定运行。不同的JVM对
阅读全文
摘要:类加载器子系统 1. 内存结构概述 如果自己手写一个Java虚拟机的话,主要考虑哪些结构呢? 类加载器和执行引擎 2. 类的加载器及类加载过程 2.1 类加载器子系统的作用 类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识。 ClassLoader只
阅读全文
摘要:JVM与Java体系结构 1. 前言 JVM拥有当前最前沿、最成熟的垃圾回收算法 JIT:即时编译器 AOT:提前编译器 JVM:代码托管技术 拓展: 前端编译器:负责把Java文件编译成Class文件,如Sun的Javac; 后端运行期编译器(JIT编译器):负责把Class文件的字节码转换成机器
阅读全文
摘要:Condition控制线程通信 对象 等待 唤醒 唤醒所有 Object wait() notify() notifyAll() Condition await() signal() signalAll() Lock同步锁的线程通信需要通过Condition实现 通过Lock+Condition实现
阅读全文
摘要:Lock同步锁 用于解决多线程安全问题的方式: 同步代码块,synchronized实现,隐式锁 同步方法,synchronized实现,隐式锁 同步锁Lock:jdk 1.5以后 注:是一个显示锁,需要通过lock()方法上锁,必须通过unlock()方法进行释放锁(一定要将unlock()放到f
阅读全文
摘要:实现Callable接口 创建执行线程的第三种方式,共四种 比较Runnable和Callable: Callable方法可以有返回值,并且可以抛出异常。 由于Callable的方法有返回值,需要FutureTask的支持,用于接收运算结果。FutureTask 是 Future接口的实现类。 使用
阅读全文
摘要:CountDownLatch闭锁 闭锁:延迟当前线程的进度,直到其他线程都执行完成当前线程才继续执行。 示例:计算多线程操作耗费时间 以下操作时无法正常计算多线程操作耗时的 package com.atguigu.juc; public class TestCountDownLatch { publ
阅读全文
摘要:ConcurrentHashMap锁分段机制 1. 关于HashMap和HashTable HashMap:线程不安全 HashTable: 效率低:操作时锁整个表 复合操作会带来安全问题 // table.contains()和table.put()分别都是加了锁的,但是像下述复合操作,一个线程判
阅读全文
摘要:原子变量-CAS算法 1. i++的原子性问题 i++的计算原理:读 - 改 - 写 int temp = i; i = i + 1; 将i++赋给其他变量的时候会将temp的值赋给其他变量,比如: int i = 10; i = i++; // 这里i的值就是10,i++的值实际上就是临时变量te
阅读全文
摘要:volatile关键字-内存可见性 引出内存可见性问题的示例: package com.atguigu.juc; public class TestVolatile { public static void main(String[] args) { // 线程threadDemo修改共享变量的值
阅读全文
摘要:简介 JDK 1.5以后提供 多线程: 1.5以前 synchronized、volatile 1.5以后 JUC
阅读全文
摘要:常用元素 1. <head>元素 该元素的内容对用户不可见,包含面向搜索引擎的关键字、字符编码等,最先加载 1.1 <base>元素 指定网页中所有超链接的属性,只需设置一次相关属性即可对网页中的所有超链接生效。否则,如果想要网页中的每个超链接都设置相同属性,需要对每个超链接进行设置。 href 指
阅读全文
摘要:概述 超文本标记语言 (英语:Hypertext Markup Language,简称:HTML ) 概念解析 超文本 谈到超文本,要跟文本作对比进行理解,首先,文本是线性方式组织的线性结构,如书本,一页一页按顺序组织;而超文本是以非线性方式组织的网状结构,文本中有一些相关内容是可以通过链接的方式组
阅读全文
摘要:CSS的盒子模型 盒子:用于封装数据的一片区域 边框 内边距 外边距的设置方式与内边距相同,除上述设置方法外,还可通过上下左右对应的属性分别进行设置。 注:body元素是有默认外边距值的,可以通过设置margin:0px;来取消默认值设置,以免由于浏览器不同造成的body元素默认值不同而引起的展示效
阅读全文
摘要:选择器(CSS的核心) 标签用于封装数据,因此标签相当于容器,选择器可以理解为选择哪个容器,即标签就相当于是容器,而定位标签又有几种不同的方式,分别对应了几种不同的选择器。总结:每种定位标签的方式对应一种选择器。 1. HTML标签选择器 通过html标签定位标签,只能对相同标签进行相同样式设定 2
阅读全文
摘要:概述 层叠样式表(Cascading Style Sheet,简称:CSS),样式语言,解决页面显示效果的问题。CSS将网页内容和显示样式进行分离,降低了耦合性 CSS与HTML的结合方式 每一个HTML标签中都有一个style属性,通过该属性设置CSS样式 使用style标签,一般放在head标签
阅读全文
摘要:收集表单数据 如何利用Vue提供的v-model收集一个表单中的数据 v-model配合不同的input标签有不同的技巧 hobby的初始值能够影响v-model收集回来的数据 hobby为字符串,收集到的是checked属性的值 hobby为数组,收集到的是自己定义的value属性的值 多选框【C
阅读全文
摘要:Vue监测数据的原理 思路:举例 ==》 监测对象数据原理 ==》 Vue.set() ==》 监测数组数据原理 ==》 说明前面例子中的现象 Vue监测数据改变的原理 Vue底层监测data中数据改变的原理和watch中监测数据的原理是一致的,watch是Vue提供给我们用于自行监视数据变化的配置
阅读全文
摘要:列表渲染 1. v-for指令 v-for指令: 1.用于展示列表数据 2.语法:v-for="(item, index) in xxx" :key="yyy" 3.可遍历:数组(用的最多)、对象、字符串(用的很少)、指定次数(用的很少) <body> <!-- 准备好一个容器--> <div id
阅读全文
摘要:条件渲染 符合某些条件,就给你渲染某些东西;不符合条件,要渲染的东西就不会显示 原生可以通过display:none;、visibility: hidden;、opacity: 0;几种方式实现 v-if和v-else-if、v-else需要作为一组指令使用,中间不允许被打断,v-else是不需要加
阅读全文
摘要:绑定样式 1. class样式 绑定样式: 1. class样式【不变的样式写在class、style中,变化的样式写在:class中,最终的样式为三者的并集】 写法:class="xxx" xxx可以是字符串、对象、数组。 字符串写法适用于:类名不确定,要动态获取。 对象写法适用于:要绑定多个样式
阅读全文
摘要:监视/侦听属性【watch】 用于监视某一个属性的变化 监视属性watch: 1.当被监视的属性变化时, 回调函数【handler()】自动调用, 进行相关操作 2.监视的属性必须存在,才能进行监视!!【监视不存在的属性不会报错】 3.配置监视的两种写法: (1).new Vue时传入watch配置
阅读全文
摘要:计算属性【computed】 1. 姓名案例 1.1 {{}}插值语法版本 <body> <div id="root"> 姓:<input type="text" v-model="firstName"/> 名:<input type="text" v-model="lastName"/> <hr
阅读全文
摘要:事件处理 1. 事件的基本使用 模板只能用到对应Vue实例中的数据和方法,像这里的showInfo,模板中是调不到的 所有被Vue管理的函数【methods对象中的函数】不能写成箭头函数,只能写成普通函数,否则,函数中的this就不再是Vue实例,而是Window对象 只有配置在data中的内容才会
阅读全文
摘要:数据代理 1. Object.defineProperty【ES6中的知识点】 用于给一个对象添加/定义属性,可以对追加的属性进行很多高级的限制【比如控制属性是否可以枚举、修改、删除】 Object.defineProperty方法在Vue中的应用 数据劫持 数据代理 计算属性 Object.def
阅读全文
摘要:理解MVVM MVVM模型 1. M:模型(Model) :data中的数据 2. V:视图(View) :模板代码 3. VM:视图模型(ViewModel):Vue实例 观察发现: 1.data中所有的属性,最后都出现在了vm身上。 2.vm身上所有的属性 及 Vue原型上所有属性,在Vue模板
阅读全文
摘要:数据绑定 Vue中有2种数据绑定的方式: 1.单向绑定(v-bind):数据只能从data流向页面。 2.双向绑定(v-model):数据不仅能从data流向页面,还可以从页面流向data。【通俗:数据变,页面变;页面变,数据变】 备注: 1.双向绑定一般都应用在表单类【输入类,有value属性的标
阅读全文
摘要:模板语法 容器里的代码被称为【Vue模板】,模板语法就是指模板的代码中可以写哪些Vue语法【类似:{{name}}】 插值语法:把指定的值放在指定的位置。 插值语法往往用于指定标签体内容。 指令语法: Vue指令所在的属性值会作为JavaScript表达式执行 v-bind:用于给标签中的任意一个属
阅读全文
摘要:初识Vue 1. 搭建Vue开发环境 安装Vue 直接用引入 可能涉及到CDN加速,CDN加速会让标签的src引入的网络js文件加载速度更快。 npm+命令行 新建一个空文件夹,在空文件夹目录下执行 // npm初始化,想要使用npm安装vue必须先初始化,初始化后生成package.json np
阅读全文
摘要:Vue简介 1. Vue是什么? 一套用于构建用户界面的渐进式JavaScript框架。 构建用户界面:将拿到的数据通过某种办法变成用户可以看到的界面。 渐进式:从一个轻量而又小巧的核心库逐渐递进到使用各式各样的Vue插件库【Vue可以自底向上逐层的应用】 2. 谁开发的? React、An
阅读全文
摘要:Seata之原理简介 Seata的几种事务模式 AT模式【默认】:阿里云GTS TCC模式 SAGA模式:长事务 XA模式(开发中) 扩展 漏桶算法 令牌桶算法 参考网站:https://cloud.tencent.com/developer/article/1773878
阅读全文
摘要:实战 1. 分布式事务业务说明 这里我们会创建三个服务,一个订单服务,一个库存服务,一个账户服务。 当用户下单时,会在订单服务中创建一个订单,然后通过远程调用库存服务来扣减下单商品的库存,再通过远程调用账户服务来扣减用户账户里面的余额,最后在订单服务中修改订单状态为已完成。 该操作跨越三
阅读全文
摘要:Seata-Server安装 此次使用的是Seata 0.9.0 1. 下载地址 https://github.com/seata/seata/releases 这里使用的是Linux虚拟机,所以下载的是Linux版的 Linux版下载地址:https://github.com/apache/inc
阅读全文
摘要:Seata简介 SpringCloud Alibaba Seata处理分布式事务 1. 是什么 Seata(Simple Extensible Autonomous Transaction Architecture,简单可扩展自治事务框架)一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能
阅读全文
摘要:分布式事务问题 用户购买商品的业务逻辑。整个业务逻辑由3个微服务提供支持: 仓储服务:对始定的商品扣除仓储数量。 订单服务:根据采购需创建订单。 帐户服务∶从用户帐户中扣除余额。 单体应用被拆分成微服务应用,原来的三个模块被拆分成三个独立的应用,分别使用三个独立的数据源,业务操作需要调用三个服务
阅读全文
摘要:规则持久化 1. 是什么 在Sentinel中配置的规则在资源所在的服务重启后就消失了 以cloudalibaba-sentinel-service8401为例进行说明 启动单机版Nacos 启动Sentinel 启动cloudalibaba-sentinel-service8401 为clouda
阅读全文
摘要:服务熔断 Sentinel整合Ribbon和OpenFeign @SentinelResource的fallback 1. Ribbon系列 1.1 服务提供者 新建cloudalibaba-provider-payment9003和cloudalibaba-provider-payment9004
阅读全文
摘要:@SentinelResource 相当于Hystrix中的@HystrixCommand 1. 按资源名称限流 环境说明 启动了单机版的Nacos 启动了Sentinel 基于项目cloudalibaba-sentinel-service8401 继续改造 增加RateLimitControlle
阅读全文
摘要:系统规则【系统自适应限流】 官网:https://github.com/alibaba/Sentinel/wiki/系统自适应限流 1. 基本介绍 从整体维度对应用入口流量进行控制【其他规则是针对接口的,系统规则是针对所有接口的】 违反规则后整个系统不可用 阈值类型 Load 自适应(仅对 Linu
阅读全文
摘要:热点参数限流规则🔥🔥 1. 基本介绍 基本介绍 何为热点?热点即经常访问的数据。很多时候我们希望统计某个热点数据中访问频次最高的 Top K 数据,并对其访问进行限制。比如: 商品 ID 为参数,统计一段时间内最常购买的商品 ID 并进行限制 用户 ID 为参数,针对一段时间内频繁访问的用户
阅读全文
摘要:降级规则 官网:https://sentinelguard.io/zh-cn/docs/circuit-breaking.html 1. 基本介绍 Sentinel熔断降级会在调用链路中某个资源出现不稳定状态时(例如调用超时或异常比例升高),对这个资源的调用进行限制,让请求快速失败,避免影响到其
阅读全文
摘要:流控规则 流量控制 官网:https://github.com/alibaba/Sentinel/wiki/流量控制 1. 基本介绍 资源名:唯一名称,默认请求路径 针对来源:Sentinel可以针对调用者进行限流,填写微服务名,默认default (不区分来源) 阈值类型/单机阈值: QPS(每秒
阅读全文
摘要:初始化演示工程 1. 构建cloudalibaba-sentinel-service8401 建Module【cloudalibaba-sentinel-service8401】 改POM <?xml version="1.0" encoding="UTF-8"?> <project xmlns="
阅读全文
摘要:安装Sentinel控制台 Sentinel分为两个部分: 核心库(ava客户端)不依赖任何框架/库,能够运行于所有Java运行时环境,同时对 Dubbo /Spring Cloud 等框架也有较好的支持。【后台的监控程序】 控制台(Dashboard)基于Spring Boot开发,打包后可以直接
阅读全文
摘要:简介 SpringCloud Alibaba Sentinel实现熔断与限流 1. 官网 https://github.com/alibaba/Sentinel https://github.com/alibaba/Sentinel/wiki/介绍 https://sentinelguard.io/
阅读全文
摘要:Nacos集群和持久化配置🔥🔥🔥 Nacos默认情况下使用的是内置的Derby数据库,持久化配置是指将存储数据使用的Derby数据库改为我们自己的数据库,目前仅支持MySQL。 1. 官网说明 官网:https://nacos.io/zh-cn/docs/cluster-mode-quick-
阅读全文
摘要:Nacos作为服务配置中心 以前我们使用配置中心: 我们把配置放到Github上,Config 作配置中心,Bus实现配置动态刷新 现在使用配置中心: 配置放到Nacos中,Nacos作配置中心,Nacos实现配置动态刷新 1. Nacos作为配置中心-基础配置 建Module【cloudaliba
阅读全文
摘要:Nacos作为服务注册中心 1. 官网文档 https://spring-cloud-alibaba-group.github.io/github-pages/greenwich/spring-cloud-alibaba.html#_spring_cloud_alibaba_nacos_discov
阅读全文
摘要:安装并运行Nacos 环境要求:Java8+Maven 1. 选用版本及下载 选用版本:1.1.4 下载地址:https://github.com/alibaba/nacos/releases/tag/1.1.4 2. 运行 2.1 Linux 下载后得到nacos-server-1.1.4.tar
阅读全文
摘要:简介 SpringCloud Alibaba Nacos服务注册和配置中心 1. 为什么叫Nacos Naming Configuration Service 2. 是什么 官网:一个更易于构建云原生应用的动态服务发现,配置管理和服务管理中心 Nacos = Eureka+Config+Bus 疑问
阅读全文
摘要:概述 1. 为什么会出现SpringCloud Alibaba Spring Cloud Netflix项目进入维护模式 2. 学习资料 官网:https://spring.io/projects/spring-cloud-alibaba#overview 英文:https://github.c
阅读全文
摘要:微服务架构零基础理论入门 一、微服务架构概述 1. 什么是微服务 由Martin Flower提出 微小的、独立的进程、轻量级、可独立部署 微服务架构是种架构模式,它提倡将单一应用程序 划分成一组小的服务, 服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务
阅读全文
摘要:关于一些可能出现的报错 1. DruidDataSource : testWhileIdle is true, validationQuery not set 工程启动时可能会报如下错误,这是DruidDataSource保持链接的测试,不影响我们的应用。 2. idea未监测到yml文件 出现这种
阅读全文
摘要:SpringCloud Sleuth分布式请求链路追踪 一、概述 1. 应用场景 在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点调用来协同产生最后的请求结果,每一个前端请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环出现高延时或错误都会引起整个请求最后的失
阅读全文
摘要:SpringCloud Stream消息驱动 企业中常用的消息中间件 ActiveMQ RabbitMQ RocketMQ Kafka 一、消息驱动概述 1. 为什么引入SpringCloud Stream 消息中间件的产品众多(ActiveMQ、RabbitMQ、RocketMQ、Kafka.
阅读全文
摘要:服务总线 一、SpringCloud Bus 消息总线 Bus是对Config的加强 解决的问题:全局通知与定点通知 局域网广播型的通知离不开消息中间件 1. 概述 实现分布式自动刷新配置功能,Spring Cloud Bus配合Spring Cloud Config使用可以实现配置的动态刷新 1.
阅读全文
摘要:服务配置 目前在用的服务配置+服务总线的三套方案 Config+Bus Naccos(Alibaba) Apollo(携程)上海地区 一、SpringCloud Config 分布式配置中心 1. 概述 1.1 分布式系统面临的配置问题 微服务意味着要将单体应用中的业务拆分成一个个子服务, 每个
阅读全文
摘要:服务网关 类比医院的分诊台 一、Zuul 由Netflix团队研发,不再使用 官网:https://github.com/Netflix/zuul/wiki 1. Zuul1.x模型 Springcloud中所集成的Zuul版本,采用的是Tomcat容器,使用的是传统的Servlet I0处理模
阅读全文
摘要:服务降级 一、Hystrix断路器 1. 概述 1.1 分布式系统面临的问题 复杂分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免地失败。  The auto-confi
阅读全文
摘要:配置文件 见 Spring Boot 1.md 二、SpringBoot 配置 配置文件复杂配置的例子没有理解透彻
阅读全文
摘要:开发技巧 1. Lombok 1. 应用场景 简化JavaBean的开发 帮我们在编译时生成get、set、toString方法 2. 安装及使用 引入依赖【SpringBoot已经做了版本仲裁】 <dependency> <groupId>org.projectlombok</groupId> <
阅读全文
摘要:自动配置 1. 引导加载自动配置类 见 Spring Boot 1.md 一、SpringBoot 入门 4.2 主程序类,主入口类【自动配置原理】 1.1 @SpringBootConfiguration 见 Spring Boot 1.md 一、SpringBoot 入门 4.2 主程序类,主入
阅读全文
摘要:容器功能 1. 组件添加 1.1 @Configuration结合@Bean注册组件 @Configuration 见 Spring.md 8.4.1 @Configuration 1.2 @Component、@Controller、@Service、@Repository 见 Spring.md
阅读全文
摘要:SpringBoot特点 1. 依赖管理特性 SpringBoot已经为我们做了版本仲裁,那么如果我们要修改已经做了版本仲裁的依赖,比如mysql驱动的依赖,该怎么做呢? 查看spring-boot-dependencies里面规定的当前依赖版本用的properties属性 在当前项目里面重新配置
阅读全文
摘要:基础入门 课程规划 1. 时代背景 响应式编程解决的问题:如何使用少量资源编写一个极高吞吐量、能承担大并发的应用 响应式应用:占用少量的资源(线程)处理大量的并发 spring boot:整合spring整个生态圈的一站式框架 高层框架,底层是Spring Framework Spring: 1
阅读全文
摘要:Spring Boot与监控管理 1. 监控管理 应用在运维时的一个重要功能,Spring Boot为我们提供了准生产环境下的应用监控和管理功能,可以通过HTTP,JMX,SSH协来进行操作,得到监控信息。 1.1 引入依赖 <dependency> <groupId>org.springfra
阅读全文
摘要:Spring Boot与开发热部署 热部署 修改java文件或HTML文件后,不重启应用的情况下,程序可以自动部署(热部署) 1. Spring Boot Devtools【Auto Restart】 1)引入依赖 <dependency> <groupId>org.springframework.
阅读全文
摘要:Spring Boot与分布式 分布式、Dubbo/Zookeeper、Spring Boot/Cloud 分布式与微服务: 微服务和分布式的区别什么?有什么特点?微服务设计是为了不因为某个模块的升级和BUG影响现有的系统业务。微服务与分布式的细微差别是,微服务的应用不一定是分散在多个服务器上也
阅读全文
摘要:Spring Boot与安全 安全、Spring Security 安全:身份认证、权限控制、漏洞攻击 安全框架: 1)shiro 2)Spring Security Spring Boot底层是使用Spring Security作为安全框架 安全框架最主要的两个功能:认证、授权 认证:根据认证信息
阅读全文
摘要:Spring Boot与任务 异步任务、定时任务、邮件任务 1. 异步任务 1.1 应用场景 执行一些操作(如:邮件任务等)不想阻塞当前线程的情况下,可以通过多线程的方式进行异步处理。 1.2 快速使用 主配置类 //开启@Async异步注解功能 @EnableAsync @EnableRabbit
阅读全文
摘要:Spring Boot与检索 ElasticSearch 1. ElasticSearch简介 1)Java语言编写的开源全文搜索引擎。 2)用于快速的存储、搜索和分析海量数据。 3)是一个分布式搜索服务。 4)提供Restful API,通过发送请求的方式就可以将ElasticSearch用起来。
阅读全文
摘要:Spring Boot与消息 JMS、AMQP、RabbitMQ 1. 概述 消息服务的两个常见规范(消息代理规范):JMS、AMQP JMS(Java Message Service)JAVA消息服务: 基于JVM消息代理的规范。ActiveMQ、HornetMQ是JMS实现 AMQP(Adv
阅读全文
摘要:Spring Boot与缓存 JSR-107、Spring缓存抽象、整合Redis 缓存:加速系统访问,提升系统性能 热点数据、临时数据(如验证码) 1. JSR-107 1.1 背景 统一缓存的开发规范及提升系统的扩展性,J2EE发布了JSR-107缓存规范 1.2 JSR107简介 CacheM
阅读全文
摘要:自定义starter starters原理、自定义starters 如何自定义starter: 1、这个场景需要使用到的依赖是什么? 2、如何编写自动配置 @Configuration //指定这个类是一个配置类 @ConditionalOnXXX //在指定条件成立的情况下自动配置类生效
阅读全文
摘要:Spring Boot启动配置原理 启动原理、运行流程、自动配置原理 几个重要的事件回调机制(这几个事件回调机制可供我们进行干预) 配置在META-INF/spring.factories ApplicationContextInitializer SpringApplicationRunListe
阅读全文
摘要:SpringBoot与数据访问 JDBC、MyBatis、Spring Data JPA Spring Boot底层是使用的Spring Data作为数据访问的默认处理方式。 1. 整合基本JDBC与数据源 Pom依赖 <dependency> <groupId>org.springframewor
阅读全文
摘要:Spring Boot与Web开发 Thymeleaf、Web定制、容器定制 1. 如何使用Spring Boot 创建Spring Boot应用,选中我们需要的模块 Spring Boot已经默认将这些场景配置好了,我们只需要在配置文件中指定少量配置就可以运行起来 编写业务代码 2. Spring
阅读全文
摘要:SpringBoot与日志 日志框架、日志配置 1. 日志框架 JDBC和数据库驱动: JDBC是统一的接口层(抽象层),面向JDBC进行开发,而不直接面向数据库驱动,这样的好处是数据库驱动会不断的出现新产品,如果直接面向数据库驱动开发,那么,每次更换数据库驱动,开发的代码就要做相应的调整,而面向J
阅读全文
摘要:SpringBoot 配置 配置文件、加载顺序、配置原理 1. 配置文件 SpringBoot 默认使用两种类型的配置文件作为一个全局配置文件,配置文件名固定,用于修改SpringBoot自动配置的默认值 application.properties application.y(a)ml 1.1 Y
阅读全文
摘要:SpringBoot 入门 SpringBoot和微服务概念的简介、SpringBoot Hello World入门程序、内部原理 1. SpringBoot 简介 简化Spring应用开发(整个J2EE开发)的一个框架 整个Spring技术栈的一个大整合 ... ... ... J2EE开发的一站
阅读全文
摘要:FAQ 1. 测试类启动报错(编码) 解决方法: 2. 测试类启动报错(数据库) mysql 8.0 wnm 解决方法: 3. IDEA新建多层包显示在同一级 参考网址: https://blog.csdn.net/weixin_43873121/article/details/108146096
阅读全文
摘要:Mybatis中的注解开发 mapper映射文件的注解开发,SqlMapConfig.xml仍然保持原样 注解开发和xml开发对比中resultType部分是如何拼接形成的 当注解只有一个属性且是value时value可省略,当数组只有一个元素大括号可以省略 规范 通常一个Dao的开发方式是统一的,
阅读全文
摘要:Mybatis中的缓存 1. 一级缓存 1.1 触发清空一级缓存的情况 调用SqlSession的修改,添加,删除,commit(),close(),clearCache()方法时 2. 二级缓存 指Mybatis中SqlSessionFactory对象的缓存,由同一个SqlSessionFacto
阅读全文
摘要:Mybatis中的延迟加载 1. 配置开启延迟加载 参考网址: MyBatis中文网-配置-settings <settings> <setting name="lazyLoadingEnabled" value="true"/> <setting name="aggressiveLazyLoadi
阅读全文
摘要:Mybatis的多表关联查询 1. 一对一和多对一 1.1 需求描述 用户表和账户表 查询所有账户信息及所属用户信息 1.2 实现方式 创建主表对应实体类的子类实现 构建实体类之间的一对一和多对一映射关系实现 1.3 准备数据 创建对应的表,包括user(用户表),account(账户表) 1.4
阅读全文
摘要:Mybatis映射文件的SQL深入 1. if标签 1.1 应用场景 根据条件增加查询条件 1.2 使用标签 2. where标签 2.1 应用场景 代替where 1=1语句 2.2 使用标签 3. foreach标签 3.1 应用场景 用于select * from XXX where id i
阅读全文
摘要:自动提交事务的设置 传入true,开启自动提交,但一般不会使用这个设置,自动提交仅适用于一个方法中有一次数据库提交的情况,如果一个方法中有多次数据库提交,设置自动提交就破坏了事务的原子性
阅读全文
摘要:Mybatis中的连接池 1. 配置位置 主配置文件的dataSource标签的type属性 2. 连接池分类 POOLED、UNPOOLED、JNDI
阅读全文
摘要:主配置文件mapper标签中的package标签 1. 应用场景 简化mapper映射文件位置的配置 2. 使用package标签 直接配置Dao所在的包即可,这样,mapper映射文件的位置也不需要单独进行配置
阅读全文
摘要:主配置文件typeAliases标签和package标签 1. 应用场景 配置别名,简化mapper映射文件中全限定类名的书写 2. 使用typeAliases和package标签 2.1 为单个类配置别名 为com.itheima.domain.User类配置别名为user,配置后即可在mappe
阅读全文
摘要:主配置文件properties标签的使用及细节 1. 应用场景 用于读取外部配置文件信息,通过properties标签的resource和url属性实现 2. 实例 2.1 准备一个外部配置文件 以读取外部配置文件中的数据库连接信息为例 2.2 使用properties标签 resource和url
阅读全文
摘要:参数深入 1. ParameterType(输入类型) 1.1 通过ParameterType传递Pojo对象 Mybatis 使用 ognl 表达式解析对象字段的值 ognl 表达式 object graphic navigation language 对象 图 导航 语言 通过对象的取值方法(属
阅读全文
摘要:MyBatis的CRUD操作 CRUD操作指的是增加 (Create)、 检索 (Retrieve)、更新 (Update)和删除 (Delete)操作 1. 编程步骤 在dao接口中写方法 映射配置文件中写对应的配置 如果是Insert操作,占位符使用#{},括号中的内容要与实体类属性的get/s
阅读全文
摘要:Mybatis在使用基于代理Dao的方式实现增删改查时都干了啥事儿 绝对路径:可能出现机器中没有D盘的情况,需要修改代码 相对路径:部署项目后src就不存在了,需要修改代码 基于以上两点,读取配置文件仅通过图中的两种方式进行读取 构建者模式:专业的事儿由专业的人来做 工厂模式:需要新的类的对象时不需
阅读全文
摘要:手动编写Dao实体类方式开发 (多余干这事儿) 上面介绍的两种开发方式(XML和注解开发)中Dao实体类都是由MyBatis代理Dao实现的,接下来介绍手动编写Dao实体类的方式进行开发,以XML开发为例 1. 项目结构 新建项目,创建与XML开发完全相同的项目结构 在dao包下创建impl包 2.
阅读全文
摘要:注解开发步骤 1. 项目结构 新建项目,创建与XML开发完全相同的项目结构 删除resources/com文件夹 2. 全局配置文件 修改SqlMapConfig.xml文件的mapper配置部分 <!-- 指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件 --> <mappers
阅读全文
摘要:Mybatis入门 1. 准备数据 创建数据库eesy_mybatis,创建表user,插入数据 2. pom文件 打包方式 <packaging>jar</packaging> 导入坐标 mybatis 坐标 mybatis 官网文档 - 入门 - 安装 <dependency> <groupId
阅读全文
摘要:Mybatis 概述 1. 三层架构 解决持久层问题 项目 = 框架(半成品) + 业务需求 表现层:展示数据 业务层:业务需求 持久层:数据库交互 2. 持久层技术解决方案 2.1 JDBC技术(规范) 2.2 Spring的JdbcTemplate(工具类) Spring中对JDBC的简单封装
阅读全文
摘要:拦截器 过滤器 拦截器 拦截器链 1. 过滤器与拦截器的比较 过滤器是servlet规范中的一部分,任何Java web工程都可使用;拦截器是SpringMVC自己的,只能在SpringMVC工程中使用。 过滤器可以对所有要访问的资源拦截;拦截器只能拦截访问的Controller方法,如果访问的是j
阅读全文
摘要:异常处理 1. 未进行异常处理的异常传递流程 2. SpringMVC异常处理流程 3. SpringMVC异常处理开发步骤 编写自定义异常类(做提示信息的) 编写异常处理器 配置异常处理器(跳转到错误提示页面) 4. 实现 Controller中的方法 package cn.itcast.cont
阅读全文
摘要:文件上传 1. 文件上传的前提 form表单的ectype属性(表单请求正文的类型)取值必须是multipart/form-data,默认值是application/x-www-form-urlencoded method属性值为post 提供文件选择域<input type="file"/> 2.
阅读全文
摘要:响应数据和结果视图 1. 返回值分类 这里的返回值指的是Controller中的方法的返回值。 1.1 String 该字符串为逻辑视图名,通过视图解析器解析为物理视图地址。 注:底层调用的是ModelAndView 1.1.1 实际开发中的应用 实体类 index.jsp <%-- Created
阅读全文
摘要:HiddentHttpMethodFilter过滤器 1. 应用场景 由于浏览器自身只支持发送get/post请求,其他请求方式并不支持,该过滤器用于模拟发送各种请求方式的请求(get/post/put/delete) Spring 3.0提供 2. 浏览器发送PUT/DELETE请求的其他实现方式
阅读全文
摘要:获取Servlet原生的API 在Controller中获取到原生ServletAPI的request和response对象
阅读全文
摘要:自定义类型转换器 SpringMVC在进行请求参数绑定时,自动进行了类型转换,前端传来的参数都是字符串,而控制器中的方法在接收时,可能会用到其他数据类型(如:Date、Integer、Double等),以日期类型为例,前端传的日期格式多样,SpringMVC自动转换类型的格式(2011/11/11)
阅读全文
摘要:POST请求中文乱码 1. 配置解决中文乱码的过滤器 web.xml中增加如下代码 <filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.Cha
阅读全文
摘要:请求参数的绑定 获取前端传过来的参数的过程,如:Servlet的getParameter方法 SpringMVC中的请求参数绑定:通过反射实现,SpringMVC中的请求参数绑定过程是把表单提交的请求参数,作为控制器中方法的参数进行绑定的。 1. 支持的数据类型 基本数据类型和字符串 实体类型(Ja
阅读全文
摘要:常用注解 1. RequestMapping RequestMapping可以放在类上和方法上,放在类上表示一级目录,或表示某一个具体的模块 属性 path和value属性的作用相同 method决定方法的请求方式 params:请求必须包含的参数 headers:请求必须包含的请求头 以上的属性出
阅读全文
摘要:SpringMVC基于组件方式执行流程 <mvc:annotation-driven>标签 自动加载处理器映射器和处理器适配器
阅读全文
摘要:Web层,表现层 入门程序 1. 需求描述 页面上设置一个链接,点击链接后跳转到成功页面。 2. 搭建环境 从骨架创建项目 解决创建项目过慢的问题 项目创建后,完善目录结构,创建相应的目录并设置目录类型 源代码目录(java)和资源目录(resources) 注:我这里已经设置过了,所以就不能再进行
阅读全文
摘要:Spring基于XML的IOC实例 将改进后的工厂模式通过Spring来实现,解析配置文件、创建仓库,将对象存入仓库的过程都由Spring来做,我们只需要配置好配置文件,获取仓库中的对象即可 1. 在pom中引入Spring环境 <?xml version="1.0" encoding="UTF-8
阅读全文
摘要:Spring的事务控制 1. Spring中基于XML的声明式事务控制配置步骤 配置事务管理器 <bean class="org.springframework.jdbc.datasource.DataSourceTransactionManager" id="transactionManager"
阅读全文
摘要:Spring中的JdbcTemplate 持久层总图 1. JdbcTemplate相关的jar包 spring-jdbc-5.2.11.RELEASE.jar 2. JdbcTemplate的学习路径 JdbcTemplate的作用 用于和数据库交互,实现对表的CRUD操作 如何创建JdbcTem
阅读全文
摘要:Spring中的AOP 通过配置(XML/注解)实现AOP 1. AOP相关术语 1.1 连接点 方法,Service接口中的所有方法 1.2 切入点 方法,Service接口中被增强过的方法 Tip:所有的切入点都是连接点 1.3 通知 方法,通常,具有增强功能的方法会放到一个类中,该类中所有用于
阅读全文
摘要:动态代理 1. 特点 字节码随用随创建,随用随加载 2. 作用 不修改类的源码基础上对类的方法进行增强 3. 分类 基于接口的动态代理 基于子类的动态代理 4. 基于接口的动态代理 4.1 涉及的类 Proxy 4.2 提供者 JDK官方 4.3 如何创建代理对象 Proxy的newProxyIns
阅读全文
摘要:Spring整合Junit 上面部分的内容是把8.3.7节的第一个问题给解决了,我们来看第二个问题(测试代码开发和测试部分耦合度高,图中标红部分一般测试人员无法完成) pom中导入Spring整合Junit的坐标 使用Junit提供的@RunWith注解把Junit原有的main方法替换成Sprin
阅读全文
摘要:Spring基于注解的IOC 1. 构建注解环境 在beans.xml中加入context名称空间和约束 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"
阅读全文
摘要:Spring的依赖注入 在当前类需要用到其他类的对象,其他类的对象也是由Spring创建并将引用传递给当前类的对象的,我们只需要在配置文件中说明,说白了就是为当前类填充(也叫注入)其他类的对象 1. 能够注入的数据 能够注入的数据是指支持注入的这部分数据是可以被Spring填充(注入)到当前类的对象
阅读全文
摘要:Spring对Bean的管理细节 1. 创建Bean的三种方式 使用默认构造函数创建 bean标签仅配置id和class,即标识和全限定类名,同时保证要创建的类是有无参构造函数的 如果没有无参构造函数,将会报错 使用某个类中的方法创建对象,该方法的返回值是某个类的对象 以新建的Factory类为例,
阅读全文
摘要:Spring 概述 1. 程序的耦合 耦合:程序间的依赖关系 解耦:降低程序间的依赖关系 分类 类之间的依赖 方法之间的依赖 2. 类之间的依赖问题的实例 2.1 JDBC操作数据库存在的耦合问题 首先正常编写一个jdbc查询操作的类 package com.itheima.jdbc; import
阅读全文