java URL、HTTP与HTML+CSS
二、API(Application Programming Interface,应用程序编程接口) 1
一、Web三大基石
URL:Uniform/Universal Resoure Locator统一资源定位符 标识资源的位置
HTTP:Hyper Test Transtormation Protocal :规定的资源传输格式
HTML :Hyper Test Markup Language超文本标记语言
资源/内容本身的格式
Web 就是互联网分享资源/内容
www :World wide web
Deprecated Methods:被废除的方法
推荐书籍:《失控》
二、API(Application Programming Interface,应用程序编程接口)
API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。API与系统调用的区别:系统调用代码都处于内核态,API是操作系统提供的一组函数,通常以库的形式存在,供用户调用,所以,API代码可能是完全是用户空间代码,也有的API调用了系统调用。
常用的方法
Endswith()
Startwith()
Substring():子字符串
Equals()
equalsIgnoreCase()
indexOf()
Length()
replaceAll()
toUpperCase()
toLowerCase()
Intern()
字符串字面量在编译时被放到了字符串池中
临时生成的字符串在堆中
两者保存位置不同,访问地址自然不同
而==判断是否为“同一”东西,即内存一致
==是“同一性”判断,equals是“相等”性判断
三、题目分析总结:
1.Java中float和double只能表示小数的近似值,如float的0.1+0.8的结果不等于0.9。相比来说double只是比float精度高一点而已。
2.Java是强类型编程语言,变量声明之后其类型不会变,赋值时也只能赋类型兼容的值。
3.如果环境变量的【用户变量】中有一个 JAVA_HOME变量,而【系统变量】中也一个JAVA_HOME变量,在命令行中敲echo
%JAVA_HOME%时会显示【系统变量】中的值,因为系统变量优先级更高。X
解析:用户变量优先
4.f/else与switch的区别在于:if/else是基于boolean值的双分支,switch是基于整数、枚举、字符串的多分支
5.单一职责原则是程序设计最主要的原则之一,它对于方法和类的设计都有效。程序设计的入门指导原则!
6.Eclipse为调试专门提供了调试透视图。调试时,可以观察到程序的调用栈,可以看到方法内部变量的值
7.JDK是JavaSE的开发工具包
java包名采用小写字母
java方法名应该使用驼峰命名法
8.关于Java异常处理,说法正确的是 ABCD
A Java中的异常可以通过throws传递出去
B Java中的异常可以通过throw抛出
C Java中的异常可以通过catch捕获
D Java中的finally语句一定会被执行
9.请翻译以下单词:
Stack 栈、Heap 堆、
Refactor 重构、Source 源代码、
Constructor 构造函数、extends 继承的关键字
四、图解URL及URL的理解
http:// baidu.com :80 /path ?q=a #hash
协议 主机名 端口号 资源位置 Query String Hash Tag
1.协议:
对于操作系统来说,不同的协议关联着不同的应用程序
http/https -> 浏览器
tel -> 电话拨号程序
mailto -> 电子邮件
http——超文本传输协议资源
https——用安全套接字层传送的超文本传输协议
mailto——电子邮件地址
ldap——轻型目录访问协议搜索
file——当地电脑或网上分享的文件
news——Usenet新闻组
gopher——Gopher协议
telnet——Telnet协议
对于资源来说,不同的协议意味着不同的传输格式
URL 中的协议都是应用层协议
2.主机
构成:主机名 + 域名
主机名表示提供服务的一台服务器或一个服务器集群
www 百度提供的是网页搜索服务
Map 百度提供的是地图服务
域名 表示一个公司、机构、组织、个人等
一个域名下可以有N个主机
3.DNS
主机名.域名 通过DNS解析成IP地址
4.IP地址
本质上来说是一个整数
192.168.1.211(点分十进制转换格式,方便记忆)
实际是4个字节,是一个int值
网络上一个服务器/电脑的门牌号
5.端口号
一台电脑上有N个联网的程序,为了区分是哪个程序在收发数据包,需在数据包中用一个整数来区分不同的程序-----端口号
Short型的整型 16位的
端口的使用有一个并不严格的管理机制
众所周知的程序或服务,它们的端口号已经习惯被固定了
例如:Web服务:80端口
安全Web服务:433
FTP服务: 21
MySQL数据库服务: 3306
操作系统会把小的端口号(0~5000)保留下来,而大的端口号随机分配给程序使用
端口在内网与外网通信中,可以被NAT利用,用来区分内网中的计算机
6.查询字符串 QueryString
Key1 = value1&key2 = value2
URLEncode 这种方式把&=等特殊字符进行编码 %E2
编
0码方案,而非转义方案
查询字符串会传到服务端,并被服务器端接收和使用
7.Fragment/Hash 片段
只会被浏览器识别和利用
不会传到服务端
五、HTTP协议与寄信是类似的
B(主动,暗处) --> S(明处、被动)
不对等的通信结构
发消息:请求 Request
接收消息、处理并回应:响应 Response
HTTP消息报文 == 一封信/明信片
请求报文
请求行==信封上的地址
GET http://www.baidu.com HTTP/1.1
请求方法 URL(请求的资源) 协议和版本号
请求头 == 信封上的其他信息
Accept:text/html;*/*
Accept-Language:zh-CN;zh
请求头名:请求头值
部分请求头
请求头中不能有中文,如果非要写中文,请编码(URLEncoding)
Cookie:向服务端发送少量数据(用户偏好设置,用户身份标识)
User-Agent:将操作系统、浏览器等信息发送给服务器
Content-Type:表示能够发送什么格式的请求内容(内容格式)
Accept:表示能够接受什么格式的响应
请求体 ==信封上的信纸(有一些请求没有请求体,相当于寄明信片)
请求头的格式在Content-Type中标识出来
请求体最常用的格式
X-www-form-urlencoded
Key1 = value1&key2 = value2
multipart/form-data
上传文件的专用格式
json
{
Key :value,
Key2:value2
}
Xml
<data>
<key1>value1<key1>
<key2>value2<key2>
<data>
响应报文
响应行 ==信封
200 OK HTTP/1.1
状态码 状态描述 协议版本呢
响应头 ==信封上的其他信息
响应头名:响应头值
同样不能有中文(中文需要URLEncode)
部分响应头
Content-Type
Content-Length
Set-Cookie 给浏览器设置Cookie,设置后浏览会保存这个Cookie,下次请求的时候,会把Cookie再发给服务器
响应体 ==信纸(有一些响应也没有响应体)
Google Chrome 内核的浏览器或IE内核的浏览器按F12
开发者工具
1. HTTP请求头
accept:浏览器通过这个头告诉服务器,它所支持的数据类型。如:text/html, image/jpeg
accept-Charset:浏览器通过这个头告诉服务器,它支持哪种字符集。
accept-encoding:浏览器通过这个头告诉服务器,它支持哪种压缩格式。
accept-language:浏览器通过这个头告诉服务器,它的语言环境。
host:浏览器通过这个头告诉服务器,它想访问哪台主机。
if-modified-since:浏览器通过这个头告诉服务器,缓存数据的时间
referer:浏览器通过这个头告诉服务器,客户机是哪个页面来的(防盗链)。
Connection:浏览器通过这个头告诉服务器,请求完后是断开链接还是维持链接。
2. HTTP响应头
location:服务器通过这个头告诉浏览器跳到哪里。
server:服务器通过这个头告诉浏览器服务器的型号。
content-encoding:服务器通过这个头告诉浏览器数据的压缩格式。
content-length:服务器通过这个头告诉浏览器回送数据的长度。
content-language:服务器通过这个头告诉浏览器语言环境。
content-type:服务器通过这个头告诉浏览器回送数据的类型。
refresh:服务器通过这个头告诉浏览器定时刷新。
content-disposition:服务器通过这个头告诉浏览器以下载方式打开数据。
transfer-encoding:服务器通过这个头告诉浏览器数据是以分块方式回送的
以下三个表示服务器通过这个头告诉浏览器不要缓存
expires:-1
cache-control:no-cache
pragma:no-cache
3. HTTP响应状态码
100-199:表示成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程
200-299:表示成功接收请求并已完成整个处理过程,常用200
300-399:未完成请求,客户需进一步细化请求,常用302,307,304
400-499:客户端的请求有错误,常用404
500-599:服务器端出现错误,常用500
Firefox 菜单-->开发者-->网络
HTTP 工具1:
Telnet
默认需在控制面板--程序--添加删除windows功能
选中telnet安装
打开cmd命令行,把屏幕缓冲区调到最大值
Telnet www.zhiyou100.com 80
Ctrl + ] 开始回显
按回车进入编辑
GET/HTTP/1.1
HOST:www.zhiyou100.com
按2次回车,不能按退格键修改
准确地显示HTTP请求和响应报文
不适合发送复杂的请求
HTTP工具2
推荐使用Firefox中的HttpRequester
图形化,功能强大,可以很方便地设置复杂的请求报文
可以查看原始报文
很容易安装和使用(Chrome中也有类似插件,但需要科学上网)
六、HTML基本结构
<!DOCTYPE html > 文档类型声明
<html> 文档根标签
标签大多数成对出现,但也有但标签
<head> </head> 文档头,文档头的内容不会在【网页】上出现
文档头中的数据是被浏览器使用的
可以给浏览器指明网页的编码格式
可以给浏览器指示显示什么窗口标题
可以给浏览器指示网页的其他行为
<body> </body> 文档主体,body中的内容显示在网页中,除非它被隐藏掉 文字、图片、视频、音频、程序(Applet)、flash(Silverlight)...
网页又被称为超文本!
</html>
基本图文标签
标题h1~h6 head
段落 p paragraph
图片 img[src] image
超链接 a[href] anchor
块标签/行标签/行内块
块标签: 独占一行,后面不能显示其它标签(自带换行符)
可以设置宽度和高度 h1、p
行标签: 可与其它行标签共处一行,太长了,自动换行(不带换行符) 宽度和高度无效
a标签
行内块: 可与其它标签共片一行
但是可以设置宽度和高度 img标签
通用块标签: div
通用行标签: span
列表
有序列表 ordered list
ol>li*n n:指定生成n个li
无序列表 unordered list
ul>li*n
详情列表 details list
dl>(dt+dd)*3
表格
table>(tr>td*n)*m
合并单元格:rowspan = “2” 把2行合并
Colspan = “4” 把4列合并
表格线:border=“1”;
表单
接收用户的输入 input
text 普通文本
password 密码
tel 手机号
email 邮件
number 数字
radio 单选框
checkbox 复选框
submit 提交按钮
button 普通按钮
reset 重置按钮
<botton> 按钮
让用户选择--选择框select>option
选择框多选 <select multiple>
多行文本框 textarea
label 提示标签
fieldset 表单分组
上传文件 input[type = file]
存放图片 input[type = image ]
重要功能:发起HTTP请求
发起请求的条件如下:
form[action =提交地址][method =提交方法][enctype = multipart/form-data]
input[type = submit] submit按钮 <buttom>提交<button>
页面跳转(刷新)
数据的key有input\select\textarea的name属性决定
对于radio\checkbox多个选项共用一个key,就要求他们的name相等
<input type =”radio” name =”sex” value =“男”>
<input type =”radio” name =”sex” value = “女”>
流式布局
网页默认的布局方式
分块标签和行标签
块标签独占一(多)行
行标签可共享一(多)行
布局时,除遵守行和块的性质外
默认遵守从上到下,从左到右的排列方向
在上下方向上,尽可能少地占用空间
总结:与人类书写习惯相同版本
<iframe>
在页面中加载一个子页面
用链接控制iframe的加载内容:
在iframe 加上name属性
在a上target属性等于iframe标签的name属性值
样式表
在html文件中导入样式表文件
<link rel “stylesheet” href = 样式表文件的位置
<link>标签通常放到<head>标签中,否则页面太大时,可能会发生闪烁现象
样式语法
筛选器{
样式名:样式值; 注意符号都是英文的!
}
筛选器
控制样式影响的范围
标签筛选器 body{} h1{}
筛选器 == 标签名
id筛选器 #idValue{}
<p id = “idValue”>控制这里</p>
类筛选器 .className{}
<div class =”className className1 className3”></div>
<span class = “className”></span>
....class =”className”
/*body{
background-color:#456;
}*/
*{
/*计量尺寸 border-box 边框盒
Content-text 内容盒
内容 +内边距 = padding-box
内容 + 内边距 + 边框 =border-box
*/
box-sizing:border-box;
}
body span{
margin:0;
/*外边距
设置四个值
上右下左
设置两个值
上下左右
margin-top 上
margin-bottom 下
margin-left 左
margin-right 右
*/
padding:0px;
/*内边距
上右下左
padding-top 上
padding-bottom 下
padding-left 左
padding-right 右
*/
}
.red-text{
/*文本颜色*/
color:red;
font-size:24px;
font-style:italic;
/*字体*/
font-family: 微软雅黑;
font-weight:bold;
/*字体装饰 下划线 */
text-decoration:underline;
/*行高*/
line-height:100px;
/*段首缩进2em*/
text-indent:2em;
/*文本的水平对齐 */
text-align:center;
/*垂直对齐 单元格内起作用*/
vertical-align:middle;
}
#box span{
background-color:yellow;
}
#box{
/*边框线: 复合样式 线粗细 线型 颜色
border-width
border-style
border-color
*/
border:3px solid blueviolet;
padding:12px 20px;
height:300px;
width:600px;
}