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)方法移除指定属性

  • 相关阅读:
    心态--编程+成长
    【Oracle】容易犯的错误和技巧集合
    【WPF】DataGrid的Row样式设置
    【WPF】给TextBox添上Label
    【Oracle】异常信息的加工处理
    【.Net 】Json和Xml解析
    【Win32 API】利用SendMessage实现winform与wpf之间的消息传递
    【WCF】利用WCF实现上传下载文件服务
    【Oracle】实现Oracle数据库对象的一键升级
    感触
  • 原文地址:https://www.cnblogs.com/0820LL/p/9842507.html
Copyright © 2011-2022 走看看