javaweb:域对象的属性操作setAttribute(),getAttribute()及其作用范围

域对象的属性操作

和属性相关的方法

方法介绍

  1. Object getAttribute(String name)
    获取指定的属性
  2. Enumeration getAttributeNames();
    获取所有名字属性组成的Enumeration对象。
  3. removeAttribute(String name)
    移除指定的属性
  4. void setAttribute(String name,Object o);
    设置属性
  • 有这些方法的对象
    pageContext,request,session,application对象都有这些方法,也称之为域对象``

举例

jsp页面attr1的body写成如下部分:

<body>
      <%
           pageContext.setAttribute("pageContextAttr", "pageContextValue");
           request.setAttribute("requestAttr", "requestValue");
           session.setAttribute("sessionAttr", "sessionValue");
           application.setAttribute("applicationAttr", "applicationValue");
      %>
      
      <br> <br>
      pageContextAttr:<%= pageContext.getAttribute("pageContextAttr") %>
      <br> <br>
      requestAttr:<%= request.getAttribute("requestAttr") %>
      <br> <br>
      sessionAttr:<%= session.getAttribute("sessionAttr") %>
      <br> <br>
      applicationAttr:<%= pageContext.getAttribute("pageContextAttr") %>
</body>

javaweb:域对象的属性操作setAttribute(),getAttribute()及其作用范围

  从运行结果我们可以得到结论,这几个域对象都可以设置属性值,并且可以获取属性值,不仅可以获取到自己设置的属性,也可以获取到其他人设置的属性。

  • 举例2:
    我们在attr1.jsp中加入以下一个链接
    javaweb:域对象的属性操作setAttribute(),getAttribute()及其作用范围
    在attr2.jsp中的body部分写入和attr1.jsp类似的部分。
    javaweb:域对象的属性操作setAttribute(),getAttribute()及其作用范围
    我们运行attr2.jsp,可以得到以下结果
    javaweb:域对象的属性操作setAttribute(),getAttribute()及其作用范围
    为什么pageContext和requestAttr获得的值是空的呢?(applicationAttr那里是application获取的pagecontext的值,因此为空,实际application的属性值是可以跨越jsp传输的)
    我们得到了结论: pagecontext的作用范围当前jsp页面,request的作用范围是同一个请求,session的作用范围仅限于一次会话(浏览器打开到关闭为一次会话,在此期间会话不失效),application的作用范围限于当前WEB应用,是范围最大的属性作用范围,只要在一处设置属性,在其他各处的JSP和servlet都可以获取到

javaweb:域对象的属性操作setAttribute(),getAttribute()及其作用范围