zoukankan      html  css  js  c++  java
  • JSP属性的四种保存范围(page request session application)

    JSP提供了四种属性的保存范围,分别为page、request、session、application

    其对应的类型分别为:PageContext、ServletRequest、HttpSession、ServletContext

    page范围:属性只在一个页面有效,页面跳转之后无效。

    可通过内置对象pageContext的setAttribute(name, value)方法设置属性,getAttribute(name)方法获取属性。

    pageContext是javax.servlet.jsp.PageContext抽象类类型

    <!-- 设置属性 -->
    <%
      pageContext.setAttribute("name", "leon");
    %>
    <!-- 获取属性 -->
    <%
      String str = (String) pageContext.getAttribute("name");
    %>

    request范围:属性在一个请求范围内有效,服务器跳转后<jsp:forword>有效,但客户端跳转后无效。

    可通过内置对象request的setAttribute(name, value)方法设置属性,getAttribute(name)方法获取属性

    request是javax.servlet.http.HttpServletRequest接口类型

    也可通过内置对象pageContext的setAttribute(name, value, scope)方法设置属性,setAttribute(name, value, scope)方法获取属性

    <!-- 设置属性 -->
    <%
      request.setAttribute("name", "James");
      pageContext.setAttribute("name", "james", pageContext.REQUEST_SCOPE)
    %>
    <!-- 获取属性 -->
    <%
      String str = (String) request.getAttribute("name");
      String str = (String) pageContext.getAttribute("name", pageContext.REQUEST_SCOPE())
    %>

    session范围:属性只在一个会话范围内有效,服务器跳转和客户端跳转都有效,但网页关闭重新打开后无效

    可通过内置对象session的setAttribute(name, value)方法设置属性,getAttribute(name)方法获取属性

    session是javax.servlet.http.HttpServletsession接口类型

    也可通过内置对象pageContext的setAttribute(name, value, scope)方法设置属性,getAttrubute(name, scope)方法获取属性

    <!-- 设置属性 -->
    <%
      session.setAttribute("name", "James");
      pageContext.setAttribute("name", "James", pageContext.SESSION_SCOPE)
    %>
    <!-- 获取属性 -->
    <%
      String str = (String) session.getAttribute("name");
      String str = (String) pageContext.getAttribute("name", pageContext.SESSION_SCOPE)
    %>

    application范围:属性在整个服务器上都有效,所有用户都可以使用,重启服务器后无效

    注意:如果设置过多的application属性范围会影响服务器的性能。

    可通过内置对象application的setAttribute(name, value)方法设置属性,getAttribute(name)方法获取属性

    application是javax.servlet.ServletContext接口类型

    也可通过内置对象pageContext.setAttribute(name, value, scope)方法设置属性,getAttribute(name, scope)方法获取属性

    <!-- 设置属性 -->
    <%
      application.setAttribute("name", "James");
      pageContext.setAttribute("name", "James", pageContext.APPLICATION_SCOPE)
    %>
    <!-- 获取属性 -->
    <%
      String str = (String) application.getAttribute("name");
      String str = (String) pageContext.getAttribute("name", pageContext.APPLICATION_SCOPE);
    %>

     移除属性

    可通过相应内置对象的removeAttribute(name)方法移除指定属性

    也可通过pageContext.removeAttribute(name, scope)方法移除指定属性

  • 相关阅读:
    你知道线程池是如何退出程序的吗?
    华为云GuassDB(for Redis)发布全新版本推出:Lua脚本和SSL连接加密
    分布式消息流平台:不要只想着Kafka,还有Pulsar
    新来的前端小姐姐问:Vue路由history模式刷新页面出现404问题
    1ms的时延,10Gbps速率…5G通信技术解读
    一分钟带你了解Huawei LiteOS组件开发指南
    资深Linux 系统管理员常用的15个很好用的Cron工作示例
    C语言中动态内存分配的本质是什么?
    Python连载8datetime包函数介绍 心悦君兮君不知
    Python连载7time包的其他函数 心悦君兮君不知
  • 原文地址:https://www.cnblogs.com/0820LL/p/9842507.html
Copyright © 2011-2022 走看看