概念:jsp的内置表达式语言,从jsp2.0开始,用来代替<%=…%>
格式
${el表达式主体}
作用:
- 执行运算
1.算术
${1 + 2}//3
2. 关系
${1 > 2}//false
3. 逻辑
${ (1 > 2) || (1 < 2) }//true
4. 三元表达式
${1 > 2 ? "1 > 2" : "1 < 2"}
5. +号不支持字串的拼接但是支持数字字符串的运算
${"1" + "2"}//3
- 获取java对象中的数据
这里注意:java的对象需要存在域中,获取对象属性直接.属性名即可,不管是不是public
<%
Student stu = new Student(1L, "小王", (short)18, (byte)1, "1388888888");
pageContext.setAttribute("stu", stu);
%>
姓名:${stu.name}//小王
性别:${SexEnum.values()[stu.sex].getDesc()}//这里使用了枚举没列出,男
手机号:${stu.mobile}//手机号
- 获取域中的数据
- 通过 ${域中属性名}方式获取值,作用域范围越小优先级越高。
- 可以使用el表达式内置对象获取指定域中的数据
- ${ 域内置对象[“域中属性名”] }
- ${ 域内置对象.域中属性名 }
EL表达式四大内置对象:
pageScope: 类似jsp内置对象pageContext
requestScope: 类似jsp内置对象request
sessionScope: 类似jsp内置对象session
applicationScope: 类似jsp内置对象application
<%
pageContext.setAttribute("key1","pageContext");
request.setAttribute("key1","request");
session.setAttribute("key1","session");
application.setAttribute("key1","application");
%>
域中的数据:${ key1 };//pageContext,因为范围最小
获取application域中的数据:${applicationScope.key1}//application
获取request域中的数据:${requestScope["key1"]}//request
- 获取常见的jsp内置对象
1.cookie内置对象
表达式:${cookie.cookie的key.value}
举例:
创建一个cookie:
Cookie usernameCookie = new Cookie("username", username);
设置生命周期:
usernameCookie.setMaxAge(60 * 60 * 24 * 7);
EL表达式获取cookie
${cookie.username.value}
2.pageContext可以获取其他的jsp内置对象
获取页面的根路径
${ pageContext.request.contextPath }
- 调用java的方法
还是以之前的枚举为例
${ RoleEnum.values()[onlineUser.role].getDesc() }
EL表达式的其他内置对象
- 请求参数相关内置对象
param
paramValues
获取表单提交的数据
params.username
//当请求参数是一个复选框时
paramValues.hobby
- 请求头相关内置对象
header
headerValues
- 初始化参数相关内置对象
initParam