1.http协议 TCP/IP4层模型
应用层、传输层、网络层、网络接口层
2.http协议的主要特点:
遵循请求/响应模型:支持客户端/服务器端模型
无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户端的请求,并受到客户的应答后,即断开连接。
无状态:http是无状态协议,状态:两次请求响应之间没有关系
3.servlet生命周期:
当浏览器向服务器发送第一个请求时,服务器将会自动创建一个Servlet实例,并调用它的init方法完成初始化,接着服务器端会产生一个新的线程,并且让它调用Servlet的service()方法。service()方法根据收到的客户端请求类型,决定调用doGet()还是doPost()方法完成服务阶段,最后会调用servlet对象的destroy()方法用于释放资源。
4.web容器的作用:
1)servlet生命周期管理(产生和销毁servlet,并调用相关方法)
2)通信支持
3)多线程支持(线程创建、线程启动、线程运行、线程同步)
4)jsp支持
5)处理安全性
5.请求转发和重定向的区别:
1)重定向是客户端浏览器完成,而请求转发是服务器端完成
2)采用重定向浏览器URL地址会改变,而请求转发则不会
3)重定向是二次及以上请求/响应,而请求转发只有一次请求响应
6.ServletContext应用上下文 (存全局只读对象)
对于整个web应用,只有一个应用上下文对象,而且在web应用中所有地方都可以访问它。
应用上下文对象由web容器创建并实例化,是线程不安全的。当web容器关闭,会销毁引用上下文对象。建议引用上下文对象尽量保存少量的只读数据。
7.Session:(保存在服务端)
Session对象用于维护与一个客户的会话状态。Session对象在用户会话期间存在,只能在处理属于同一个session的请求的线程中被访问,因此session对象理论上是线程安全的。session对象超过不活动时长则自动销毁,也可以手动强制销毁。
8.Request:
用于一次客户端请求过程。对于每一个请求由一个线程来执行,都会创建一个新的Request对象,它是线程绝对安全的。
三大对象的共同点:都可以用于存取属性(数据),拥有相同的属性操作方法。
三大对象作用域大小的比较:
ServletContext对象>Session对象>Request对象
三个对象存活时间长短的比较:
ServletContext对象>Session对象>Request对象
三个对象对资源消耗的比较:
ServletContext对象>Session对象>Request对象
三个对象线程的安全性比较:
引用上下文对象不安全
Session对象理论上安全
Request对象绝对安全
9.Cookie(保存在客户端)
cookie的缺点:
1.不安全
2.客户端可以禁用cookie