[java][EL、JSTL、OGNL]:总结及区别

EL表达式:表达式语言

不是一种开发语言,是jsp中获取数据的一种规范

例如:

<%
User u = (User)pageContext.getAttribute("u");
%>

${u}
EL的具体功能
1、获取数据
EL表达式只能获取存在4个作用域中的数据
${u} 原理: pageContext.getAttribute("u");
------------------------------------------------------
例如:
在浏览器地址输入,表示传入一个参数test,值为123

URL:http://localhost:8888/Test/index.jsp?test=123
 
    ${test}
    ${requestScope.test}  
    <%request.getAttribute("test"); %>

以上代码均不能取出值
仅当 使用
<%
    request.setAttribute("test", "123");
 %>
赋值时内可以正常取出值
那么如何取出URL 中的test 的值呢?如下
  
    ${param.test}
    <%=request.getParameter("test") %>

均可取出URL中的test的值。。
结论:
${param.name} 等价于 request.getParamter("name"),这两种方法一般用于服务器从页面或者客户端获取的内容。

${requestScope.name} 等价于 request.getAttribute("name"),一般是从服务器传递结果到页面,在页面中取出服务器保存的值。

formData里的数据也是parameter的一部分
------------------------------------------------------
${u.name} == u.getName()方法
点(.) 运算符相当于调了getter方法,点后页面跟的是属性名。

<%
User u = (User)request.getAttribute("u");
out.print(u.getName());
%>

${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标签


标签库
Snip20181120_5.png
Snip20181120_6.png
Snip20181120_7.png

struts2中的标签类似JSTL

OGNL

1.取根中对象的属性,不使用#。
2.取contextMap中key的值,要使用#。


Snip20181120_8.png

Snip20181120_9.png

你可能感兴趣的:([java][EL、JSTL、OGNL]:总结及区别)