jsp中的四个域对象和jstl中的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在对应为page(?),可是在servlet中,却找不到对应的对象。。。

scope="page"貌似对英语jsp的pageContext这个内置对象。。。


 EL 变量

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

因为我们并没有指定哪一个范围的username,所以它的默认值会先从Page 范围找,假如找不到,

再依序到Request、Session、Application范围。假如途中找到username,就直接回传,不再继续找下去,

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

属性范围(jstl名称)

EL中的名称

Page

PageScope

Request

RequestScope

Session

SessionScope

Application

ApplicationScope

我们也可以指定要取出哪一个范围的变量:

范例

说明

${pageScope.username}

取出Page范围的username变量

${requestScope.username}

取出Request范围的username变量

${sessionScope.username}

取出Session范围的username变量

${applicationScope.username}

取出Application范围的username变量

其中,pageScope、requestScope、sessionScope和applicationScope都是EL 的隐含对象,

由它们的名称可以很容易猜出它们所代表的意思,

例如:${sessionScope.username}是取出Session范围的username 变量。这种写法是不是比之前JSP 的写法:

String username =(String) session.getAttribute("username");容易、简洁许多.


你可能感兴趣的:(servlet)