在JSP中访问模型对象是通过EL表达式的语法来表达。所有EL表达式的格式都是以“
${}
”表示。例如,${userinfo}
代表获取变量userinfo
的值。
当EL表达式中的变量不给定范围时,则默认在page
范围查找,然后依次在request、session、application
范围查找。也可以用范围作为前缀表示属于哪个范围的变量,例如:${pageScope. userinfo}
表示访问page
范围中的userinfo
变量。
- EL表达式取值:就是通过调用get方法实现。
${对象名(如user对象).属性名(Model必须有get方法)}
1、[ ]与.运算符
- EL 提供“.“和“[ ]“两种运算符来存取数据。
${user.name}相当于${user["name"]}
属性名称
中包含一些特殊字符,就要使用[""]
。动态取值
时,就要使用“[ ]“。${sessionScope.user[data]}中data 是一个变量
2、属性范围
属性范围 | 在EL中的名称 | 定义 |
---|---|---|
Page | PageScope | 将页面范围的变量名称映射到其值。${PageScope. xxx} |
Request | RequestScope | 将请求范围的变量名称映射到其值。${RequestScope. xxx} |
Session | SessionScope | 将会话范围的变量名称映射到其值。${sessionScope. xxx} |
Application | ApplicationScope | 将应用程序范围的变量名称映射到其值。${ApplicationScope. xxx} |
- EL取值会依序从Page、Request、Session、Application范围查找。途中找到,不再继续找下去。
- cookie:cookie 中有名称为name的值,EL取值为
${cookie.name }
3、pageContext
作用 | JSP表达式 | EL的写法 |
---|---|---|
当前工程路径 | <%=request.getContextPath() %> | ${pageContext.request.contextPath} |
请求资源路径 | <%=request.getContextURL() %> | ${pageContext.request.contextURL} |
访问者的IP | <%=request.getRemoteAddr() %> | ${pageContext.request.remoteAddr} |
当前会话的ID | <%=request.getSession().getId() %> | ${pageContext.request.session.id} |
4、操作符
术语 | 定义 |
---|---|
算术型 | +、-(二元)、*、/、div、%、mod、-(一元) |
逻辑型 | and、&&、or、||、!、not |
关系型 | ==、eq、!=、ne、<、lt、>、gt、<=、le、>=、ge |
空 | empty 空操作符是前缀操作,可用于确定值是否为空 |
条件型 | A ?B :C。根据 A 赋值的结果来赋值 B 或 C |
5、特别强调
- 注意
<%@ page isELIgnored="true" %>
表示是否禁用EL语言。
TRUE
表示禁止.FALSE
表示不禁止.JSP2.0中默认的启用EL语言。- 全局禁用EL表达式,在web.xml中进行如下配置:
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<el-ignored>true</el-ignored>
</jsp-property-group>
</jsp-config>
6、实例