* 使用axios发送多个请求:
- login() {
- let formData = new FormData();
- formData.append("username",this.user.username);
- formData.append("password",this.user.password);
- formData.append("code",this.user.code);
- axios({
- method: "post",
- url: "admin/login.do",
- data: formData,
- }).then(response => {
- let data = response.data;
- alert(data.message);
- if(data.code == '2'){
- // 登录成功
- location.href = "student.html";
- }
- });
- },
servlet后台接收请求:
- String myCode = req.getParameter("code");
- String username = req.getParameter("username");
- String password = req.getParameter("password");
文件是不可以双向绑定的,是二进制数据
// ajax是异步请求,ajax会单独开辟一个线程来自己走,和我们的主JS程序不在同一个线程内 // 我们需要让我们的ajax和我们的主JS在同一个线程内 // 通过async 和 await修饰符就把ajax改成了同步请求
防止每次返回的验证码一致,get发送的请求包括参数,改变参数访问一个新的地址,避免浏览器的缓存
- change() {
- // 为了避免浏览器缓存,传一个参数
- // 这个参数是没有意义的,它就是为了防止浏览器缓存
- // verify.do?v=0.123123
- // verify.do?v=0.5645656
- this.src = 'verify.do?v=' + Math.random();
- },
- async verifyUsername() {
- if(this.user.username.length < 6 || this.user.username.length > 12){
- this.msg = "用户名必须在6-12位";
- return false;
- }
-
- let flag = false;
-
- await axios.get("admin/checkUser.do?username=" + this.user.username).then(response=>{
- // console.log(response.data);
- this.msg = response.data.message;
- if(response.data.code == '0'){
- flag = false;
- }
- if(response.data.code == '1'){
- flag = true;
- }
- });
- // 返回值是一个Promise对象。是一个特殊的对象。3个属性
- return flag;
- },
promise对象:
什么是回调函数?
当一个函数作为参数传入到另外一个函数,并且该函数不会立即执行;当满足某个条件时才执行该函数
同步任务:在主线程队列中,只有前一个任务完成后才会执行下一个任务
异步任务:不进入主线程队列,而是进入异步队列,前一个任务完成与否不影响后一个任务的执行(不阻塞后续任务执行的任务)
回调地狱?
这种回调函数中嵌套回调函数的情况就叫做回调地狱。回调地狱就是为是实现代码顺序执行而出现的一种操作
(1)代码的可读性差、可维护性差
(2)代码的扩展性差
要求,如果上传的数据中包含了二进制数据(文件),需要使用formData,来封装数据
// 头像,文件怎么拼?
// this.$refs.profile.files[0],获取对应的文件的二进制形式
// $refs:代表设置了ref属性的表单元素
// profile:找到ref属性为profile的表单元素
// files[0]:找到ref属性为profile的第一个表单元素
formData.append("profile",this.$refs.profile.files[0]);
* 'content-Type':'multipart/form-data' * 代表我要传输的数据以多部分的格式来传输。 * HTML要求提交文件:multipart/form-data * 提交普通的数据:application/x-www-form-urlencoded
headers:{
'content-Type':'multipart/form-data'
}
遍历新增一条数据怎么写?
Vue的生命周期函数 created()函数就在我们访问这个页面就会执行,不能写在methods里面 打开页面直接发送请求:
- created(){
- axios.get("list.student").then(res => {
- this.students = res.data.value;
- })
- }




FileSystemXmlAoolicationContext和ClassPathXmlApplicationContext 的区别?
使用ClassPathXmlApplicationContext时写配置文件相对src的相对路径
使用 FileSystemXmlAoolicationContext时使用带盘符的全路径