Servlet: Servlet线程安全 & 状态管理
1 Servlet线程安全
<1> 服务器在收到请求之后,会启动一个线程来进行相应的请求处理
<2> 默认情况下,服务器为每个Servlet只创建一个对象实例。当多个请求访问同一个Servlet时,会有 多个线程访问同一个Servlet对象,此时就可能发生线程安全问题
<3> 多线程并发逻辑,需要使用synchronized对代码加锁处理,但尽量避免使用
2 状态管理
<1> Web程序基于HTTP协议通信,而HTTP协议是”无状态”的协议,一旦服务器响应完客户的请求之 后,就断开连接,而同一个客户的下一次请求又会重新建立网络连接
<2> 服务器程序有时是需要判断,是否为同一个客户发出的请求,比如客户的多次选购商品。因此,有必 要跟踪同一个客户发出的一系列请求
<3> 把浏览器与服务器之间多次交互,作为一个整体,将多次交互所涉及的数据保存下来,即状态管理
<4> 多次交互的数据状态可以在客户端保存,也可以在服务器端保存。状态管理主要分为以下两类:
客户端管理:将状态保存在客户端。基于Cookie技术实现
服务器管理:将状态保存在服务器端。基于Session技术实现