JavaWeb(一)前端篇
JavaWeb(一)
初识web前端


Web标准
Web标准也称为网页标准,由一系列的标准组成,大部分由W3C( World Wide Web Consortium,万维网联盟)负责制定。
三个组成部分:
HTML:负责网页的结构(页面元素和内容)。
CSS:负责网页的表现(页面元素的外观、位置等页面样式,如:颜色、大小等)。
JavaScript:负责网页的行为(交互效果)。
前端学习安排+引入

HTML(HyperText Markup Language):超文本标记语言。
超文本:超越了文本的限制,比普通文本更强大。除了文字信息,还可以定义图片、音频、视频等内容。
标记语言:由标签构成的语言
HTML标签都是预定义好的。例如:使用<**a**>展示超链接,使用<**img**>展示图片,<**video**>展示视频。
HTML代码直接在浏览器中运行,HTML标签由浏览器解析。
CSS(Cascading Style Sheet):层叠样式表,用于控制页面的样式(表现)。
HTML+CSS
HTML入门
标题
- HTML结构标签
1
2
3
4
5
6
7
8
9<html>
<head>
<title>标题</title>
</head>
<body>
</body>
</html> - 特点
- HTML标签不区分大小写
- HTML标签属性值单双引号都可以
- HTML语法松散
- 标签
- 标题标签:(h1 → h6 重要程度依次降低)
1
<h1>…</h1>
注意:HTML标签都是预定义好的,不能自己随意定义。 - 图片标签:src:指定图像的url(绝对路径 / 相对路径)
1
<img>
绝对路径:绝对磁盘路径(D:/xxxx)、绝对网络路径(https://xxxx)
相对路径:从当前文件开始查找。 (./ : 当前目录, ../ : 上级目录)
width:图像的宽度(像素 / 相对于父元素的百分比)
height:图像的高度(像素 / 相对于父元素的百分比)
只设置一个等比例缩放不变形
- 水平线标签:
1
<hr>
- 标题样式CSS引入方式:
- 行内样式:写在标签的style属性中(不推荐)
1
2<h1 style="xxx: xxx; xxx: xxx;">中国新闻网</h1>
- 内嵌样式:写在style标签中(可以写在页面任何位置,但通常约定写在head标签中)
1
2
3
4
5
6
7<style>
h1 {
xxx: xxx;
xxx: xxx;
}
</style> - 外联样式:写在一个单独的.css文件中(需要通过 link 标签在网页中引入)
1
2
3
4
5h1 {
xxx: xxx;
xxx: xxx;
}【颜色的三种表示形式及字体大小】1
<link rel="stylesheet" href="css/news.css">
color: 设置文本内容的颜色
font-size:字体大小 (注意:记得加px)表示方式 表示含义 取值 关键字 预定义的颜色名 red、green、blue… rgb表示法 红绿蓝三原色,每项取值范围:0-255 rgb(0,0,0)、rgb(255,255,255)、rgb(255,0,0) 十六进制表示法 #开头,将数字转换成十六进制表示 #000000、#ff0000、#cccccc,简写:#000、#ccc
【span标签】
1 | <span> 是一个在开发网页时大量会用到的没有语义的布局标签 |
【CSS选择器】 
【超链接】
正文
正文排版
1 | 视频标签:<video> |
页面布局
盒子模型
组成:内容区域(content)、内边距区域(padding)、边框区域(border)、外边距区域(margin)
1 | width:设置宽度 |
布局标签
实际开发网页中,会大量频繁的使用 div 和 span 这两个没有语义的布局标签。
1 | 标签:<div> <span> |
表格标签
1 | <table>:定义表格,可以包裹多个 <tr>,其中: |

表单标签
1 | 场景:在网页中主要负责数据采集功能,如 注册、登录等数据采集。 |
表单项标签


JS
JS引入方式

JS基础语法
书写语法
1 | 1区分大小写:与 Java 一样,变量名、函数名以及其他一切东西都是区分大小写的 |
变量
1 | JavaScript 中用 var 关键字(variable 的缩写)来声明变量 。 |
数据类型、运算符、流程控制语句
数据类型
1 | JavaScript中分为:原始类型 和 引用类型 |
运算符
1 | 算术运算符:+ , - , * , / , % , ++ , -- |
eg.
1 | var a = 10; |
1 | 字符串类型转为数字: |
流程控制语句
1 | if…else if …else… |

JS函数


JS对象
基础对象
Array
1 | //这是Java中的,莫记混淆: |
1 |
String
1 |
JSON
1 |
浏览器对象模型BOM
1 |
文档对象模型DOM
1 |
JS事件绑定
Vue
Ajax(axios2)
前端工程化
环境配置
Element组件库
Vue项目实战
Vue路由
通过Nginx打包部署
nginx反向代理和负载均衡
对登录功能测试完毕后,接下来,我们思考一个问题:前端发送的请求,是如何请求到后端服务的?
前端请求地址:http://localhost/api/employee/login
后端接口地址:http://localhost:8080/admin/employee/login
前端请求地址 后端接口地址
很明显,两个地址不一致,那是如何请求到后端服务的呢?
1). nginx反向代理
nginx 反向代理,就是将前端发送的动态请求由 nginx 转发到后端服务器
那为什么不直接通过浏览器直接请求后台服务端,需要通过nginx反向代理呢?
nginx 反向代理的好处:
提高访问速度
因为nginx本身可以进行缓存,如果访问的同一接口,并且做了数据缓存,nginx就直接可把数据返回,不需要真正地访问服务端,从而提高访问速度。
进行负载均衡
所谓负载均衡,就是把大量的请求按照我们指定的方式均衡的分配给集群中的每台服务器。
保证后端服务安全
因为一般后台服务地址不会暴露,所以使用浏览器不能直接访问,可以把nginx作为请求访问的入口,请求到达nginx后转发到具体的服务中,从而保证后端服务的安全。
nginx 反向代理的配置方式:
1 | server{ |
proxy_pass:该指令是用来设置代理服务器的地址,可以是主机名称,IP地址加端口号等形式。
如上代码的含义是:监听80端口号, 然后当我们访问 http://localhost:80/api/../..这样的接口的时候,它会通过 location /api/ {} 这样的反向代理到 http://localhost:8080/admin/上来。
接下来,进到nginx-1.20.2\conf,打开nginx配置
1 | # 反向代理,处理管理端发送的请求 |
2). nginx 负载均衡
当如果服务以集群的方式进行部署时,那nginx在转发请求到服务器时就需要做相应的负载均衡。其实,负载均衡从本质上来说也是基于反向代理来实现的,最终都是转发请求。
nginx 负载均衡的配置方式:
1 | upstream webservers{ |
upstream:如果代理服务器是一组服务器的话,我们可以使用upstream指令配置后端服务器组。
如上代码的含义是:监听80端口号, 然后当我们访问 http://localhost:80/api/../..这样的接口的时候,它会通过 location /api/ {} 这样的反向代理到 http://webservers/admin ,根据webservers名称找到一组服务器,根据设置的负载均衡策略(默认是轮询)转发到具体的服务器。
注:upstream后面的名称可自定义,但要上下保持一致。
nginx 负载均衡策略:
| 名称 | 说明 |
|---|---|
| 轮询 | 默认方式 |
| weight | 权重方式,默认为1,权重越高,被分配的客户端请求就越多 |
| ip_hash | 依据ip分配方式,这样每个访客可以固定访问一个后端服务 |
| least_conn | 依据最少连接方式,把请求优先分配给连接数少的后端服务 |
| url_hash | 依据url分配方式,这样相同的url会被分配到同一个后端服务 |
| fair | 依据响应时间方式,响应时间短的服务将会被优先分配 |
具体配置方式:
轮询:
1 | upstream webservers{ |
weight:
1 | upstream webservers{ |
ip_hash:
1 | upstream webservers{ |
least_conn:
1 | upstream webservers{ |
url_hash:
1 | upstream webservers{ |
fair:
1 | upstream webservers{ |





