[java][EL、JSTL、OGNL]:总结及区别
2018-11-20 本文已影响18人
阿不不不不
EL表达式:表达式语言
不是一种开发语言,是jsp中获取数据的一种规范
例如:
<!--jsp 脚本-->
<%
User u = (User)pageContext.getAttribute("u");
%>
<!--EL表达式-->
${u}
EL的具体功能
1、获取数据
EL表达式只能获取存在4个作用域中的数据
${u} 原理: pageContext.getAttribute("u");
------------------------------------------------------
例如:
在浏览器地址输入,表示传入一个参数test,值为123
URL:http://localhost:8888/Test/index.jsp?test=123
<body>
${test}
${requestScope.test}
<%request.getAttribute("test"); %>
</body>
以上代码均不能取出值
仅当 使用
<%
request.setAttribute("test", "123");
%>
赋值时<body/>内可以正常取出值
那么如何取出URL 中的test 的值呢?如下
<body>
${param.test}
<%=request.getParameter("test") %>
</body>
均可取出URL中的test的值。。
结论:
${param.name} 等价于 request.getParamter("name"),这两种方法一般用于服务器从页面或者客户端获取的内容。
${requestScope.name} 等价于 request.getAttribute("name"),一般是从服务器传递结果到页面,在页面中取出服务器保存的值。
formData里的数据也是parameter的一部分
------------------------------------------------------
${u.name} == u.getName()方法
点(.) 运算符相当于调了getter方法,点后页面跟的是属性名。
<!--jsp 脚本-->
<%
User u = (User)request.getAttribute("u");
out.print(u.getName());
%>
<!--EL表达式-->
${u.name}
------------------------------------------------------
属性导航
[]运算符:点能做的,它也能做; 它能做的,点不一定能做
${student.name}== ${student['name']} == ${student["name"]}
2、运算
empty
判断null,空字符串和没有元素的集合(即使集合对象本身不为null)都返回true
Snip20181120_3.png
三目运算
Snip20181120_4.png
JSTL
作用
使用JSTL实现JSP页面中逻辑处理。如判断、循环等。
1)在JSP页面添加taglib指令
<%@ taglib uri = "http://java.sun.com/sp/jstl/core" prefix="c"%>
2)使用JSTL标签
<c:if test=""></c:if>
标签库
Snip20181120_5.png Snip20181120_6.png Snip20181120_7.pngstruts2中的标签类似JSTL
OGNL
1.取根中对象的属性,不使用#。
2.取contextMap中key的值,要使用#。
Snip20181120_8.png
Snip20181120_9.png