Vue
Vue是一款用于构建用户界面的渐进式的JavaScript框架(基于数据渲染成用户能看到的界面)
使用 ES 模块构建版本
在本文档的其余部分我们使用的主要是 ES 模块语法。现代浏览器大多都已原生支持 ES 模块。因此我们可以像这样通过 CDN 以及原生 ES 模块使用 Vue:html <div id="app">{{ message }}</div> <script type="module"> import { createApp, ref } from 'https://unpkg.com/vue@3/dist/vue.esm-browser.js' createApp({ setup() { const message = ref('Hello Vue!') return { message } } }).mount('#app') </script> 注意我们使用了 <script type="module">,且导入的 CDN URL 指向的是 Vue 的 ES 模块构建版本。
vue的常用指令
v-for:列表渲染,遍历容器的元素或者对象的属性
<body> <div id="app"> <table border="3px" style="padding: 0; background-color: pink; width: 100px; height: 40px;"> <tr v-for="(u,index) in users" :key="index"> <!--index是指序号--> <td>{{index +1}}</td> <td>{{u.id}}</td> <td>{{u.name}}</td> <td>{{u.gender ===1?'男':'女'}}</td> </tr> </table> </div> <script type="module"> import { createApp } from 'https://unpkg.com/vue@3/dist/vue.esm-browser.js' createApp({ data() { return { users: [ { "id": 1, "name": "张三", "gender": 1 }, { "id": 2, "name": "李四", "gender": 2 }, { "id": 3, "name": "王五", "gender": 1 } ] } } }).mount('#app'); </script>
v-bind: 动态为HTML标签绑定属性值,如设置href css样式等
注意:动态的为标签的属性绑定值,不能使用差值表达式,得使用v-bind指令。且绑定得数据,必须在data中定义。差值表达式不能出现在标签内部
v-if/v-else-if/v-else: 条件性的渲染某元素,判定为true时渲染,否则反之
v-show: 根据条件展示某元素,区别在于切换的是display属性的值
区别: 1.v-if="表达式",基于条件判断,来控制创建或移除元素节点(条件渲染)例如<span v-if="gender==1">男生</span> ,适用的场景`不频繁切换得场景`。 2.v-show="表达式",基于css样式display来控制显示与隐藏,适用的场景`频繁切换显示隐藏得场景`。
v-model: 在表单元素上创建双向数据绑定
<select id="position" name="position" v-model="Searchfrom.job"> 注意:v-model指令用于在表单元素上创建双向数据绑定。 1. v-model指令用于在表单元素上创建双向数据绑定。 2. 当表单元素的值发生改变时,绑定的数据也会发生改变。 3. 当绑定的数据发生改变时,表单元素的值也会发生改变。
v-on:为HTML标签绑定事件
<button type="button" v-on:click="search">查询</button> 注意:v-on:事件名="方法名",方法名不能加引号,且方法名必须在methods中定义。
Ajax
- Ajax是一种用于创建快速动态网页的技术,通过在后台与服务器进行少量数据交换,获取服务器响应的数据。Ajax可以使网页实现
异步更新
。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
2.异步交互技术Axios:- 是一个基于Promise的HTTP客户端,用于浏览器和Node.js
- Axios对原生态的Ajax进行了封装,提供了更加方便的API
- 步骤:
1.安装axios:npm install axios
2.引入axios:import axios from ‘axios’
3.发送请求:axios.get(url) - 官网:https://www.axios-http.cn可查看使用情况
Maven使用
maven的作用:
依赖管理、项目构建、统一项目结构(插件执行框架)
创建maven项目
导入maven项目
建议将要导入的maven项目直接复制到项目目录下
建议选择maven项目的pom.xml文件进行导入
依赖配置的方式例如:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
移除依赖
<exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </exclusion> </exclusions>
生命周期
每套生命周期包含一些阶段,阶段都是有顺序的,后面的阶段依赖于前面的阶段
clean(clean阶段):移除上一次构生成的文件
default(compile:编译项目源代码、test:使用合适的单元测试框架进行测试如junit、package:将编译后的文件打包,如jar\\waR等、install: 安装项目到本地仓库)
site(site阶段)
值得注意的是:在同一套生命周期中,当运行后面的阶段时,前面的阶段都会运行
执行指定周期的方式:
1.在ideal中,右侧的maven工具栏,选中对应的生命周期,双击运行
2.在ideal中,找到对应的项目,右键点击open in进入磁盘,用cmd命令行执行对应的生命周期的阶段
例如:mvn clean
- 单元测试Junit:
用法:测试类中的方法的正确性
优点(对于main方法而言):测试代码与应用程序代码分开,便于维护;可以自动生成测试报告;一个测试方法执行失败,不影响其他的测试方法。
前置工作:在pom.xml文件中引入Junit的jar包依赖,然后在相应的项目中的main同级中的test文件中编写junit测试类
- 断言:
由于测试方法运行不报错,不代表业务方法逻辑没问题,所以通过断言可以检测方法运行结果是否和预期一致,从而判断业务方法的正确性。
在测试方法中使用断言的方法:
Assertions.assertXxxx()
就是接口的具体实现类,直接以参数的形式写出来
依赖范围:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> 指定maven的依赖范围,参见的取值有:compile(默认)、test、provided、runtime** </dependency>
maven常见爆红问题解决:
要是依赖下载不成功就会爆红,在maven本地仓库中生成了xxxx.lastUpdated文件,若是该文件不删除,依赖就不会再下载了
方法:
根据maven依赖的坐标,找到仓库中对于的xxxx.lastUpdated文件,删除,删除之后重新加载项目即可
或者在本地仓库中通过命令行的形式,执行del /s *.lastUpdated 批量删除指定目录下面的xxxx.lastUpdated文件,删除之后重新加载项目即可
注意:要是重新加载依赖,依赖下载之后还是爆红,此时可以关闭IDEA,重新打开IDEA加载项目即可
SpringBoot项目创建
- SpringBoot的官网:spring.io
- 如何创建Spring web项目:
社区版IDEA:
示例:通过插件创建SpringBoot项目
打开 Settings/Preferences,进入 Plugins。
搜索并安装 Spring Assistant 插件。
重启IDEA后,新建项目时选择 Spring Assistant 标签。
按照提示填写项目信息并选择依赖,完成后即可生成SpringBoot项目。
访问 Spring Initializr 网站,选择语言、依赖等配置后生成项目。下载解压后,用IDEA打开即可。
方法2:手动创建Maven项目
在IDEA中创建一个普通的Maven项目。
修改 pom.xml 文件,添加SpringBoot相关依赖。
配置主类和资源文件,如 application.yml。
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
通过以上方法,即使在社区版中也可以顺利开发SpringBoot项目。
Web基础——HTTP协议
- HTTP协议特点:
1.基于TCP协议,面向连接,安全
2.基于请求——响应模型:一次请求对应一次响应
3.HTTP协议是无状态的协议:对于事务处理没有记忆功能。每次请求——响应都是独立的
缺点:多次请求间不能共享数据
优点:速度快
——所以在Web开发中一般使用会话解决上述多次请求间不能共享数据的问题
- HTTP协议——请求数据格式:
请求行:请求方式、资源路径、协议
请求头:格式key-value
请求体:(对于POST请求独有的)存放请求的参数
对于两种不同的请求方式来说请求参数的存放位置是不同的,
GET:请求参数在请求行中,可见安全性不高,没有请求体
POST:请求参数在请求体中,不可见安全性高,POST请求大小是没有限制的
HTTP协议数据获取:
Web服务器(Tomcat)对HTTP协议的请求数据进行解析,并进行封装到HttpServletRequest,所以可以直接调用Controller方法的时候传递给了该方法。HTTP响应数据:
Web服务器(Tomcat)对HTTP协议的请求数据进行解析,并进行封装到HttpServletRseponse ,所以可以直接调用Controller方法的时候传递给了该方法。
Mybatis入门:
mybatis 属于一种持久层框架,用于简化JDBC的开发。 用于数据访问dao持久层
官网:https://mybatis.net.cn/getting-started.html
数据库连接池:是一个容器,负责分配管理数据库连接(Connection),允许应用程序重复使用一个现有的数据库连接,而不是在重新建立一个。同时释放空闲时间超过最大空闲时间的连接,来避免因为没有释放连接而引起的数据库连接遗漏。
切换数据库连接池(又spring boot默认的Hikari的数据库连接池转换到Druid):,优势:资源复用,提升系统的响应速度,使用接口DataSource
1.在pom.xml配置文件中,加入配置信息
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
</dependency>
2.application.yml配置文件中
spring.datasource.type/url/driver-class-name/username/password
Mybatis中的#号和$号
#{...}:占位符。执行时,会将#{...}替换为?,生成预编译SQL,使用场景为参数值传递,安全性能高:
${...}:拼接符。直接将参数拼接在SQL语句中,存在SQL注入问题,使用场景为表明,字段名动态设置时使用,不安全,性能低
例子:
@Delete("delete from dept where id=#{id}");
@Select("selectn id,name,score from ${tableName} order by ${sortField}")