Java 程序员一提起前端知识,心情那是五味杂陈,百感交集。
这门课为什么不由前端老师来讲?
课程安排
HTML 是什么:即 HyperText Markup language 超文本标记语言,咱们熟知的网页就是用它编写的,HTML 的作用是定义网页的内容和结构。
<标签> 的方式赋予内容不同的功能和含义CSS 是什么:即 Cascading Style Sheets 级联(层叠)样式表,它描述了网页的表现与展示效果
HTML 由一系列元素 elements 组成,例如
<p>Hello, world!p>
整体称之为元素
和
标签包围起来的 Hello, world 称之为内容
p 是预先定义好的 html 标签,作用是将内容作为一个单独的段落
元素还可以有属性,如
<p id="p1">Hello, world!p>
元素之间可以嵌套,如
<p>HTML 是一门非常<b>强大b>的语言p>
错误嵌套写法:
<p>HTML 是一门非常<b>强大的语言p>b>
不包含内容的元素称之为空元素,如
<img src="1.png">
<img src="1.png"/>
前面介绍的只是单独的 HTML 元素,它们可以充当一份完整的 HTML 页面的组成部分
DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>测试页面title>
head>
<body>
<p id="p1">Hello, world!p>
<img src="1.png">
body>
html>
html 元素囊括了页面中所有其它元素,整个页面只需一个,称为根元素head 元素包含的是那些不用于展现内容的元素,如 title,link,meta 等body 元素包含了对用户展现内容的元素,例如后面会学到的用于展示文本、图片、视频、音频的各种元素<h1>1号标题h1>
<h2>2号标题h2>
<h3>3号标题h3>
<h4>4号标题h4>
<h5>5号标题h5>
<h6>6号标题h6>
如:

<p>段落p>
无序列表(ul) unordered list
<ul>
<li>列表项1li>
<li>列表项2li>
<li>列表项3li>
ul>

有序列表
<ol>
<li>列表项1li>
<li>列表项2li>
<li>列表项3li>
ol>

多级列表
<ul>
<li>
北京市
<ul>
<li>海淀区li>
<li>朝阳区li>
<li>昌平区li>
ul>
li>
<li>
河北省
<ul>
<li>石家庄li>
<li>保定li>
ul>
li>
ul>

锚,超链接
<a href="网页地址">超链接文本a>

#的页面内跳转作用

<img src="文件路径">

src 格式有 3 种
文件地址
data URL,格式如下
data:媒体类型;base64,数据

<video src="文件路径">video>

ps:加上controls就会带上播放进度条
<audio src="文件路径">audio>

表单的作用:收集用户填入的数据,并将这些数据提交给服务器
表单的语法
<form action="服务器地址" method="请求方式" enctype="数据格式">
<input type="submit" value="提交按钮">
form>
文本框
<input type="text" name="uesrname">

密码框
<input type="password" name="password">
隐藏框
<input type="hidden" name="id">


这里隐藏框隐藏了1,但提交数据的时候还是会带上1

日期框
<input type="date" name="birthday">
单选
<input type="radio" name="sex" value="男" checked>
<input type="radio" name="sex" value="女">
多选
<input type="checkbox" name="fav" value="唱歌">
<input type="checkbox" name="fav" value="逛街">
<input type="checkbox" name="fav" value="游戏">
文件上传
<input type="file" name="avatar">

enctype(数据格式)
请求由三部分组成
可以用 telnet 程序测试

GET /test2?name=%E5%BC%A0&age=20 HTTP/1.1
Host: localhost
POST /test2 HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencoded
Content-Length: 21
name=%E5%BC%A0&age=18
application/x-www-form-urlencoed 格式细节:
POST /test3 HTTP/1.1
Host: localhost
Content-Type: application/json
Content-Length: 25
{"name":"zhang","age":18}
json 对象格式
{"属性名":属性值}
其中属性值可以是
json 数组格式
[元素1, 元素2, ...]
POST /test2 HTTP/1.1
Host: localhost
Content-Type: multipart/form-data; boundary=123
Content-Length: 125
--123
Content-Disposition: form-data; name="name"
lisi
--123
Content-Disposition: form-data; name="age"
30
--123--
--分隔符--分隔符--客户端发送
服务端接收
Http 无状态,有会话
服务端使用了 session 技术来暂存数据
存
GET /s1?name=zhang HTTP/1.1
Host: localhost
取
GET /s2 HTTP/1.1
Host: localhost
Cookie: JSESSIONID=560FA845D02AE09B176E1BC5D9816A5D


session 技术实现身份验证
如果你是单体项目开发,session就比较合适,但如果你是分布式项目,那么session就不太合适了,可以用jwt
jwt 技术实现身份验证
生成 token
GET /j1?name=zhang&pass=123 HTTP/1.1
Host: localhost
校验 token
GET /j2 HTTP/1.1
Host: localhost
Authorization: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZG1pbiJ9._1-P_TLlzQPb1_lCyGwplMZaKQ8Mcw_plBbYPZ3OX28



通过测试,校验失败

为什么服务器可以辨别出token是否被改了呢?关键在于token中的签名
签名是通过前面两部分(header签名算法、payload数据)外加一个密钥来生成的一个签名
前两部分虽然对于客户来说是已知的,但是对于密钥(服务器生成的)我们是不知道的
即 Cascading Style Sheets,它描述了网页的表现与展示效果
type 选择器 - 根据标签名进行匹配(元素选择器)
class 选择器 - 根据元素的 class 属性进行匹配
id 选择器 - 根据元素的 id 属性进行匹配
优先级:id选择器 > class选择器 > type选择器
与布局相关的 html 元素
div
可以起到划分区域,作为一个容器标签来使用,也就是里面还可以写很多其它标签

template (模板标签)
主要是配合javaScript来进行快速生成添加多个功能类似外观类似的页面组件的


引入css后,可以在css文件中编写选择器和样式了

图中文字写错了,type不叫标签选择器,叫元素选择器,它只是根据标签名来选择
但是,我们需求是只给2和3的内容进行样式编写,1不需要,这个时候就不能用元素选择器了,可以用class选择器或ip选择器
class选择器


ip选择器



推荐一个前端参考网站 mdn https://developer.mozilla.org/zh-CN/
