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:
名字:
3.6、EL表达式中[]和.的区别
如果一个变量名中有特殊的字符,则应用使用[“名字”];
比如获取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 |
/或p | 除 | ${5 p 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 p 3 } \表示这个表达式不起作用
相关阅读
【Martin导读】信息图营销正成为一种热门的内容营销形式,信息图具有视觉化传播优势,易于被分享,拥有能够激起用户参与的潜力,这些特点
字面值:是一个不能改变的值,如数字、字符、字符串等。单引号内的是字符字面值,双引号内的是字符串字面值。字面值类型(literal type):算
SELINUX一款为了提高系统安全性的软件,但是会和好多服务都冲突,非常麻烦,大家都选择关闭!查看selinux状态:# getenforce Disabled
关于SetCapture() 和 ReleaseCapture()的用法
查MSND,对SetCapture()函数的说明为:“该函数在属于当前线程的指定窗口里设置鼠标捕获。一旦窗口捕获了鼠标,所有鼠标输入都针对
完成时间:2017/1/23 我的实现结果如下:(图一为原图,图二为边缘检测结果) 关于Sobel算子(英文部分来源于Wikipedia