1. HTML
1.1 概念
-
http是超文本标记语言:超文本是用超链接的方法,将各种不同的空间的文字信息组织在一起的网状文本。标记语言是由标签构成的语言。
-
在开始标签可以定义属性,属性是由键值对构成,值需要用引号(单双都可)引起来
1.2 基本标签
-
文件标签:构成html最基本的标签
- html/head/title/body/
-
文本标签:和文本有关的标签
-
标签名: /
to
/
/
/
//// -
属性定义:
- color:
- 英文单词:red,green,blue
- rgb(值1,值2,值3):值的范围(0-255)
- #值1值2值3:值的范围(00-FF)
- width:
- 数值:width=‘20’,数值的单位,默认是px(像素)
- 数值%:占比相对于父元素的比例(如body的宽度)
- color:
-
-
图片标签:
<img src = "image/jingxuan" align="right" alt="古镇" width="500" height="500"/>
- 相对路径:以.开头的路径
- ./代表当前目录(不写默认当前目录)
- ./代表上一级目录
- 相对路径:以.开头的路径
-
列表标签:
- 有序列表:oi/li
- 无序列表:ul/li
-
链接标签:
- a:定义一个超链接
- 属性:
- href:指定访问资源的URL
- target:指定打开资源的方式(当前页面或者空白页面打开)
-
div和span:本身没有任何样式,白纸才好画画
- div:每一个div占满一整行。块级标签
- span:文本信息在一行展示。行内标签 内联标签
-
语义化标签:html5中为了提高程序的可读性,提供了一些标签
- header:页眉
- footer页脚
-
表格标签:
- table:定义表格
- width、border、cellpadding、cellspacing、bgcolor、align
- tr:定义行
- td:定义单元格
- th:定义表头单元格
- table:定义表格
1.3 表单标签
-
概念:用于采集用户输入的数据的。用于和服务器进行交互。
-
form:用于定义表单的。可以定义一个范围代表采集用户数据的范围
- 属性:
- action:指定提交数据的URL
- method:指定提交方式,2种比较常见
- get:
- 请求参数会在地址栏中显示,封装到请求行中
- 请求参数大小有限制
- 不太安全
- post:
- 请求参数不会在地址栏中显示,封装到请求体中
- 请求参数的大小没有限制
- 较为安全
- get:
- 表单项中的数据要想被提交,必须指定其name属性
- 属性:
-
表单项标签:
-
input:可以通过type属性值,改变元素展示的样式
- 属性
- text:文本输入框,默认值
- palceholder:指定输入框的提示信息,当输入框的内容发生变化,会自动情况提示信息
- password:密码输入框
- radio:单选框
- 要想让多个单选框实现单选的效果,则多个单选框的name属性值必须一样
- 一般会给每个单选框提供value属性,指定其被选中后提交的值
- checked属性,可以指定默认值
- checkbox:复选框
- 一般会给每个单选框提供value属性,指定其被选中后提交的值
- checked属性,可以指定默认值
- file:文件选择框
- hidden:隐藏域,用于提交一些信息
- 按钮:
- submit:提交按钮,可以提交表单
- button:普通按钮
- image:图片提交按钮 src属性指定图片的路径
- text:文本输入框,默认值
- label:指定输入项的文字描述信息,其for属性一般会和input和id属性值相对应,如果对应了,点击lable区域可以让input输入框获取焦点
- 总结:name是提交到服务器中的键值对的键,是隐式的;value是键值对中的值,会显式地显示在页面中;id是在设计的过程中两个样式进行彼此配对的
- 属性
-
select:下拉列表
- 子元素:option,指定列表项
- option指定value可以防止浏览器解析中文错误
-
textarea:文本域
- cols、rows
-
-
综合案例:
<form action="#" method="get"> <label for="username">用户名:</label><input type="text" name="username" placeholder="请输入用户名" id="username"><br> 密码:<input type="password" name="password" placeholder="请输入密码"><br> 性别: <input type="radio" name="gender" value="male" checked>男 <input type="radio" name="gender" value="female" >女 <br> 爱好:<input type="checkbox" name="hobby" value="shopping" checked>逛街 <input type="checkbox" name="hobby" value="java">Java <br> <select name="province"> <option value="">-请选择-</option> <option value="1">北京</option> <option value="2">上海</option> </select> <br> <input type="submit" value="登录"> </form>
2. CSS
2.1 概念
- CSS是用于页面美化和布局控制的,全程Cascading Style Sheets,即层叠样式表,层叠意思是多个样式可以作用在同一个html的元素上,同时生效
2.2 好处
- 将内容展示和样式控制分离,降低耦合度,让分工协作更容易,提高开发效率
2.3 CSS的使用
-
内联样式,在标签内使用style属性指定css代码:
<body> <div> hello,world! </div> </body>
-
内部样式,在head里面定义:
<head> <meta charset="UTF-8"> <title>Title</title> <style> div{ color: red; } </style> </head>
-
外部样式,在head里面定义link标签:
<head> <meta charset="UTF-8"> <title>Title</title> <link rel="stylesheet" href="css/a.css"> </head>
-
注意:后期常用格式2、3,第3种格式link还可以写为
<style> @import "css/a.css"; </style>
2.4 CSS语法
-
格式:
选择器{
属性名1:属性值1;
属性名2:属性值2;
…
}
-
选择器:筛选具有相似特征的元素
-
注意:每一对属性需要使用:隔开,最后一个;可以不加
2.5 选择器
-
基础选择器,优先级从高到低
- id选择器
- 类选择器
- 元素选择器
<head> <meta charset="UTF-8"> <title>Title</title> <style> <!--id选择器--> #whut{ color: red; } <!--类选择器--> .whut{ color: yellow; } </style> </head> <body> <div id="whut"> 武汉理工大学 </div> <p class="whut"> 武汉理工大学 </p> </body>
-
注意:class可以在bai页面里面重复使用,id由于在页面里面只能出现一次,所以不能重复使用,所以尽量用class来写,这样能在页面里面重复引用你写的css,减小工作量和代码量。
这种情况尽量用id:页面大的模块里面,用id来区分不同的模块。比如页面里面有这样的模块:最新新闻,推荐新闻等。就可以考虑用id来区分。还有一点,由于id是页面中唯一的,更多的是定义来留给给页面里面的javascript用。
-
扩展选择器
-
选择所有元素
*{ color:red; }
-
并集选择器:
div,p{ color:red; }
-
子选择器:
div p{ color:yellow; }
-
第一级子选择器:
div > p{ color:yellow; }
-
属性选择器:
input[type='text']{ border: 5px solid; }
-
伪类选择器:
a:link/hover/active/visited{ color: pink; }
-
2.6 属性
- 字体、文本
- font-size
- color
- text-align
- line-height
- 背景
- background:可以有多个属性值,顺序无关
- 边框
- border:可以有多个属性值,顺序无关
- 尺寸
- width
- height
- 盒子模型:控制布局
- margin:外边距
- padding:内边距
- 默认情况下内边距会影响整个盒子的大小
- box-sizing:border-box;设置盒子的属性,让width和height就是最终盒子的大小
- float:浮动
- left
- right
示例:
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
div{
border: 1px solid red;
}
.div1{
height: 400px;
width: 400px;
padding: 100px;
box-sizing: border-box;
}
.div2{
height: 200px;
width: 200px;
/*margin: 100px;*/
}
.div3{
float: left;
}
.div4{
float: left;
}
.div5{
float: right;
}
</style>
</head>
<body>
<div class="div1">
<div class="div2">
</div>
</div>
<div class="div3">
aaa
</div>
<div class="div4">
aaa
</div>
<div class="div5">
aaa
</div>
</body>
3. JavaScript
3.1 概念
是一门客户端脚本语言,运行在客户端浏览器中的,每一个浏览器都有JavaScript的解析引擎
- JavaScript = ECMAScript(客户端脚本语言的标准) + JavaScript自己特有的东西(BOM+DOM)
3.2 功能
可以来增强用户和html页面的交互过程,可以来控制html元素,让页面有一些动态的效果,增强用户的体验
3.3 ECMAScript
3.3.1 基本语法
-
与html结合方式
- 内部JS:定义
3.3.2 基本对象
-
Funtion:函数(方法)对象
-
创建:
var 方法名 = function (形式参数列表) { 方法体 }
function 方法名(形式参数列表) { //不写方法名可以当作匿名方法 方法体 }
-
方法
-
属性:length:代表形参的个数
-
特点:
- 方法定义是形参的类型不用写,返回值类型也不写
- 方法是一个对象,如果定义名称相同的方法会覆盖
- 在JS中,方法的调用只与方法的名称有关,和参数列表无关
- 在方法声明中有一个隐藏的内置对象(数组),arguments,封装所有的实际参数
-
调用:同java
-
-
Array:数组对象
-
创建:
- var arr = new Array(元素列表);
- var arr = new Array(默认长度);
- var arr = [元素列表];
-
方法:
- join(参数):将数组中的元素按照指定分隔符拼接为字符串
- push() 向数组的末尾添加一个或更多元素,并返回新的长度
-
属性
length:数组的长度
-
特点:
- JS中,数组元素的类型和长度可变
-
-
Date、Math同java
-
Boolean、Number、String都是包装类对象
-
RegExp:正则表达式对象
-
正则表达式:定义字符串的组成规则
-
单个字符:[]
如:[a] [ab] [a-zA-Z0-9]
\d就是[0-9],\w就是[a-zA-Z0-9]
-
量词符号
?:出现0次或1次
*: 出现0次或多次
+:出现1次或多次
{m,n}:表示m<=数量<=n,如果m/n缺省,可以直接不写m/n
-
开始结束
- ^:开始
- $:结束
-
-
正则对象
- 创建
- var reg = new RegExp(“正则表达式”);
- var reg = /正则表达式/;
- 方法
- test(参数):验证指定的字符串是否符合正则定义的规范
<script> var reg1 = new RegExp("^\\w{6,12}&"); //这个要加个转义字符\ var reg2 = /^\w{6,12}$/; var flag = reg2.test("zhangsan"); document.write(flag); </script>
- 创建
-
-
Global
-
特点:全局对象,这个Globel封装的方法不需要对象就可以直接调用。方法名();
-
方法:
encodeURI():url编码
decodeURI():url解码
encodeURIComponent():url编码,编码的字符更多
decodeURIComponent():url解码
parseInt():将字符串转为数字,逐一判断每个字符是否是数字,知道不是数字为止,将前面的数字部分转为number
isNaN():判断一个值是否是NaN,因为NaN不仅六亲不认,连自己都不认,用这个方法才能正确判断
eval():将JavaScript字符串转成脚本来执行
-
3.4 DOM和事件的简单学习
-
DOM
-
功能:控制html文档的内容
-
获取页面标签(元素)对象:Element
- document.getElementById(“id值”):通过元素的id获取元素对象
-
操作Element对象
-
修改属性值:
- 明确获取的对象是哪一个
- 查看API文档,找其中有哪些属性可以设置
-
修改标签体内容:
- 属性:innerHTML
- 获取元素对象
- 使用innerHTML属性修改标签体内容
<body> <img id="image" src="img/1.jpg"> <h1 id="name">马云</h1> <script> var image = document.getElementById("image"); alert("我要换图片了"); image.src = "img/2.jpg"; var title = document.getElementById("name"); alert("我要换内容了"); title.innerHTML = "刘强东"; </script> </body>
-
-
-
事件
-
功能:某些组件被执行了某些操作后,出发某些代码的执行。
-
如何绑定事件
-
直接在html标签上,指定事件的属性(操作),属性值就是js代码
<img id="light" src="img/1.jpg" onclick="fun()"> //onclick就是事件
-
通过js获取元素对象,指定事件属性,设置一个函数
<img id="light" src="img/1.jpg"> <script> function fun() { alert('点击一次') } var light = document.getElementById("light"); light.onclick = fun; //不用带括号 </script>
-
-
3.5 BOM
- 概念:Browser Object Model 浏览器对象模型
- 将浏览器的各个组成部分封装成对象
- 组成:如下图五种,DOM对象在窗口对象里面,内容单独成一讲
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-za3ZUsln-1605952793427)(https://i.loli.net/2020/11/21/gu3cDRWkeyAjHw2.png)]
-
window:窗口对象
-
创建
-
方法
- 与弹出框有关的方法:alert(),confirm(),prompt()
- 与打开关闭有关的方法:close(),open()
- 与定时器有关的方法:setTimeout(),clearTimeout(),setInterval(),clearInterval()
<input id="openBtn" type="button" value="打开页面"> <input id="closeBtn" type="button" value="关闭页面"> <script> // var b = confirm("确定要退出吗?"); // alert(b); var openBtn = document.getElementById("openBtn"); var newWindow; openBtn.onclick = function () { newWindow = open("https://www.baidu.com"); } var closeBtn = document.getElementById("closeBtn"); closeBtn.onclick = function () { newWindow.close(); } //一次性定时器 var id = setTimeout(fun,2000); //也可以"fun()" clearTimeout(id); function fun() { alert("boom"); } </script>
-
属性
-
可以获取其他BOM对象,也可以获取DOM对象:
history,location,Navigator,Screen/document
window.document == document //使用时window可以省略
-
-
特点
- Window对象不需要创建可以直接使用: window.方法名();
- Window引用可以省略:方法名();
-
-
Location:地址栏对象
- 创建(获取):window.location(window可L省略)
- 方法:reload() 加载当前文档。相当于页面的刷新按钮
- 属性:href 设置或返回完整的URL
- 与window.open()方法区别:这个是属性,在当前页面重定向
-
History:历史记录对象
-
创建(获取):window.history(window可省略)
-
方法:back(),forward() 相当于页面的后退和前进
go(参数) 正负代表前进和后退,数字代表跳过的历史记录个数
-
属性:length 返回当前窗口历史列表中的URL数量
-
3.6 DOM
-
概念:Document Object Model 文档对象模型
- 将标记语言文档的各个组成部分,封装为对象。可以使用这些对象,对标记语言文档进行CRUD的动态操作
-
核心DOM模型
-
Document:文档对象
- 创建:window.document(window)可省略
- 方法:
- 获取Element对象:getElementById(),getElementsByTagName(),getElementsByClassName(),getElementsByName()
- 创建其他DOM对象:createAttribute(name),createComment(),createElement(),createTextNode()
- 属性
-
Element:元素对象
- 获取/创建:通过document来获取和创建
- 方法:setAttribute(),removeAttribute()
<body> <a>百度</a> <input id="btn_set" type="button" value="点击变成超链接"> <script> var btn_set = document.getElementById("btn_set"); btn_set.onclick = function () { var element_a = document.getElementsByTagName("a")[0]; //加[0]是代替通过id获取的方法 element_a.setAttribute("href","https://www.baidu.com"); }; </script>
-
Node:结点对象,是其他5个的父对象
-
特点:所有dom对象都可以被认为是一个结点
-
方法:CRUD dom树
appendChild(),removeChild(),repalceChild()
<body> <div id="div1"> <div id="div2">div2</div> div1 </div> /* 超链接功能 1.可以被点击:样式 2.点击后跳转到href指定的url 需求:保留1功能,去掉2功能 实现:href="javascript:void(0);" */ <a href="javascript:void(0);" id="del">删除div1</a> <script> var del = document.getElementById("del"); del.onclick = function () { var div1 = document.getElementById("div1"); var div2 = document.getElementById("div2"); div1.removeChild(div2); } </script> </body>
-
属性:parentNode 返回结点的父节点
-
-
-
HTML DOM
-
标签体的设置和获取:innerHTML
<script> var div = document.getElementById("div1"); var innerHTML = div.innerHTML; div.innerHTML += "<input type='text'>"; //注意引号的嵌套 </script>
-
使用html元素对象的属性
-
控制元素样式
- 使用元素的Style属性来设置
- 提前定义好类选择器的样式,通过元素的className属性来设置class属性值
<head> <meta charset="UTF-8"> <title>Title</title> <style> .d1{ border: 1px solid red; height: 100px; width: 100px; } </style> </head> <body> <div id="div1"> div </div> <script> var div = document.getElementById("div1"); div.onclick = function () { //修改样式方式1 // div.style.border = "1px solid red"; //font-size --> fontSize // div.style.fontSize = "20px"; //修改样式方式2 div.className = "d1"; } </script>
-
3.7 事件监听机制
-
概念:某些组件被执行了某些操作后,触发某些代码的执行
- 事件:某些操作,如:单击 双击 键盘按下 鼠标移动了
- 事件源:组件,如:按钮 文本输入框
- 监听器:代码
- 注册监听:将事件,事件源,监听器结合在一起,当事件源上发生了某个事件,则出发执行某个监听器代码
-
常见的事件
- 点击事件:
- onclick:单击事件
- ondblclick:双击事件
- 焦点事件
- onblur:失去焦点
- onfocus:元素获得焦点
- 加载事件:
- onload:一张页面或一幅图像完成加载
- 鼠标事件:
- onmousedown 鼠标按钮按下
- onmouseup 鼠标按键松开
- onmousemove 鼠标移动
- onmouseover 鼠标移到某元素之上
- onmouseout 鼠标从某元素移开
- 键盘事件:
- onkeydown 某个键盘按键被按下
- onkeyup 某个键盘按键被松开
- onkeypress 某个键盘按键被按下并松开
- 选择和改变
- onchange 域 的内容被改变
- onselect 文本被选中
- 表单事件
- onsubmit 确认按钮被点击
- onreset 重置按钮被点击
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script> window.onload = function () { /*document.getElementById("text").onblur = function () { alert("失去焦点"); };*/ /*document.getElementById("text").onmousemove = function () { alert("鼠标来了"); };*/ /*document.getElementById("text").onmousedown = function (event) { //鼠标哪个键被按下 alert(event.button); };*/ /*document.getElementById("text").onkeydown = function (event) { //鼠标哪个键被按下 // alert(event.keyCode); if(event.keyCode==13){ alert("提交表单"); } }*/ /*document.getElementById("form").onsubmit = function () { return false;//阻止提交表单 }*/ } function checkForm() { return false; } </script> </head> <body> <!--<form action="#" id="form">--> <form action="#" id="form" onclick="return checkForm();"> <input id="text" name="text"> <input type="submit" value="提交"> </form> </body> </html>
- 点击事件:
3.8 练习
- 全选,全不选和反选
- 用户名和密码格式
4. AJAX和Json
4.1 AJAX
-
概念:ASynchronous JavaScript And XML 异步的JavaScript 和 XML
- 异步和同步:客户端和服务器段相互通信的基础上
- Ajax是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术,提升用户的体验
-
实现方式
-
原生的JS实现方式(了解)
-
JQuery实现方式
-
$.ajax():使用ajax发送异步请求
//语法:$.ajax({键值对}); $.ajax({ url:"/ajaxServlet", //请求路径 type:"post", //请求方式 data:{"username":"jack","age":23}, //请求参数 success:function (data) { alert(data); }, //响应成功后的回调函数 error:function () { alert("出错了") },//表示如果请求相应出现错误,会执行的回调函数 dataType:"text" //设置接收到的相应数据的格式 });
-
$.get():发送get请求
//语法:$.get(url,[data],[callback],[type]) $.get("ajaxServlet",{username:"rose"},function (data) { alert(data); },"text");
-
$.post():发送post请求,同上
-
-
4.2 JSON
-
概念:JavaScript Object Notation JavaScript对象表示法
Person p = new Person();
p.setName(“张三”);
p.setAge(23);
p.setGender(“男”);
var p = {“name”:“张三”,“age”:23,“gender”:“男”};
- json现在多用于存储和交换文本信息的语法
- 进行数据的传输
- JSON比XML更小,更快,更易解析
-
语法:
-
基本规则
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eZV5CzhN-1605952793437)(https://i.loli.net/2020/11/21/ulOcKi29MovXTeI.png)]
-
获取数据:
-
json对象.键名
-
json对象[“键名”]
-
数组对象[索引]
-
遍历
var person = {"name":"张三",age:23}; var ps = [ {"name":"张三","age":23}, {"name":"李四","age":24}, {"name":"王五","age":25} ]; for(var key in person){ //这样的方式获取不行,因为相当于 person."name" // alert(key + ":" + person.key); alert(key + ":" + person[key]); } for(var i = 0;i<ps.length;i++){ var p = ps[i]; for(var key in p){ alert(key + ":" + p[key]); } }
-
-
JSON数据和Java对象的相互转换
- JSON常见的解析器:Jsonlib,Gson,fastjson,jackson
-
JSON转为JAVA对象
- 导入jackson的相关的jar包
- 创建Jackson核心对象 ObjectMapper
- 调用ObjectMapper的相关方法进行转换
- readValue(json字符串数据,Class)
-
JAVA对象转为JSON
-
使用步骤:
-
导入jackson的相关的jar包
-
创建Jackson核心对象 ObjectMapper
-
调用ObjectMapper的相关方法进行转换
-
转换方法
-
writeValue(参数,obj);
参数:File,Writer,OutputStream
-
writeValueAsAtring(obj):将对象转为json字符串
-
-
-
-
注解
- @JsonIgnore:排除属性
- @JsonFormat:属性值的格式化
- @JsonFormat(pattern = “yyyy-MM-dd”)
-
复杂java对象转换
- List:数组
- Map:对象格式一致
-
-