Servlet的一些概念
什么是Servlet?
答:简单来说,servlet是后台服务器的控制层的控制器,用来处理客户端发来的请求并且作出响应。
从客户端发送请求到服务器接收请求,之间发生了哪些事情?
答:首先客户端会把请求行(地址)、请求头、空行、和请求数据打包,发送到客户端。客户端在控制层(比如Servlet)接收到数据包后,开始解析数据,经过业务逻辑处理后,再打成数据包(状态行、消息报头、空行、响应正文)发送回客户端。
什么是请求头?请求头内有什么属性?
答:请求头是请求报文和响应报文中的一部分;
通用的请求头属性有
Date:表示消息产生的日期和时间
Connection:允许发送指定连接的选项,例如指定连接是连续的,或者指定“close”选项,通知服务器,在响应完成后,关闭连接
Cache-Control:用于指定缓存指令,缓存指令是单向的(响应中出现的缓存指令在请求中未必会出现),且是独立的(一个消息的缓存指令不会影响另一个消息处理的缓存机制)
请求报文的请求头中属性有:
Host:请求的主机名,允许多个域名同处一个IP地址,即虚拟主机
User-Agent:发送请求的浏览器类型、操作系统等信息
Accept:客户端可识别的内容类型列表,用于指定客户端接收那些类型的信息
Accept-Encoding:客户端可识别的数据编码
Accept-Language:表示浏览器所支持的语言类型
Connection:允许客户端和服务器指定与请求/响应连接有关的选项,例如这是为Keep-Alive则表示保持连接。
Transfer-Encoding:告知接收端为了保证报文的可靠传输,对报文采用了什么编码方式。
响应报文的请求头中属性有:
Location:用于重定向接受者到一个新的位置,常用在更换域名的时候
Server:包含可服务器用来处理请求的系统信息,与User-Agent请求报头是相对应的
实体报头用来定于被传送资源的信息,既可以用于请求也可用于响应。请求和响应消息都可以传送一个实体,
常见的实体报头为:
Content-Type:发送给接收者的实体正文的媒体类型
Content-Lenght:实体正文的长度
Content-Language:描述资源所用的自然语言,没有设置则该选项则认为实体内容将提供给所有的语言阅读
Content-Encoding:实体报头被用作媒体类型的修饰符,它的值指示了已经被应用到实体正文的附加内容的编码,因而要获得Content-Type报头域中所引用的媒体类型,必须采用相应的解码机制。
Last-Modified:实体报头用于指示资源的最后修改日期和时间
Expires:实体报头给出响应过期的日期和时间
什么是HTTP协议?
答:超文本传输协议,基于TCP/IP协议,作用于客户端-服务器之间的通信。
HTTP的特点?
答:
1、HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
2、HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。
3、HTTP是无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
HTTP的请求方式有哪些?
答:get和post
GET和POST有什么区别?
答:
1、对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
2、而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
3、也就是说GET请求,产生了一个TCP包,而POST请求,产生了两个TCP包。
4、GET比POST不安全,用GET的请求参数暴露在URL中。