* 使用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' }
遍历新增一条数据怎么写?
<tr v-for="(stu,index) in students">
<td>{{stu.id}}</td>
<td>{{stu.name}}</td>
<td>{{stu.gender}}</td>
<td>{{stu.age}}</td>
<td>
<a href="#">修改</a>
<a href="#">删除</a>
</td>
</tr>
Vue的生命周期函数 created()函数就在我们访问这个页面就会执行,不能写在methods里面 打开页面直接发送请求:
created(){
axios.get("list.student").then(res => {
this.students = res.data.value;
})
}
FileSystemXmlAoolicationContext和ClassPathXmlApplicationContext 的区别?
使用ClassPathXmlApplicationContext时写配置文件相对src的相对路径
使用 FileSystemXmlAoolicationContext时使用带盘符的全路径