比较基础,主打一个简单易懂,快速上手~
什么是web开发
Web:全球广域网,也称为万维网(www World Wide Web),能够通过浏览器访问的网站。
所以Web开发说白了,就是开发网站的
网站的工作流程
1.首先我们需要通过浏览器访问发布到前端服务器中的前端程序,这时候前端程序会将前端代码返回给浏览器。如下图所示:
2.浏览器得到前端代码,此时浏览器会将前端代码进行解析,然后展示到浏览器的窗口中,这时候我们就看到了网站的页面,如下图所示:
3.但是此时这个页面是没有数据的,因为数据在我们的数据库中,所以我们浏览器需要根据前端代码中指定的后台服务器的地址 向 我们的后台服务器(内部有java程序)发起请求,后台服务器再去从数据库中获取数据,然后返回给浏览器。
4.浏览器拿到后台返回的数据后,然后将数据展示在前端资源也就是网页上,然后我们就看到了如下图所示的完整的内容
整个流程如下:
1.浏览器先向前端服务器请求前端资源,也就是我们所说的网页
2.浏览器再向后台服务器发起请求,获取数据
3.浏览器将得到的后台数据填充到网页上,然后展示给用户去看
网站的开发模式
网站的开发模式,主要有2种:前端台分离和混合开发
前后台分离:(目前企业开发的主流,市场占有率70%以上)这种开发模式的特点如下
-
前端人员开发前端程序,前端程序单独部署到前端服务器上
-
后端人员开开发后端程序,后端程序单独部署到后端服务器上
混合开发:(早期的开发技术,目前慢慢退出市场),这种开发模式的特点是:前端人员开发的代码和后端人员开发的代码在同一个项目中,一起打包部署。
网站的开发技术
前端web技术:
前端开发基础:HTML、CSS、JavaScript、Vue基础、Ajax。
Vue工程化:Vue工程化、TS、Element、案例、Nginx部署。
后端web技术:
Maven项目构建工具、Servlet、Tomcat、HTTP协议、Interceptor
IOC、DI、MySQL、请求、响应、AOP、Filter、JWT等技术
SpringBoot的底层原理,包括:起步依赖,自动配置等。
所以只有使用以上的技术,我们才能开发出一个麻雀虽小,五脏俱全的网站。
HTML & CSS
1). 什么是HTML ?
HTML: HyperText Markup Language,超文本标记语言。
超文本:超越了文本的限制,比普通文本更强大。除了文字信息,还可以定义图片、音频、视频等内容。
标记语言:由标签 "<标签名>" 构成的语言
HTML标签都是预定义好的 。例如:使用 <h1> 标签展示标题,使用<a>展示超链接,使用<img>展示图片,<video>展示视频。
HTML代码直接在浏览器中运行,HTML标签由浏览器解析 。
2). 什么是CSS ?
CSS: Cascading Style Sheet,层叠样式表,用于控制页面的样式(表现)。
编写HTML的基本骨架,定义标题
<html>
<head>
<title>HTML 快速入门</title>
</head>
<body>
</body>
</html>
其中<html>是根标签,<head>和<body>是子标签。
-
<head> : 定义网页的头部,用来存放给浏览器看的信息,如:CSS样式、网页的标题。
-
<body> : 定义网页的主体部分,存放给用户看的信息,也是网页的主体内容,如:文字、图片、视频、音频、表格等。
在<body>中编写HTML的核心内容
<html>
<head>
<title>HTML 快速入门</title>
</head>
<body>
<h1>Hello HTML</h1>
<img src="1.png">
</body>
</html>
其中 <h1> 标签是一个一级标题的标签。 <img> 标签是一个图片标签,用来展示图片,而其中的 src 属性是用来指定要展示的图片。
<title>中定义标题显示在浏览器的标题位置,<body>中定义的内容会呈现在浏览器的内容区域
HTML中的标签特点
-
HTML标签不区分大小写,建议小写
-
HTML标签的属性值,采用单引号、双引号都可以,一般写双引号
-
HTML语法相对比较松散 (建议大家编写HTML标签的时候尽量严谨一些)
标签
图片标签 img
A. 图片标签: <img>
B. 常见属性:
src: 指定图像的url (可以指定 绝对路径 , 也可以指定 相对路径)
width: 图像的宽度 (像素 / 百分比 , 相对于父元素的百分比)
height: 图像的高度 (像素 / 百分比 , 相对于父元素的百分比)
备注: 一般width 和 height 我们只会指定一个,另外一个会自动的等比例缩放。
C. 路径书写方式:
绝对路径:
1. 绝对磁盘路径: C:\Users\Administrator\Desktop\HTML\img\logo.png
<img src="C:\Users\Administrator\Desktop\HTML\img\logo.png">2. 绝对网络路径: https://i2.sinaimg.cn/dy/deco/2012/0613/yocc20120613img01/news_logo.png
<img src="https://i2.sinaimg.cn/dy/deco/2012/0613/yocc20120613img01/news_logo.png">
相对路径:
./ : 当前目录 , ./ 可以省略的
../: 上一级目录
注意:一般图片的width、height只设置一个,图片会等比例缩放。
标题标签 h 系列
A. 标题标签: <h1> - <h6>
<h1>111111111111</h1>
<h2>111111111111</h2>
<h3>111111111111</h3>
<h4>111111111111</h4>
<h5>111111111111</h5>
<h6>111111111111</h6>
B. 效果 : h1为一级标题,字体也是最大的 ; h6为六级标题,字体是最小的。
水平分页线标签 <hr>
备注:而上述的 <hr> <img> 标签呢,其实都属于单标签,也就是说是不需要结束标签的。
编写标题排版的核心代码
<!-- 文档类型为HTML -->
<!DOCTYPE html>
<html lang="en">
<head>
<!-- 字符集为UTF-8 -->
<meta charset="UTF-8">
<!-- 设置浏览器兼容性 -->
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>标题</title>
</head>
<body>
<!--
img标签:
src: 图片资源路径
width: 宽度(px, 像素 ; % , 相对于父元素的百分比)
height: 高度(px, 像素 ; % , 相对于父元素的百分比)
<img src="img/logo.png" width="80%" >
路径书写方式:
绝对路径:
1. 绝对磁盘路径: C:\Users\Administrator\Desktop\HTML\img\logo.png
<img src="C:\Users\Administrator\Desktop\HTML\img\logo.png">
2. 绝对网络路径: https://i2.sinaimg.cn/dy/deco/aaa/bbb/ccc/news_logo.png
<img src="https://i2.sinaimg.cn/dy/deco/aaa/bbb/ccc/news_logo.png">
相对路径:
./ : 当前目录 , ./ 可以省略的
../: 上一级目录
-->
<img src="img/logo.png"> 内容 > 正文
<h1>文本</h1>
<hr>
你好呀
<hr>
</body>
</html>
标题样式
那在HTML的文件中,我们如何来编写CSS样式呢,此时就涉及到CSS的三种引入方式。
名称 | 语法描述 | 示例 |
---|---|---|
行内样式 | 在标签内使用style属性,属性值是css属性键值对。 | <h1 style="xxx:xxx;">中国新闻网</h1> |
内嵌样式 | 定义<style>标签,在标签内部定义css样式。 | <style> h1 {...} </style> |
外联样式 | 定义<link>标签,通过href属性引入外部css文件 | <link rel="stylesheet" href="css/news.css"> |
对于上述3种引入方式,企业开发的使用情况如下:
-
内联样式会出现大量的代码冗余,不方便后期的维护,所以不常用(常配合JS使用)。
-
内部样式,通过定义css选择器,让样式作用于当前页面的指定的标签上。(可以写在页面任何位置,但通常约定写在head标签中)
-
外部样式,html和css实现了完全的分离,企业开发常用方式。
颜色表示
表示方式 | 属性值 | 说明 | 取值 |
---|---|---|---|
关键字 | 颜色英文单词 | red、green、blue | red、green、blue... |
rgb表示法 | rgb(r, g, b) | 红绿蓝三原色,每项取值范围:0-255 | rgb(0,0,0)、rgb(255,255,255)、rgb(255,0,0) |
rgba表示法 | rgba(r, g, b, a) | 红绿蓝三原色,a表示透明度,取值:0-1 | rgb(0,0,0,0.3)、rgb(255,255,255,0.5) |
十六进制表示法 | #rrggbb | #开头,将数字转换成十六进制表示 | #000000、#ff0000、#cccccc,简写:#000、#ccc |
标题字体颜色
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>hello</title>
<!-- 方式二: 内嵌样式 -->
<style>
h1 {
/* color: red; */
/* color: rgb(0, 0, 255); */
color: #4D4F53;
}
</style>
<!-- 方式三: 外联样式 -->
<!-- <link rel="stylesheet" href="css/news.css"> -->
</head>
<body>
<img src="img/logo.png"> 你好 > 正文
<!-- 方式一: 行内样式 -->
<!-- <h1 style="color: red;">hello</h1> -->
<h1>hello</h1>
<hr>
123
<hr>
</body>
</html>
备注: 要想拾取某一个网页中的颜色,我们可以借助于截图软件的拾色器插件来完成
CSS选择器
顾名思义:选择器是选取需设置样式的元素(标签),但是我们根据业务场景不同,选择的标签的需求也是多种多样的,所以选择器有很多种,因为我们是做后台开发的,所以对于css选择器,我们只学习最基本的3种。
选择器通用语法如下:
选择器名 {
css样式名:css样式值;
css样式名:css样式值;
}
1.元素(标签)选择器:
选择器的名字必须是标签的名字
作用:选择器中的样式会作用于所有同名的标签上
h1{
color: red;
}
2.类选择器:
选择器的名字前面需要加上 .(点)
作用:选择器中的样式会作用于所有class的属性值和该名字一样的标签上,可以是多个
.class属性值 {
css样式名:css样式值;
}
3.id选择器:
选择器的名字前面需要加上#
作用:选择器中的样式会作用于指定id的标签上,而且有且只有一个标签(由于id是唯一的)
#id属性值 {
css样式名:css样式值;
}
发布时间字体颜色
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>标题</title>
<style>
h1 {
color: #4D4F53;
}
/* 元素选择器 */
/* span {
color: red;
} */
/* 类选择器 */
/* .cls {
color: green;
} */
/* ID选择器 */
#time {
color: #968D92;
font-size: 13px; /* 设置字体大小 */
}
</style>
</head>
<body>
<img src="img/news_logo.png"> 正文
<h1>hello</h1>
<hr>
<span class="cls" id="time">20xx年10月01日 19:49</span> <span class="cls">XX网</span>
<hr>
</body>
</html>
上述我们还使用了一个css的属性 font-size , 用来设置字体的大小。 但是需要注意,在设置字体的大小时,单位px不能省略,否则不生效。
超链接
标签: <a href="..." target="...">hello</a>
属性:
-
href: 指定资源访问的url
-
target: 指定在何处打开资源链接
-
_self: 默认值,在当前页面打开
-
_blank: 在空白页面打开
-
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>标题</title>
<style>
/* 1. 标签选择器 */
h1 {
color: #4d4f53;
}
.time {
font-size: 12px;
color: #888;
}
a {
text-decoration: none;
color: #4d4f53;
}
</style>
</head>
<body>
<img src="img/logo.png"> <a href="https://gov.sina.com.cn/" target="_self">新征程</a> > 正文
<h1 class="cls" id="hid">hello</h1>
<hr>
<span class="time">20xx年10月01日 19:49</span>
<a href="https://news.cctv.com/20xx/10/01/ARTI0KLN7plgs92l02aD0hTe230723.shtml" target="_blank">xx网</a>
<hr>
</body>
</html>
正文实现
整个正文部分的排版,主要分为这么四个部分:
1). 视频 (当前这种新闻页面,可能也会存在音频)
2). 文字段落
3). 字体加粗
4). 图片
标签
1). 视频、音频标签
-
视频标签: <video>
-
属性:
-
src: 规定视频的url
-
controls: 显示播放控件
-
width: 播放器的宽度
-
height: 播放器的高度
-
-
-
音频标签: <audio>
-
属性:
-
src: 规定音频的url
-
controls: 显示播放控件
-
-
2). 段落标签
-
换行标签: <br>
-
注意: 在HTML页面中,我们在编辑器中通过回车实现的换行, 仅仅在文本编辑器中会看到换行效果, 浏览器是不会解析的, HTML中换行需要通过br标签
-
-
段落标签: <p>
-
如: <p> 这是一个段落 </p>
-
3). 文本格式标签
效果 | 标签 | 标签(强调) |
---|---|---|
加粗 | b | strong |
倾斜 | i | em |
下划线 | u | ins |
删除线 | s | del |
前面的标签 b、i、u、s 就仅仅是实现加粗、倾斜、下划线、删除线的效果,是没有强调语义的。 而后面的strong、em、ins、del在实现加粗、倾斜、下划线、删除线的效果的同时,还带有强调语义。
实现
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>标题</title>
<style>
/* 1. 标签选择器 */
h1 {
color: #4d4f53; /* 字体颜色 */
}
.time {
font-size: 12px; /* 字体大小 */
color: #888;
}
a {
text-decoration: none; /* 文本装饰 */
color: #4d4f53;
}
p {
line-height: 30px; /* 行高 */
text-indent: 35px; /* 首行缩进 */
}
.editor {
text-align: right; /* 规定文本的水平对齐方式 */
}
</style>
</head>
<body>
<img src="img/logo.png"> <a href="https://gov.sina.com.cn/">新征程</a> > 正文
<h1 class="cls" id="hid">hello</h1>
<hr>
<span class="time">2023年07月23日 19:49</span> <a href="https://news.cctv.com/2023/07/23/ARTI0KLN7plgs92l02aD0hTe230723.shtml" target="_blank">央视网</a>
<hr>
<video src="video/news.mp4" controls width="930px"></video>
<p>
<strong>XX网消息</strong>(新闻):内容。
</p>
<img src="img/1.jpg">
<p>内容</p>
<p>内容</p>
<img src="img/2.jpg">
<p>内容</p>
<p>内容</p>
<img src="img/3.jpg">
<p>内容</p>
<img src="img/4.jpg">
<p>内容</p>
<p>内容</p>
<p class="editor">责任编辑:王小桃 </p>
<p><strong>关键字:</strong> 内容</p>
</body>
</html>
在上述的正文排版实现中,还用到了几个CSS属性:
-
text-indent: 设置段落的首行缩进
-
line-height: 设置行高
-
text-align: 设置对齐方式, 可取值为 left / center / right
注意事项:
在HTML页面中无论输入了多少个空格, 最多只会显示一个。 可以使用空格占位符( ;)来生成空格,如果需要多个空格,就使用多次占位符。
那在HTML中,除了空格占位符以外,还有一些其他的占位符(了解, 只需要知道空格的占位符写法即可),如下:
显示结果 描述 占位符 空格 < 小于号 < > 大于号 > & 和号 & " 引号 " ' 撇号 '
页面布局
盒子模型
盒子:页面中所有的元素(标签),都可以看做是一个 盒子,由盒子将页面中的元素包含在一个矩形区域内,通过盒子的视角更方便的进行页面布局
-
盒子模型组成:内容区域(content)、内边距区域(padding)、边框区域(border)、外边距区域(margin)
CSS盒子模型,其实和日常生活中的包装盒是非常类似的,就比如:
盒子的大小,其实就包括三个部分: border、padding、content,而margin外边距是不包括在盒子之内的。
布局标签
-
布局标签:实际开发网页中,会大量频繁的使用 div 和 span 这两个没有语义的布局标签。
-
标签:<div> <span>
-
特点:
-
div标签:
-
一行只显示一个(独占一行)
-
宽度默认是父元素的宽度,高度默认由内容撑开
-
可以设置宽高(width、height)
-
-
span标签:
-
一行可以显示多个
-
宽度和高度默认由内容撑开
-
不可以设置宽高(width、height)
-
-
测试
<body>
<div>
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
</div>
<div>
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
</div>
<span>
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
</span>
<span>
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
</span>
</body>
浏览器打开后的效果:
1). div会独占一行,默认宽度为父元素 body 的宽度。可以设置宽高(width、height)
2). span一行会显示多个,用来组合行内元素,默认宽度为内容撑开的宽度。不可以设置宽高(width、height)
盒子模型代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>盒子模型</title>
<style>
div {
width: 200px; /* 宽度 */
height: 200px; /* 高度 */
box-sizing: border-box; /* 指定width height为盒子的高宽 */
background-color: aquamarine; /* 背景色 */
padding: 20px 20px 20px 20px; /* 内边距, 上 右 下 左 , 边距都一行, 可以简写: padding: 20px;*/
border: 10px solid red; /* 边框, 宽度 线条类型 颜色 */
margin: 30px 30px 30px 30px; /* 外边距, 上 右 下 左 , 边距都一行, 可以简写: margin: 30px; */
}
</style>
</head>
<body>
<div>
A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A A
</div>
</body>
</html>
代码编写好了, 可以通过浏览器打开该页面, 通过开发者工具,我们就可以看到盒子的大小, 以及盒子各个组成部分(内容、内边距、边框、外边距):
我们也可以,通过浏览器的开发者工具,清晰的看到这个盒子,以及每一个部分的大小:
布局实现
在实现新闻页面的布局时,我们需要做两部操作:
-
第一步:需要将body中的新闻标题部分、正文部分使用一个 div 布局标签将其包裹起来,方便通过css设置内容占用的宽度,比如:60%。
-
第二步:通过css为该div设置外边距,左右的外边距分别为:20%,上外边距靠边展示即可,为:0%,下边设置一部分外边距,比如100px。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>标题</title>
<style>
h1 {
color: #4d4f53; /* 字体颜色 */
}
.time {
font-size: 12px; /* 字体大小 */
color: #888;
}
a {
text-decoration: none; /* 文本装饰 */
color: #4d4f53;
}
p {
line-height: 30px; /* 行高 */
text-indent: 35px; /* 首行缩进 */
}
.editor {
text-align: right; /* 规定文本的水平对齐方式 */
}
#main {
width: 60%;
margin: 0 20% 100px 20%;
}
</style>
</head>
<body>
<div id="main">
<img src="img/logo.png"> <a href="https://gov.sina.com.cn/">
新征程
</a> > 正文
<h1 class="cls" id="hid">
内容
</h1>
<hr>
<span class="time">20xx年10月01日 19:49</span>
<a href="https://news.cctv.com/2023/07/23/ARTI0KLN7plgs92l02aD0hTe230723.shtml" target="_blank">
央视网
</a>
<hr>
<video src="video/news.mp4" controls width="930px"></video>
<p>
<strong>xx网消息</strong>(新闻):内容
</p>
<img src="img/1.jpg">
<p>内容</p>
<p>内容</p>
<img src="img/2.jpg">
<p>内容</p>
<p>内容</p>
<img src="img/3.jpg">
<p>内容</p>
<img src="img/4.jpg">
<p>内容</p>
<p>内容</p>
<p class="editor">责任编辑:王小桃</p>
<strong>关键字:</strong> 内容
</div>
</body>
</html>
表格标签
场景:在网页中以表格(行、列)形式整齐展示数据,我们在一些管理类的系统中,会看到数据通常都是以表格的形式呈现出来的,比如:班级表、学生表、课程表、成绩表等等。
标签:
-
<table> : 用于定义整个表格, 可以包裹多个 <tr>。
-
<tr> : 表格的行,可以包裹多个 <td> 。
-
<td> : 表格单元格(普通),可以包裹内容 , 如果是表头单元格,可以替换为 <th> 。
提示:HTML表格的边框、宽度的设置推荐使用CSS样式进行控制。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>HTML-表格</title>
<style>
td,th {
border: 1px solid #ccc;
}
table {
width: 50%; /* 宽度 */
text-align: center; /* 单元格内容居中展示 */
line-height: 60px; /* 行高 */
border-collapse: collapse; /* 设置表格的边框是分开的还是合并的, collapse为合并的 */
}
</style>
</head>
<body>
<table>
<tr>
<th>序号</th>
<th>品牌Logo</th>
<th>品牌名称</th>
<th>企业名称</th>
</tr>
<tr>
<td>1</td>
<td> <img src="img/huawei.jpg" height="50px"> </td>
<td>华为</td>
<td>华为技术有限公司</td>
</tr>
<tr>
<td>2</td>
<td> <img src="img/alibaba.jpg" height="50px"> </td>
<td>阿里</td>
<td>阿里巴巴集团控股有限公司</td>
</tr>
</table>
</body>
</html>
打开浏览器,效果如下图所示:
整合表格使用 table 标签包裹 , 其中的每一行数据都是一个 tr , 每一行中的每一个单元格都是一个 td , 而如果是表头单元格, 可以使用 th (具有加粗居中展示的效果)。
表单标签
在我们日常的上网的过程中,基本上每天都会遇到。比如,我们经常在访问网站时,出现的登录页面、注册页面、个人信息提交页面,其实都是一个一个的表单 。 当我们在这些表单中录入数据之后,一点击 "提交",就会将表单中我们填写的数据采集到,并提交, 那其实这个数据呢,一般会提交到服务端,最终保存在数据库中
上述的整个窗口是一个表单,而表单是一项一项的,这个我们称为表单项 或 表单元素。
-
表单场景: 表单就是在网页中负责数据采集功能的,如:注册、登录的表单。
-
表单标签: <form>
-
表单属性:
-
action: 规定表单提交时,向何处发送表单数据,表单提交的URL。
-
method: 规定用于发送表单数据的方式,常见为: GET、POST。
-
GET:表单数据是拼接在url后面的, 如: xxxxxxxxxxx?username=Tom&age=12,url中能携带的表单数据大小是有限制的。
-
POST: 表单数据是在请求体(消息体)中携带的,大小没有限制。
-
-
-
表单项标签: 不同类型的input元素、下拉列表、文本域等。
-
input: 定义表单项,通过type属性控制输入形式
-
select: 定义下拉列表
-
textarea: 定义文本域
-
1). GET方式提交的表单
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>HTML-表单</title>
</head>
<body>
<!--
form表单属性:
action: 表单提交的url, 往何处提交数据 . 如果不指定, 默认提交到当前页面
method: 表单的提交方式 .
get: 在url后面拼接表单数据, 比如: ?username=Tom&age=12 , url长度有限制 . 默认值
post: 在消息体(请求体)中传递的, 参数大小无限制的.
-->
<form action="" method="get">
用户名: <input type="text" name="username">
年龄: <input type="text" name="age">
<input type="submit" value="提交">
</form>
</body>
</html>
表单编写完毕之后,通过浏览器打开此表单,然后再表单项中录入值之后,点击提交,我们会看到表单的数据在url后面提交到服务端,格式为:?username=Tom&age=12。
2). POST方式提交表单
将上述的表单提交方式由get,改为post
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>HTML-表单</title>
</head>
<body>
<!--
form表单属性:
action: 表单提交的url, 往何处提交数据 . 如果不指定, 默认提交到当前页面
method: 表单的提交方式 .
get: 在url后面拼接表单数据, 比如: ?username=Tom&age=12 , url长度有限制 . 默认值
post: 在消息体(请求体)中传递的, 参数大小无限制的.
-->
<form action="" method="post">
用户名: <input type="text" name="username">
年龄: <input type="text" name="age">
<input type="submit" value="提交">
</form>
</body>
</html>
表单编写完毕之后,通过浏览器打开此表单,然后再表单项中录入值之后,点击提交,我们会看到表单的数据在url后面提交到服务端,格式为:?username=Tom&age=12。
注意事项
表单中的所有表单项,要想能够正常的采集数据,在提交的时候能提交到服务端,表单项必须指定name属性。 否则,无法提交该表单项。
用户名: <input type="text" name="username">
表单项
在一个表单中,可以存在很多的表单项,而虽然表单项的形式各式各样,但是表单项的标签其实就只有三个,分别是:
-
<input>: 表单项 , 通过type属性控制输入形式。
type取值 描述 text 默认值,定义单行的输入字段 password 定义密码字段 radio 定义单选按钮 checkbox 定义复选框 file 定义文件上传按钮 date/time/datetime-local 定义日期/时间/日期时间 number 定义数字输入框 email 定义邮件输入框 hidden 定义隐藏域 submit / reset / button 定义提交按钮 / 重置按钮 / 可点击按钮 -
<select>: 定义下拉列表, <option> 定义列表项
-
<textarea>: 文本域
创建一个新的表单项的html文件,具体内容如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>HTML-表单项标签</title>
</head>
<body>
<!-- value: 表单项提交的值 -->
<form action="" method="post">
姓名: <input type="text" name="name"> <br><br>
密码: <input type="password" name="password"> <br><br>
性别: <input type="radio" name="gender" value="1"> 男
<label><input type="radio" name="gender" value="2"> 女 </label> <br><br>
爱好: <label><input type="checkbox" name="hobby" value="java"> java </label>
<label><input type="checkbox" name="hobby" value="game"> game </label>
<label><input type="checkbox" name="hobby" value="sing"> sing </label> <br><br>
图像: <input type="file" name="image"> <br><br>
生日: <input type="date" name="birthday"> <br><br>
时间: <input type="time" name="time"> <br><br>
日期时间: <input type="datetime-local" name="datetime"> <br><br>
邮箱: <input type="email" name="email"> <br><br>
年龄: <input type="number" name="age"> <br><br>
学历: <select name="degree">
<option value="">----------- 请选择 -----------</option>
<option value="1">大专</option>
<option value="2">本科</option>
<option value="3">硕士</option>
<option value="4">博士</option>
</select> <br><br>
描述: <textarea name="description" cols="30" rows="10"></textarea> <br><br>
<input type="hidden" name="id" value="1">
<!-- 表单常见按钮 -->
<input type="button" value="按钮">
<input type="reset" value="重置">
<input type="submit" value="提交">
<br>
</form>
</body>
</html>
通过浏览器打开上述的表单项html文件,最终展示出的表单信息如下:
而对于input type="hidden",是一个隐藏域,在表单中并不会显示出来,但是在提交表单的时候,是会提交到服务端的。 接下来,我们就点击提交按钮,来提交当前表单,看看提交的数据: