HTTP: 通信协议 Hypertext Transfer Protocol (超文本传输协议) 网络中的两台主机交谈沟通的方式
A: 基于请求request和响应response
B: 无状态通信
HTTP的请求方式:
Get:向Server取url指定的资源大小限制
A:get/xxApp/document?file=凉官春的消失&user=Yc HTTP/1.1A :请求状态行:请求方式/URL?参数列表
HTTP版本:1.0非持久连
1.1持久连
B:请求标头
Header:发送到服务器的额外信息
User--Agent:------>>>浏览器类型
Accept--Language:en,用户浏览器的语句版本
使用Get形态发送请求:URL+参数会出现在地址栏中
post:在请求同时发布数据信息给server
1:信息体中的数据量无限制,大数据量传输成为可能
2:请求参数移至Body,不会出现在地址栏位上,安全性高。选择方式:<form method=”post/get”>默认get
<a href=URL.....>....超链接使用get
URL编码:
1:保留字符:URL中定义的保留字符:“:”,“/”, “?”, ”&”, ”=”, ”@”, “%”
在请求参数中的保留字符需要转化为16进制数值
java.net.URLLEncode:encode方法 编码
参数:字符串,编码格式
java.net.URLdencode:encode方法 编码
2:非ASCⅡ字符:中文
ASCⅡ字符:a~~~z~~~A......
utf-8,ASCⅡ编码使用1个字节(8位)编码兼容
Utf-8为Unicode编码一种形式,非等幅,不同的字符需要1~6 个字符存放。
GBK编码:一个汉字对应2个字节
GBK UTF-8
杨 %D1%EE %E6%9D%A8
解码:URLDecode ,decode
静态网页 动态网页
静态网页:请求服务器页面资源时,server不对网页文件做任何处理,直接把网页所有数据响应给client的Brower。
动态网页:服务器响应给client前,先依据client请求携带的参数或其他信息,以程序方式动态产生响应内容,最向传回给client.
A:静态 :HTML/JS B: 动态:jsp/srvlet
Servlet/jsp:部署在服务器端,向客户端提供服务的功能组件。
Servlet/jsp结构:
从具体实现来说,Web容器就是一组具有特殊功能的java程序,当Web容器接收到HTTP通信时,负责将HTTP通信协议中的原始数据转化成封装请求/响应信息的HTTPServletRequest/HttpServletRespones对象。
Web容器根据用户的请求URL,在自身所管理的服务组件查找对应的Servlet/jsp,为客户提供业务管理。
Servlet服务程序把处理结果数据封装在HttpServletResponse对象中,Web容器再次将响应对象response转换成HTTP协议中的响应数据发回给客户端浏览器。
客户端类里接口收到HTTP响应信息,把内容解释执行后显示在浏览页面,显示给客户。
Web容器对请求的管理是基于多线程技术的,换言之会为每个来访的HTTP请求分配一个线程(thread)来管理当次的请求数据,由于HTTP 的无状态特性,一旦响应完成,该线程被销毁。
而服务端组件servlet对象在Web容器中只会存在一个实例,因此是多个请求/线程并发访问同一个Servlet,基于并发安全的原因,应当尽可能的避免在这个服务程序中定义成员变量。
由于多线程中,每个线程在栈内存中都分配了属于自己的执行空间。用来维护相关数据,而servlet的服务方法中定义的局部变量会存在放在对应的线程的栈内存空间中,因此局部变量不存在线程安全问题。
Servlet和jsp:Servle和jsp本质就是一体两面的。
Jsp:从网页编辑者的角度,方便解决页面排布方向来解决问题、
Servlet:以Java程序定义程序逻辑