ServletContext ,ServletRequest, HttpSession 接口范围对比
* 以上三个接口都属于范围对象
- ServletContext application 是应用范围 一个应用多用户
- HttpSession session 是会话范围 一个会话多次请求
- ServletRequest request 是请求范围 从浏览器发送请求到服务器响应并返回请求内容,浏览器将服务器返回的数据渲染完成,代表一次请求。
- application > session > request
1. application 可以夸会话(用户)共享数据,不同的Session之间可以共享同一数据,也就是不同的用户之间可以共享数据。
2. session 可以跨请求传递数据, 但是这些请求必须在一个会话中, 也就是只能在同一个用户的会话中共享数据,不能多用户共享数据。
3. request 可以跨Servlet共享数据,但这些sevlet必须在同一个请求之中【使用转发】,重定向则不可以共享。
* 使用原则:在使用中由小到大尝试,优先使用小范围。
例如:登录成功的状态
- 登录成功之后需要将登录成功的状态保存起来,该状态可以保存在Session对象中。
- 但是登录状态不能保存在request对象中,因为一次请求对应着一个新的request对象
- 登录成功状态也不能保存在application对象中,因为登录成功的状态是属于个人用户会话级别的状态,不能所有用户共享的。