Web开发中的四个域对象


简介

范围由小到大: page(jsp有效) request(一次请求) session(一次会话) application(当前web应用)

page : PageContext对象

request : HttpServletRequest对象

session : HttpSession对象

application : ServletContext对象


一、这4个对象的生命周期

生命周期就是指对象的创建到销毁的期间

  • page: jsp 页面被执行,生命周期开始,jsp 页面执行完毕 ,生命周期结束
  • request : 用户发送一个请求,开始,服务器返回响应,请求结束,生命周期结束
  • session : 用户打开浏览器访问,创建session(开始),session超时或被声明失效,该对象生命周期结束
  • application: web应用加载的时候创建(开始), web应用被移除或服务器关闭,对象销毁(结束)

二、四个域的作用范围

什么是域?为什么把这4个对象叫做域对象呢?
域: 即范围的意思

web中的域对象,可以存储对象,在作用范围内都可以取到
内部是Map集合的实现 Map<String, Object>

class PageContext {
    private Map attributes = new HashMap();
    private HttpSession session;

    public void setAttribute(String name, Object value) {
    attributes.put(name, value);
    }

    public Object getAttribute(String name) {
        attributes.get(name);
    }

    public void removeAttribute(String name) {
        attributes.remove(name);
        }
    } 
}
  • page: 只在当前jsp页面有效
  • request: 只在当前请求有效, 每次请求分别对应不同的request域对象
  • session: 默认情况下,同一个浏览器来访问有效(发送同一个sessionid)
  • session : 只在一次会话中有效,会话结束就无法取到数据了 (特殊情况,发送Cookie)
  • application : 在一个web应用中有效 (只要服务器不关,web应用不移除就可以取数据)

四个域对象的范围由小到大排列依次为: page request session application


三.哪种情况下用哪种域对象

原则: 四个域对象在选择的时候,能用范围小的绝不用范围大的

page: 数据只是暂时存在集合,在jsp页面的其他地方要用,用page(页面中自定义的map)

什么时候需要用map了,就用page

request:数据只是做显示的,看完了就没用了,就存request域

请求转发, Servlet 产生的处理结果(数据) 交给jsp显示

session: 数据给用户看完了,一会还要用,会话结束了就没用了

用户登陆,用户信息发给客户端看,看完了,一会访问别的页面还要看用户信息

购物车,购物成功了,给用户看购物车,待会随时可以查看购物车

请求重定向,因为是两次请求,第一次请求的数据,第二次请求还要看

application : 数据给一个用户用完了,别人还要用

聊天室,聊天记录,需要给所有的用户看

统计网站在线人数,所有人看到的应该是一个数

总结: 需要定义Map不如用page,请求转发Servlet带给jsp的数据存request
请求重定向带过去的数据存Session,全局的数据存application

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值