JavaWeb(EL表达式学习笔记)

EL表达式

一、什么是EL:
1.1、EL
– Expression Language 表达式语言
1.2、语法:
${EL表达式}
1.3、与JSP表达式区别:
JSP中使用的变量是脚本变量,而EL中的变量都是作用域变量,要操作的变量都在作用域中。

二、EL表达式的作用
2.1、用于表达式的运算。如:加、减、乘、除。
2.2、用于从作用域中取出数据

三、获取数据
3.1、在四个域中查找:比如在一个域中设置了“color”属性,现在获取
EL: ${color},功能与pageContext.findAttribute(“color”) 一样。
3.2、指定域获取数据

作用域 Java代码 EL的写法
页面域 pageContext.getAttribute(“color”); ${pageScope.color}
请求域 request.getAttribute(“color”); ${requestScope.color}
会话域 session.getAttribute(“color”); ${sessionScope.color}
上下文域 application.getAttribute(“color”); ${applicationScope.color}
自动查找 pageContext.findAttribute(“color”); ${color}

3.3、EL中11个隐式对象

隐含对象名称 描述
pageContext 代表页面上下文对象,可以在页面上调用get方法
pageScope 代表页面域中的Map对象
requestScope 代表请求域中的Map对象
sessionScope 代表会话域中的Map对象
applicationScopeScope 代表上下文域中的Map对象
param 得到表单提交参数,功能与:request.getParameter()相同
paramValues 得到表单提交参数,功能与:String[] request.getParameterValues()相同
header 得到请求头的数据 request.getHeader(“名字”)
headerValues 得到请求头的数据 request.getHeaders(“名字”)
cookie 得到请求的Cookie信息
initParam 相当于config.getInitParamter()得到web.xml中配置的参数

3.4、pageContext调用get的方法

作用 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}

3.5、得到Cookie中的值:
先通过EL得到指定cookie的对象,再通过name和value得到具体的名字和值
<%
Cookie c = new Cookie(“man”,”jack”);
response.addCookie(c);
%>
读取Cookie:
名字: cookie.man.name< {cookie.man.value } <%– 调用 cookie.getValue() –%>
3.6、EL表达式中[]和.的区别
如果一个变量名中有特殊的字符,则应用使用[“名字”];
比如获取header中host属性,一共有两种写法:
header[host] {header.host }

若获取user-agent属性,只能使用中括号
${header[“user-agent”]}

四、EL表达式获取不同类型的数据
4.1获取JavaBean的属性值

 
<%
//创建一个对象
Student stu = new Student(“张三”, 20);
stu.setMale(true);
//把对象放到域
pageContext.setAttribute(“a”, stu);
%>
姓名:${a.name} 年龄:${a.age} 性别:${a.male}

4.2获取数组中的值

 
<%
String[] arr = {“aaa”,”bbb”,”cccc”};
pageContext.setAttribute(“arr”, arr);
%>
取数组中的元素:
${arr[0]}
${arr[1]}
${arr[2]}

4.3获取Map中的值

 
<%
map.put(“n1”, “猪八戒”);
map.put(“n2”, “唐僧”);
map.put(“n3”, “孙悟空”);
//放在请求域中
request.setAttribute(“map”, map);
%>
${map.n1}
${map[“n2”]}
${map.n3}

4.4输出List中指定索引位置的元素

 
<%
book.add(“水浒传”);
book.add(“西游记”);
book.add(“红楼梦”);

session.setAttribute(“books”, book);
%>
${books[0] }

${books[1] }

${books[2] }

五、EL中使用表达式
5.1算术表达式 :

算术运算符 说明 范例 结果
+ ${1+1} 2
- ${2-1} 1
* ${1*1} 1
/或div ${5 div 2} 2.5
%或mod 取余 ${5 mod 2} 1

5.2比较表达式

关系运算符 说明 范例 结果
==或 eq 等于(equal) ${1 eq 1} true
!= 或 ne 不等于(not equal) ${1 != 1} false
< 或 lt 小于(Less than) ${1 lt 2} true
<=或 le 小于等于(Less than or equal) ${1 <= 1} true
> 或 gt 大于(Greater than) ${1 > 2} false
>=或 ge 大于等于(Greater than or equal) ${1 >=1} true

5.3逻辑表达式 :

逻辑运算符 说明 范例 结果
&& 或 and 交集(与) ${A and B} true / false
|| 或 or 并集(或) ${A || B } true / false
! 或 not ${not A} true / false

5.4三元运算:

 
${表达式?真:假}

5.5判空表达式:
5.5.1语法:

 
${empty 变量名} 判断变量名是否为空或空串,如果是,则返回true

5.5.2作用:
1)判断一个变量是否为null
2)判断一个字符串是否是空串
3)判断一个集合是否有元素
<%
request.setAttribute(“num”, 5);
request.setAttribute(“str”, “”);
//创建一个集合
ArrayList list = new ArrayList();
pageContext.setAttribute(“list”, list);
%>
1) 创建一个变量是否为null
${empty num}
2) 创建一个字符串是否是空串
${empty str}
3) 创建一个集合是否有元素
${empty list }

5.6EL表达式的启用和禁用
5.6.1页面禁用
isELIgnored=”true” 忽略EL表达式,EL不起作用。
5.6.2 EL的转义
\ ${5 div 3 } \表示这个表达式不起作用

你可能感兴趣的:(javaweb)