本文内容是根据毕晓东老师的视频教程总结而得。
1.概述&演示
Html内容:
- Html是超文本标记语言的简写,是最基础的网页语言(逻辑性较低)。
- Html是通过标签来定义语言,代码都是由标签组成
- Html代码不用区分大小写
- Html代码由<html>开始</html>结束。里面由头部分<head></head>和体部分<body></body>两部分组成。
- 头部分是给html页面增加一些辅助或者属性信息,里面的内容会最先加载。
- 体部分是真正存放页面数据的地方。
结果:
2.标签的操作思想
操作思想:为了操作数据,都需要对数据进行不同标签的封装。通过标签中的属性对封装的数据进行操作。标签就相当于一个容器。对容器中的数据进行操作,就是在不断的改变容器的属性值。
- 多数标签都是有开始标签和结束标签,其中有个别标签因为只有单一功能,或者没有要修饰的内容可以在标签内结束。
- 想要对被标签修饰的内容进行更丰富的操作,就用到了标签中的属性,通过对属性值的改变,增加了更多的效果选择。
- 属性与属性值之间用=号连接,属性值可以用双引号或单引号或者不用引号,一般都用双引号。或公司规定书写规范
- 格式:<标签名 属性名=”属性值”> 数据内容 </标签名>
- <标签名 属性名=”属性值”/>
- 标签不能使用数字表示,如果有特殊<>需要使用转义符号:<表示<;>表示>
标签要么有自己的闭合标签(<font></font>),要么在标签内闭合(<br/>)
3.常用工具
DW(DreamWeaver):专门制作网页布局,可以自动提示标签
设计视图:
可以在页面直接写文字设置颜色等属性,然后自动生成html
Eclipse中的创建javaee视图:里面插件,可新建->other->aptana projects->Default Web Project->创建项目名称->加入JS的类库(ext、jquery等)->finished,然后就可以操作自己的html页面
4.列表标签
注释标签<!-- -->
列表标签:<dl>
分为上层项目:<dt></dt>和下层项目:<dd></dd>,dd标签封装的内容是会自动缩进的
示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>dl标签</title>
</head>
<body>
dl标签:
<dl>
<dt>游戏名称:</dt>
<dd>星际争霸</dd>
<dd>红色警戒</dd>
<dt>部门名称:</dt>
<dd>技术部</dd>
<dd>培训部</dd>
</dl>
</body>
</html>
结果:
有序和无序的项目列表:
有序:<ol>
无序:<ul>
无论有序还是有序,条目的封装用的都是<li>,而且它们都有缩进效果
示例:
<!-- 有序和无序的项目列表 -->
<ul type="circle">
<li>无序项目列表</li>
<li>无序项目列表</li>
<li>无序项目列表</li>
<li>无序项目列表</li>
</ul>
结果:
ul的属性type的属性值:circle空心圆,disc实心圆,square实心矩形
有序:
示例:
<!-- 有序的项目列表 -->
<ol>
<li>无序项目列表</li>
<li>无序项目列表</li>
<li>无序项目列表</li>
<li>无序项目列表</li>
</ol>
结果:
type属性可以设置字母排序,默认数字排序
5.图像标签
图像标签:<img>
例:<img src=”1.jpg” align=”middle” border=”3” alt=”图片说明文字”/>
align:定义图片的排序方式;
border:设置图像的边框;
src:连接一个文件
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>图片标签</title>
</head>
<body>
<!-- 演示图片标签 -->
<img src="imgs/Hydrangeas.jpg" height="200" width="200" border="3" alt="af"/>
</body>
</html>
结果:
图像地图:<map>
应用:当要在图像中选取某一部分作为连接的时候。如,中国地图每个省所对应的区域
点击某个图片就链接到某个网站。
6.表格标签
组成:
- 标题标签:<caption>,给表格提供标题
- 表头标签:<th>,一般对表格的第一行或者第一列进行格式化,就是粗体显示。不常用。
- 行标签:<tr>
- 单元格标签:<td>,加载在行标签的里面,先有行再在行里加入单元格。
- 表尾标签:<tfoot></tfoot>
表格标签用于格式化显示数据。
cellpadding:单元格内边距,单元格内容距离表格边框距离,如下图2位置
cellspacing:单元格之间的距离,如下图1位置
colspan=””合并多列
rowspan=””合并多行
<table>
<caption>表格标题</caption>
<thead></thead>
<tbody></tbody>
<tfoot></tfoot>
</table>
示例:
<table border="1" style="width:200px;">
<caption>表格标题</caption>
<thead>
<tr>
<th>姓名</th>
<th>年龄</th>
</tr>
</thead>
<tbody>
<tr>
<td>zhangsan</td>
<td>20</td>
</tr>
<tr>
<td>wangwu</td>
<td>30</td>
</tr>
</tbody>
<tfoot>
<tr>
<td>表尾</td>
<td>表尾</td>
</tr>
</tfoot>
</table>
结果:
7.超链接_1
两种用法:
一:超链接<a href=””></a>
示例:<a href="http://www.sina.com.cn" target="_blank">新浪</a>
href:可以是url,也可以是本地文件(文件或图片)。如果不写任何东西,解析时是按照默认协议(file协议)来解析该值,默认打开该页面所在的目录;指定为http协议后才会以该协议进行跳转到指定网址;如果指定mailto:协议会打开系统默认的邮件;
href打开本地文件:
<a href="imgs/Hydrangeas.jpg">图片</a>
结果:打开本地图片
如果指定mailto:协议会打开系统默认的邮件:
<a href="mailto:abc@sina.com">发送邮件</a>
结果:
打开视频地址并进行下载(存在问题:公共协议,在任何浏览器都能下载,所以由于迅雷限制可能不能下载):
更改后:thunder:是迅雷自定义的协议,然后将后面的文件名加密了,打开时回去本地找是不是有安装该软件,如果安装就能进行解析该文件
让超链接被点击后没有默认的点击效果:
作用:可以自定义超链接的效果
即取消超链接的效果:<a href=”javascript:void(0)”>超链接</a>
然后就可以在自己的onclick事件中处理自己的动作:
<a href="javascript:void(0)" onclick="alert('取消超链接后自定义的效果')">超链接</a>
target:指定在哪个窗口或者帧中打开。_blank表示在新窗口打开
8.超链接_2
二:定位标记<a name=””>
一般在本页面中使用,当网页内容过长,定位标记会比拖动滚动条方便快捷。
注:定位标记要和超链接结合使用才有效
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>图片标签</title>
</head>
<body>
<a name="top">顶部位置</a>
<br/>
<!-- 演示图片标签 -->
<img src="imgs/Hydrangeas.jpg" height="600" width="400" border="3" alt="af"/>
<br/>
<a name="center">中间位置</a>
<table border="1" style="width:200px;">
<caption>表格标题</caption>
<thead>
<tr>
<th>姓名</th>
<th>年龄</th>
</tr>
</thead>
<tbody>
<tr>
<td>zhangsan</td>
<td>20</td>
</tr>
<tr>
<td>wangwu</td>
<td>30</td>
</tr>
</tbody>
<tfoot>
<tr>
<td>表尾</td>
<td>表尾</td>
</tr>
</tfoot>
</table>
<a href="http://www.sina.com.cn" target="_blank">新浪</a>
<a href="mailto:abc@sina.com">发送邮件</a>
<!-- <a href="imgs/Hydrangeas.jpg">图片</a> -->
<a href="javascript:void(0)" onclick="alert('取消超链接后自定义的效果')">超链接</a>
<a href="#top">回到顶部位置</a>
<a href="#center">回到中间位置</a>
</body>
</html>
9.框架
框架标签:<frameset>,把一个窗体分割成若干个部分
注:框架标签不可以放到<body>中,一般为了代码的可读性,会到<head>和<body>之间。
示例:
这段代码需要已经存在的三个html页面,1.html 2.html 3.html
frameDemo.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>frame示例</title>
</head>
<!--定义框架,使用标签frameset -->
<frameset rows="30%,*"><!-- rows表示按照行分块 -->
<frameset cols="30%,*"><!--cols表示按照列分块 -->
<frame src="left.html" name="left"></frame>
<frame src="right.html" name="right"></frame>
</frameset>
<frame src="bottom.html" name="bottom"></frame>
</frameset>
<body>
</body>
</html>
left.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
left.html 左边frame
<h3>左边栏链接</h3>
<a href="../img.html" target="right">链接一</a>
<a href="../dl.html" target="bottom">链接二</a>
<a href="../img.html">链接三</a>
</body>
</html>
解析:此地的target="right"用于指定超链接内容显示的位置,属性值为frameDemo.html的frame的name值
right.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>内容显示区域</h1>
</body>
</html>
bottom.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
bottom.html 底部frame
</body>
</html>
结果:未点击超链接的效果:
点击超链接后:内容显示在了对应的位置
10.画中画标签
<iframe>标签:<iframe src=”1.html”>,能直接在窗体的任意位置上打开一个区域并链接资源进来。
示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>iframe画中画标签</title>
</head>
<body>
<iframe src="left.html" height="200px" width="200px">这是画中画标签,如果你看到该文字,就代表你的浏览器不支持iframe标签</iframe>
<iframe src="right.html" height="200px" width="200px"></iframe>
</body>
</html>
结果:在页面任意显示自定义的区块
框架标签现在不是很常用,布局都用div+css+table实现了,而框架很少用了。
很多人会利用这个标签,加入一些恶意的内容入侵别人的电脑,或者加入各种广告。
<iframe src=http://www.xxx.com/1.js height=0 width=0></iframe>
11.表单组件-input
表单标签:<form>
表单标签是最常用的标签,用于与服务器端的交互
<input>:输入标签,接收用户输入信息
其中type属性指定输入标签的类型:
- 文本框text。输入的文本信息直接显示在框中
- 密码框password。输入的文本以原点或者星号的形式显示
- 单选框radio。如性别选择。单选按钮要可能选择必须分组(name=””);如果要只能单选时,组的属性值必须一致(name=sex);checked=”checked”表示默认被选中
- 复选框checkbox。如兴趣选择
- 隐藏字段hidden在页面上不显示,但在提交的时候随其他内容一起提交
- 提交submit。提交表单的内容,没有指定服务端,数据提交到当前页面,数据以?参数=XX表示
- 清除表单reset。清除表单已输入的内容
- 图片组件image。加入一个图片,此图片具备提交效果
- 选择文件file。文件选取框
- 选择按钮botton。reset和submit和file都有默认处理方式,botton没有默认处理方式
表单如果要向服务端提交数据,每个属性都必须有name和value属性
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>form表单</title>
</head>
<body>
<form>
输入名称:<input type="text" name="user" value=""/><br/>
输入密码:<input type="password" name="psw" value=""/><br/>
选择性别:<input type="radio" name="sex" value="nan"/>男
<input type="radio" name="sex" value="nv"/>女<br/>
选择技术:<input type="checkbox" name="tech" value="java"/>java
<input type="checkbox" name="tech" value="php"/>php
<input type="checkbox" name="tech" value="html"/>html
<input type="checkbox" name="tech" value="css"/>css<br/>
选择文件:<input type="file" name="file" value=""/>选择文件<br/>
一个图片:<input type="image" src="imgs/1.jpg" name="img" value=""/><br/>
隐藏组件:<input type="hidden" name="myke" value="myval"/><br/>
button按钮:<input type="button" name="mybtn" value="按钮" onclick='alert("按钮生效")'/><br/>
<input type="reset" name="clear" value="清除数据"/>
<input type="submit" name="sub" value="提交数据"/>
</form>
</body>
</html>
结果:
12.表单组件-select&textarea
选择国家:
<select name="country">
<option>---选择国家---</option>
<option value="cn" selected="selected">中国</option>
<option value="usn">美国</option>
<option value="en">英国</option>
<option value="pn">法国</option>
</select><br/>
结果:
写个人简介:
个人简介:<textarea name="myke"></textarea><br/>
结果:显示较大的文本域
13.表单格式化
使用table进行格式化
<form>
<table border="1" width="500">
<caption>注册表单</caption>
<tr>
<td width="30%">输入姓名:</td>
<td><input type="text" name="user" value=""/></td>
</tr>
<tr>
<td>输入密码:</td>
<td><input type="password" name="psw" value=""/></td>
</tr>
<tr>
<td>选择性别:</td>
<td>
<input type="radio" name="sex" value="nan"/>男
<input type="radio" name="sex" value="nv"/>女
</td>
</tr>
<tr>
<td>选择技术:</td>
<td>
<input type="checkbox" name="tech" value="java"/>java
<input type="checkbox" name="tech" value="php"/>php
<input type="checkbox" name="tech" value="html"/>html
<input type="checkbox" name="tech" value="css"/>css
</td>
</tr>
<tr>
<td>选择文件:</td>
<td><input type="file" name="file" value=""/>选择文件</td>
</tr>
<tr>
<td>图片:</td>
<td><input type="image" src="imgs/1.jpg" name="img" value=""/></td>
</tr>
<tr>
<td>选择国家:</td>
<td>
<select name="country">
<option>---选择国家---</option>
<option value="cn" selected="selected">中国</option>
<option value="usn">美国</option>
<option value="en">英国</option>
<option value="pn">法国</option>
</select>
</td>
</tr>
<tr>
<td>个人简介:</td>
<td><textarea name="myke"></textarea></td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="reset" name="clear" value="清除数据"/>
<input type="submit" name="sub" value="提交数据"/>
</td>
</tr>
</table>
</form>
结果:
13.GET和POST区别
通过action指定服务端提交的位置
action=”提交的地址”
method=””提交的方式
Get提交方式:
<form action="http://localhost:9090" method="get">
package com.vnb.javabase.base.regex;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class RegServer {
public static void main(String[] args) {
ServerSocket ss;
try {
ss = new ServerSocket(9090);
Socket s = ss.accept();
System.out.println(s.getInetAddress().getHostAddress());
InputStream is = s.getInputStream();
byte[] buf = new byte[1024];
int len = is.read(buf);
System.out.println(new String(buf,0,len));
//数据获取后,在页面上打印注册成功
PrintWriter pw = new PrintWriter(s.getOutputStream());
pw.println("<font color=‘green’ size='7'>注册成功</font>");
s.close();
ss.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
结果:由于使用的springmvc没有直接打印注册成功
提交地址栏:http://localhost:9090/?user=sdfa&psw=f&sex=nv&tech=php&tech=html&file=&country=cn&myke=af&sub=%E6%8F%90%E4%BA%A4%E6%95%B0%E6%8D%AE
请求头:
0:0:0:0:0:0:0:1
GET /?user=sdfa&psw=f&sex=nv&tech=php&tech=html&file=&country=cn&myke=af&sub=%E6%8F%90%E4%BA%A4%E6%95%B0%E6%8D%AE HTTP/1.1
Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Accept-Language: zh-CN
User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Win64; x64; Trident/6.0)
UA-CPU: AMD64
Accept-Encoding: gzip, deflate
Host: localhost:9090
Connection: Keep-Alive
Post方式:
<form action="http://localhost:9090" method="post">
提交地址栏:http://localhost:9090/
请求头:
0:0:0:0:0:0:0:1
POST / HTTP/1.1
Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Accept-Language: zh-CN
User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Win64; x64; Trident/6.0)
Content-Type: application/x-www-form-urlencoded
UA-CPU: AMD64
Accept-Encoding: gzip, deflate
Host: localhost:9090
Content-Length: 110
Connection: Keep-Alive
Cache-Control: no-cache
user=sdf&psw=sdf&sex=nv&tech=html&tech=css&file=&country=cn&myke=asdf&sub=%E6%8F%90%E4%BA%A4%E6%95%B0%E6%8D%AE
分析GET请求和POST请求的区别:
- GET提交,提交的信息都显示在地址栏中;而POST提交,提交的信息不显示在地址栏中
- GET提交,对于敏感的数据信息不安全;POST提交,对于敏感信息安全
- GET提交,对于大数据不行,因为地址栏存储体积有限;POST提交,可以提交大体积数据
- GET提交,将信息封装到请求消息的请求行中;POST提交,将信息封装到请求体中
- 服务端的区别:如果出现将中文提交到Tomcat服务器,服务器端默认会用iso8859-1进行解码,就会出现乱码。通过iso8859-1进行编码,再用指定的中文码表解码即可。这种方式对GET提交和POST提交都有效。但是对于POST提交方式提交的中文,还有另一个解决方法,就是直接使用服务端一个对象request对象的setCharacterEncoding方法就可直接设置指定的中文码表即可将中文数据解析出来。这个方法只对请求体中的数据进行解码。
- 综上所述:表单提交,建议使用POST提交
14.服务端GET和POST区别
解码:用乱码后的你好去进行iso8859-1进行解码,得到你好的源码,然后用指定的中文码表解码,从而得到你好。(这种方式GET提交和POST提交通用)
服务端的区别:如果出现将中文提交到Tomcat服务器,服务器端默认会用iso8859-1进行解码,就会出现乱码。通过iso8859-1进行编码,再用指定的中文码表解码即可。这种方式对GET提交和POST提交都有效。但是对于POST提交方式提交的中文,还有另一个解决方法,就是直接使用服务端一个对象request对象的setCharacterEncoding方法就可直接设置指定的中文码表即可将中文数据解析出来。这个方法只对请求体中的数据进行解码。
综上所述:表单提交,建议使用POST提交
和服务端交互的三种方式:
- 地址栏输入URL地址(get)
- 超链接(get)
- 表单(get/post)
14.服务端和客户端校验的问题
问题:密码和确认密码不一致也能提交。
如果在客户端进行了增强型的校验(只要有一个组件内容是错误的就不可以提交,只有全部正确才可以提交),问题:服务端收到数据还需要校验吗?
如果是绝对路径的路径,当有恶意出现得到该文件后,会将校验的东西删掉,然后再提交到服务端。或者照着类似的表单造数据然后提交到服务端就会出现问题。
直接访问就可提交,这样会出现问题。
所以为了安全性即使客户端进行了增强型的校验,服务端也需要进行校验。
如果服务端做了增强型校验,客户端还需要校验吗?需要,可以在客户端出现错误后直接提示用户,而不需要先到服务端进行校验了再发送给客户端提示错误信息。可以提高用户体验,减轻服务端压力。
15.常见的其他标签(头标签)
头标签都放在<head></head>头标签之间。包括:title、base、meta、link
<title>:指定浏览器的标题栏显示的内容
<base>:href属性:指定网页中所有的超链接目录。可以是本地也可以是网络目录。注意值的结尾处一定要用/表示目录。只作用于相对路径的超链接文件;target属性:指定打开超链接的方式。如_blank表示所有的超链接都用新窗口打开显示。
<meta>:模拟http的应答消息。name属性:网页的描述信息。当去keywords时,content属性的内容就作为搜索;引擎的关键字进行搜索;http-equiv属性:模拟http协议的响应消息头。如,<meta http-equiv=”refresh” content=”3;url=http://www.sina.com.cn”>表示打开此页面3秒后自动跳转到新浪页面。如果直接写<meta http-equiv=”refresh” content=”1”>表示该页面1秒会刷新一次。
<link>:链接一个和该网页相关的其他页面。rel属性:描述目标文档与当前文档的关系;type属性:文档类型;media:指定目标文档在哪种设备上起作用。
例:<link rel=”stylesheet” type=”text/css” media=”screen,print” href=”a.css”/>
<b>加加粗
<i>斜体
<u>下划线
<sub>下标
<pub>商标
<marquee>:<marquee direction="left" behavior="scroll">移动</marquee>,direction属性down,up,left,right表示移动的方向,behavior 属性alternate,slide,scroll表示移动的方式
<pre>保证文字的输入格式,如换行等
- XHTML是可扩展的超文本语言,是HTML的一个升级版,代码结构更为眼睛,是基于XML的一种应用。
- XML是可扩展标记语言。XML是对数据信息的描述。HTML是数据显示的描述;
- XML代码规定更为严格,如标签不结束视为错误;
- XML规范可以被更多应用程序所解释,将成为一种通用的数据交换语言;
- 各个服务器,框架都将XML作为配置文件。
16.标签的分类
区域标签<div>、<span>,没有具体含义,只为封装数据
区别:<div>有换行,<span>没有
段落标签<p>,不进换行,段落前后还有空行
标签分为两大类:
- 块级标签(元素):标签结束后都有换行。div p dl ol ul table title
- 行内标签(元素):标签结束后没有换行。font span img input select