page,request,session,application几个的优先级

xiaoxiao2021-02-27  242



                                      EL和jstl 1.从session中取数据 User user=(User)session.getAttribute("user") String sex=user.getSex(); 可以替换为 ${sessionScope:user.sex}

2.下面两种情况的.和[]是不能互换的   (1)要存取的数据名称包含了一些特殊字符(不是数字或者字母)时必须使用[]   (2)所取的值时动态时(一个变量)必须只能用[]

3.注意判断两个变量相等时 只能${变量1===变量2} 不能写成${变量1}==${变量2}

4.对象的作用域 如果在不同的作用域中有相同名称的对象,这时候要注意系统查找的顺序,页面中此时会按照先page-request-session-applicaion。

(1)同名变量在相同页面的session和application的优先级

这种情况如果当前页面不含有同名变量那么就是针对${param}在不同页面之间的取值的方式的。

如:

test1.jsp

 <body>     <%      session.setAttribute("param1","welcome session page1");      application.setAttribute("param1","welcome application page1");      %>  ${param1}<br>

//${param1}这里输出的是welcome session page1,说明同一个页面优先级 session> application   </body>

(2)同名变量在不同页面之间的session和application的优先级

test.jsp

 <body>     <%      session.setAttribute("param1","welcome session page1");      %>      <a href="test2.jsp">跳转页面</a>

    </body>

test2.jsp

<body>      <%      application.setAttribute("param1","welcome application this page");      %>    ${param1}输出的内容是<br>

//这里输出的是welcome session page1,结合(1)说明session或application

优先级(当前页面)application<session      </body>

所以综上所诉不管同一个页面或者不同页面优先级application<session

2.不同页面之间优先级page和session的关系

test.jsp

 <body>     <%      session.setAttribute("param1","welcome session page1");      %>      <a href="test2.jsp">跳转页面</a>

    </body>

test2.jsp

<body>      <%     session.setAttribute("param1","welcome session  this page");      %>    ${param1}输出的内容是<br>welcome session  this page说明page(当前页面)>session

这里换做application也是一样的结果,出现同名变量都是先从当前页面搜索然后同一个页面中再有session和appliance的优先级。

3.但是对指定了用sessionScope/applicaionScope的session和application之间是无效,(${sessionScope.param}/${applicationScope.param})因为 ${sessionScope.param}/${applicationScope.param}即使param同名也只会取到它们自己对应setAttribute的值。

test.jsp

 <body>     <%      session.setAttribute("param1","welcome session page1");      %>      <a href="test2.jsp">跳转页面</a>

    </body>

test2.jsp

<body>      <%     application.setAttribute("param1","welcome application this page");      %>    ${applicationScope.param1}输出的内容是<br>welcome application  this page说明用page ${applicationScope.param1}取值时(当前页面application)>session,同一个session或者application对象用${applicationScope.param1}也是一样的,(当前页面application/session)>application/session

4.知道还有一个page>request>session>application,知道怎么回事几个一起联系起来好难描述。

转载请注明原文地址: https://www.6miu.com/read-15632.html

最新回复(0)