# JSP中scope域主要作用

JSP中的scope域主要用于管理java bean的生命周期,包括request、session、application和page四个级别。request对应请求范围,session对应会话范围,application对应应用范围,而page则在JSP中对应pageContext对象。EL表达式在查找变量时,按照page、request、session、application的顺序,找到第一个匹配的变量值即停止查找。示例中展示了scope在jsp页面上的应用,未指定scope时,默认从page开始查找变量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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中的名称
PagePageScope
SessionSessionScope
RequestRequestScope
ApplicationApplicationScope

范例内容
${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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值