zoukankan      html  css  js  c++  java
  • jsp jsp属性范围

    jsp提供了4中属性分别是

    当前页:一个属性只能在一个页面中取得,跳转淘其他页面无法取得。
    一次服务器请求:一个页面中设置的属性,只要经过了服务跳转,而跳转之后的页面可以继续取得
    一次回话:一个用户设置的内容,只要是此用户页面都可以访问
    上下文中:整个服务器上设置的属性,所有都可以访问
    
    属性的操作方法
    setAttribute(name,value)
    getAttribute(name)
    removeAttribute(name)
    

    page属性范围

      page属性范围相对好理解一些:在一个页面设置的属性,跳转到其他页面就无法访问了。但是在使用page属性范围的时候必须要注意,虽然习惯上将范围属性称为page属性,但是实际上操作的时候使用pageContext内置对象完成的。
    

    从该操作流程图上可以看出,第一个页面设置属性经过服务跳转到第二个页面以后,在第二个页面是无法取得第一个页面中设置的属性的。就好比现在坐着的桌子上有一只笔,但是一旦离开这张桌子,做到别的桌子上,笔就没有了。
    1) 在同一个页面中可以获取pageContext中设置的内容
    ​
    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Insert title here</title>
    </head>
    <body>
        <%
          pageContext.setAttribute("name", "我爱杭州");
        %>
        <%= pageContext.getAttribute("name") %> (输出信息--》我爱杭州)
    </body>
    </html>
    2) 在page中设置属性 然后 forword 到page2,在page2中无法获取pageContext中设置信息
    page.jsp
    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Insert title here</title>
    </head>
    <body>
        <% pageContext.setAttribute("name", "我爱杭州"); %>
    </body>
    <jsp:forward page="/WEB-INF/range/page2.jsp"></jsp:forward>
    </html>
    ​
    page2.jsp
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
    </head>
    <body>
        <%= pageContext.getAttribute("name") %>
    </body>
    </html>
    

    pageContext的属性设置

    pageContext,request,session,application,四种属性范围实际上都是通过pageContext范围来设置的
    pageContext继承了JspContext,在JspContext的setAttribute()方法如下:
    setAttribute(String name,Object value, int scope)
    这个setAttribute()方法如果右面不写int类型的SCOPE参数,则此参数默认为PAGE_SCOPE,如果传递过来的是int类型的参数REQUEST_SCOPE
    则此时的setAttibute()方法设置的就是request的属性范围。同样传递的是SESSION_SCOPE,APPLICATION_SCOPE,则表示session和application
    的属性范围
    

    request的属性

    rqequet属性范围表示在一次服务器跳转中有效,只是服务器,则设置的request属性可以一直传递下去。
    

    session属性范围

    session设置的属性,不管是如何跳转,都可以取得的。当然session只针对一个用户。
    session在一个页面上设置的属性,跳转(服务器跳转/客户端跳转)到其他页面之后,其他页面依然可以取得第一个页面上设置的属性。
    

    application属性范围

     application属性范围是服务器上设置的一个属性,所以一旦设置之后,任何用户都可以浏览到此属性
    

  • 相关阅读:
    spring对事务的配置
    Mysq中的流程控制语句的用法
    mysql存储过程和常用流程控制
    ztree更换节点图标
    eclipse调试(debug)的时候,出现Source not found,Edit Source Lookup Path,一闪而过
    myeclipse如何设置或关闭断点调试自动跳入debug模式
    Druid数据源对数据库访问密码加密好麻烦
    js中if()条件中变量为false的情况
    TFS2008 安装图解(详细版本)(转载)
    数字格式化
  • 原文地址:https://www.cnblogs.com/ssgao/p/8866779.html
Copyright © 2011-2022 走看看