1. Vue js
1.1
Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。
1.2
1.3 Vue基本语法
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<!--
入门案例步骤
1.导入vue.js文件 html下部编辑
2.指定区域进行渲染 需要准备div vue.js代码
3.创建Vue.js对象 指定渲染区域 动态调用
-->
<!-- 2.指定区域-->
<div id="app">
<!-- 在div中展现msg属性
插值表达式:{{key}}
-->
<h1>{{msg}}</h1>
</div>
<!-- 1.导入JS文件-->
<script src="../js/vue.js"></script>
<!-- 3.创建Vue对象-->
<script>
/**
* 语法:
* 1.const 定义常量
* 2.let 作用和var类似,有作用域的概念
* 3.var 特点:没有作用域
*/
const APP = new Vue({
//1.指定区域
el: "#app",
//2.定义属性
data: {
//key:value
msg: "你好Vue"
}
})
</script>
</body>
</html>
1.4 数据显示
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>数据显示</title>
</head>
<body>
<div id="app">
<!-- 特点:如果页面没有渲染完成,则直接展现给用户
插值表达式需要直接显示,不可以在标签内作为属性显示
注意事项:只有显示时采用,输入操作input不可使用
-->
<h1>{{msg}}</h1>
<!-- 1.v-text指令,如果页面没有渲染完成,则不显示信息--->
<h1 v-text="msg"></h1>
<!-- 2.v-html 直接渲染html标签-->
<div v-html="h3Html"></div>
<!-- 3. v-pre 跳过预编译, 显示标签体本身-->
<div v-pre>{{msg}}</div>
<!-- 4. v-once 只渲染一次-->
<div v-once>{{once}}</div>
</div>
<!-- 1.导入JS文件-->
<script src="../js/vue.js"></script>
<!-- 3.创建Vue对象-->
<script>
/**
* 语法:
* 1.const 定义常量
* 2.let 作用和var类似,有作用域的概念
* 3.var 特点:没有作用域
*/
const APP = new Vue({
//1.指定区域
el: "#app",
//2.定义属性
data: {
//key:value
msg: "你好Vue",
h3Html: "<h3>我需要html渲染</h3>",
once: "我只能渲染一次"
}
})
</script>
</body>
</html>
1.4.1
1.5 双向数据绑定
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>双向数据绑定</title>
</head>
<body>
<div id="app">
<!-- 双向数据绑定 v-model 数据和页面随对方改变而改变-->
<input name="msg" v-model="msg"/>
<br />
{{msg}}
</div>
<!-- 1.导入JS文件-->
<script src="../js/vue.js"></script>
<!-- 3.创建Vue对象-->
<script>
/**
* 语法:
* 1.const 定义常量
* 2.let 作用和var类似,有作用域的概念
* 3.var 特点:没有作用域
*/
const APP = new Vue({
//1.指定区域
el: "#app",
//2.定义属性
data: {
//key:value
msg: "数据随时修改"
}
})
</script>
</body>
</html>
1.5.1 MVVM
1.5.2 MVVM设计思想
知识回顾:MVC模式 核心思想 减少代码的耦合性
M Model:封装的数据
V View视图层:数据的展现
C Control 控制层 程序的流转的过程
衍生: 3层代码的结构 Controller-Service–Mapper/Dao
针对于 后端服务器
MVVM思想说明
M: Model 封装的数据 数据层
V: View 数据的展现 视图层
VM: ViewModel 数据视图的控制层 控制数据流转
MVVM设计思想是前端模拟后端为了解耦 的一种设计思想
1.5.3 双向数据绑定原理
原理步骤:
1.用户修改页面时,通过DOM的监听器感知用户的修改行为,之后通过虚拟的DOM对象,第一时间更新Model中的属性
2.当数据发生变化,由虚拟DOM根据数据绑定的规则,第一时间通知真实的DOM对象,至此页面的数据发生变化
1.6 事件绑定
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>事件绑定</title>
</head>
<body>
<div id="app">
<!-- 需求: 实现数据自增操作
1语法: v-on:click="函数/直接计算"
2简化语法 v-on:可以简化为@
-->
<h3>数据: {{num}}</h3>
<br />
<button v-on:click="num++"><h4>自增</h4></button>
<button @click="num++"><h4>自增简化</h4></button>
<!-- 如果没有参数则()可以省略-->
<!-- <button @click="addNum()"><h4>计算</h4></button> -->
<button @click="addNum"><h4>计算+1</h4></button>
<button @click="reduceNum"><h4>计算-1</h4></button>
</div>
<!-- 1.导入JS文件-->
<script src="../js/vue.js"></script>
<!-- 3.创建Vue对象-->
<script>
/**
* 语法:
* 1.const 定义常量
* 2.let 作用和var类似,有作用域的概念
* 3.var 特点:没有作用域
*/
const APP = new Vue({
//1.指定区域
el: "#app",
//2.定义属性
data: {
//key:value
num: 100
},
methods: {
//{}里面是一个对象 key方法名: value方法体
addNum: function(){
this.num++
},
//方法的简化 JS脚本支持
reduceNum(){
this.num--
}
}
})
</script>
</body>
</html>
1.7 案件触发
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>案件触发</title>
</head>
<body>
<div id="app">
<!-- 用户通过输入 按特殊键位触发函数-->
<h3>用户数据:{{num}}</h3><br />
<input type="text" v-model="num2" />
<button @click="addNum">计算</button>
</div>
<script src="../js/vue.js"></script>
<script>
const APP = new Vue({
el: "#app",
data: {
num: 100,
num2: 0
},
methods: {
addNum(){
//将字符串转化为数值类型
this.num += parseInt(this.num2)
}
}
})
</script>
</body>
</html>
<div id="app">
<!-- 语法:
1.v-on:keydown="" 按下触发
2.v-on:keyup="" 弹起来触发
3.v-on:keypress="" 小键盘触发
案件支持:
.enter .tab
.delete .esc .space
.up .down .left .right
需求:用户通过输入 按特殊键位触发函数
要求1:按钮实现加法操作
要求2:按回车实现触发
要求3:按空格实现触发
-->
<h3>用户数据:{{num}}</h3><br />
<!-- <input type="text" @keyup.enter="addNum" v-model="num2" /> -->
<input type="text" v-on:keyup.space="addNum" v-model="num2" />
<button @click="addNum">计算</button>
</div>
1.8 计算器练习
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>计算器作业</title>
</head>
<body>
<div id="app">
<!-- 要求
1.准备两个文本输入框 num1/num2
2.要求准备一个按钮 "计算" 当点击按钮时实现 num1+num2
将得到的结果通过 总数输出 .count
3.当输入num2时,可以通过回车按键计算
注意事项:input框默认都是文本类型
-->
数值1:<input type="text" v-model="num1" /><br />
数值2:<input type="text" v-model="num2" @keyup.enter="addNum"/><br />
求和:{{count}}<br />
<button @click="addNum">计算</button>
</div>
<script src="../js/vue.js"></script>
<script>
const APP = new Vue({
el: "#app",
data: {
num1: 0,
num2: 0,
count: 0
},
methods: {
addNum(){
//将字符串转化为数值类型
this.count = parseInt(this.num1) + parseInt(this.num2)
}
}
})
</script>
</body>
</html>
1.9 案件修饰符
1.9.1 阻止冒泡 .stop
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>按键修饰符</title>
</head>
<body>
<div id="app">
<!-- 难点: 元素可能需要嵌套,事件可能嵌套
说明:如果事件嵌套,则必然带来事件的冒泡
解决方案:阻止事件冒泡 .stop属性
注意:阻止都在内部
-->
数值:{{num}}
<div @click="num++">
嵌套结构
<button @click.stop="num++">计算</button>
</div>
</div>
<script src="../js/vue.js"></script>
<script>
const APP = new Vue({
el: "#app",
data: {
num: 0
},
methods: {
}
})
</script>
</body>
</html>
1.9.2 阻止默认行为 .prevent
<hr />
<!-- 需求2:
a标签作用:超链接 href的跳转是默认规则
要求:用户点击a标签不跳转页面,同时触发事件
解决:阻止标签的默认行为
-->
<a href="http://baidu.com" @click.prevent="aClick">百度</a>
<!-- 用途: prevent阻止页面跳转 a标签/form表单 action同步请求 -->
2 SpringMVC参数取值详情说明
2.0 Servlet
**Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,**用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。
狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。Servlet运行于支持Java的应用服务器中。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。
总结:Servlet是java与前端页面进行数据交互的一种机制
核心对象
1.request对象 封装用户请求的参数/请求头/请求全部内容
2.response对象 封装用户响应信息