# JSP中scope域主要作用

JSP中scope域主要作用


在java bean的4种scope,其中三种在JSP和servlet中都有其对应的对象:
scope=”request” 对应于JSP的request,以及servlet的request
scope=”session” 对应于JSP的session,以及servlet的request.getSession()
scope=”application” 对应于JSP的application,以及servlet的this.getServletContext()
scope=”page”,在JSP在对应为jsp的pageContext这个内置对象,可是在servlet中,却找不到对应的对象。


EL

EL 存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为username的变量。

因为我们并没有指定哪一个范围的username,所以它的默认值会先从Page 范围找,假如找不到,再依序到Request、Session、Application范围。假如途中找到username,就直接回传,不再继续找下去,

但是假如全部的范围都没有找到时,就回传null,当然EL表达式还会做出优化,页面上显示空白,而不是打印输出NULL。

属性范围(jstl名称) EL中的名称
Page PageScope
Session SessionScope
Request RequestScope
Application ApplicationScope

范例 内容
${pageScope.username} 取出Page范围的username变量
${requestScope.username} 取出Request范围的username变量
${sessionScope.username} 取出Session范围的username变量
${applicationScope.username} 取出Application范围的username变量

在jsp上面,scope的使用

<c:if test="${1==1}" var="thisA" scope="request">
    <a href="#" >访问路径</a>
    ${thisA}
</c:if>

将该标签scope设为request,就是说它只能在request域中,才能找得到变量thisA。

<c:if test="${1==2}" var="thisA" >
    <a href="#" >访问路径</a>
    ${thisA}
</c:if>

<c:if test="${1==1}" var="thisA" scope="request">
    <a href="#" >访问路径</a>
    ${thisA}
</c:if>

举个例子,有这两个jstl,一个没有写scope,因此它的域是最小的page(默认),那么在使用el表达式的时候,会从page开始找thisA,找到了之后,后面的request就不找了,thisA的值就是test=${1==2}的值,即为false,因此后面结果就是false

猜你喜欢

转载自blog.csdn.net/shantuodan6973/article/details/78276049