ServletContext、HttpSession、HttpServletRequest域对象比较:
域对象 | 创建 | 销毁 | 作用范围 | 应用场景 |
---|---|---|---|---|
ServletContext | 服务器启动 | 服务器正常关闭/项目从服务器移除 | 整个项目 | 记录网站访问次数,聊天室 |
HttpSession | 没有JSESSIONID这个cookie的时候,调 用request.getSession()方法 | session过期(默认闲置30分钟),或者调用session对象的invalidate()方法,或者服务器异常关闭 | 会话(多次请求) | 验证码校验, 保存用户登录状态等 |
HttpServletRequest | 来请求时 | 响应这个请求(或者请求已经接收了) | 一次请求 | servletA和jsp(servletB)之间数据传递(转发的时候存数据) |
三个域对象怎么选择?
一般情况下, 最小的可以解决就用最小的。
但是需要根据情况(eg: 重定向, 多次请求, 会话范围, 用session; 如果是转发,一般选择Request)