EL 表达式从0开始教会你

简介: EL 表达式从0开始教会你


EL 表达式

EL 表达式介绍

1. EL 表达式全称:Expression Language,是表达式语言

2. EL 表达式主要是代替 jsp 页面的表达式脚本<%=request.getAttribute("xx")%>

3. EL 表达式输出数据的时,比 jsp 的表达式脚本简洁

4. EL 表达式基本语法: ${key1}, 你可以理解就是一个语法糖

代码示例

1. 如果name是 null, request.getAttribute() 返回的是null字符串

2. 如果name是 null, ${name}, 返回的""

1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
2. <html>
3. <head>
4. <title>el表达式的快速入门</title>
5. </head>
6. <body>
7. <h1>el表达式的快速入门</h1>
8. <%
9.     request.setAttribute("name", "奥特曼");
10. %>
11. <%--
12.     1. 如果name是 null, request.getAttribute() 返回的是null字符串
13.     2. 如果name是 null, ${name}, 返回的""
14. --%>
15. <h1>jsp表达式脚本</h1>
16. 
17. 名字= <%=request.getAttribute("name") == null ? "": request.getAttribute("name")%><br/>
18. 
19. <h1>el表达式</h1>
20. 名字= ${name}<br/>
21. </body>
22. </html>

EL 表达式在输出 null 时,输出的是 ""

jsp 表达式脚本输出 null 的时,输出的是

EL 常用输出形式

EL 表达式常用输出 Bean 的普通属性、 数组属性、List 集合属性和 map 集合属性

EL 常用输出应用实例

代码演示

Book.java

1. import java.util.Arrays;
2. import java.util.List;
3. import java.util.Map;
4. 
5. public class Book {
6. 
7. private String name;//书名
8. private String[] writer;//作者
9. private List<String> reader;//读者
10. private Map<String, String> topics;//评讲
11. //alt+insert
12. 
13. 
14. public String getName() {
15. return name;
16.     }
17. 
18. public void setName(String name) {
19. this.name = name;
20.     }
21. 
22. public String[] getWriter() {
23. return writer;
24.     }
25. 
26. public void setWriter(String[] writer) {
27. this.writer = writer;
28.     }
29. 
30. public List<String> getReader() {
31. return reader;
32.     }
33. 
34. public void setReader(List<String> reader) {
35. this.reader = reader;
36.     }
37. 
38. public Map<String, String> getTopics() {
39. return topics;
40.     }
41. 
42. public void setTopics(Map<String, String> topics) {
43. this.topics = topics;
44.     }
45. 
46. @Override
47. public String toString() {
48. return "Book{" +
49. "name='" + name + '\'' +
50. ", writer=" + Arrays.toString(writer) +
51. ", reader=" + reader +
52. ", topics=" + topics +
53. '}';
54.     }
55. }

el_input.jsp

1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
2. <html>
3. <head>
4.     <title>el 表达式输出数据演示</title>
5. </head>
6. <body>
7. <h1>el 表达式输出数据演示</h1>
8. <%
9. //创建Book 对象,放入相关的属性
10. //private String name;//书名
11. //private String[] writer;//作者
12. //private List<String> reader;//读者
13. //private Map<String, Object> topics;//评讲
14.     Book book = new Book();
15.     book.setName("昆虫总动员");
16.     book.setWriter(new String[]{"jack", "tom"});
17.     ArrayList<String> readers = new ArrayList<>();
18.     readers.add("老王");
19.     readers.add("老李");
20.     book.setReader(readers);//放入readers
21. 
22. //创建topics
23.     HashMap<String, String> topics = new HashMap<>();
24.     topics.put("topic1", "这是我看过的最好的动画片");
25.     topics.put("topic2", "不错的电影~~");
26.     book.setTopics(topics);
27. 
28. //把book 放入到request域对象
29.     request.setAttribute("bookkey", book);
30. 
31. %>
32. book对象: ${bookkey}<br/>
33. book.name= ${bookkey.name}<br/>
34. book.writer= ${bookkey.writer}<br/>
35. book.writer[0]= ${bookkey.writer[0]}<br/>
36. 
37. book.readers= ${bookkey.reader}<br/>
38. book.readers第2个= ${bookkey.reader.get(1)}<br/>
39. book.readers第2个= ${bookkey.reader[1]}<br/>
40. 
41. book.topics= ${bookkey.topics}<br/>
42. book.topics第一个评论= ${bookkey.topics["topic1"]}<br/>
43. 
44. </body>
45. </html>

EL 运算操作

基本语法语法:

${ 运算表达式 }  语法:${ 运算表达式 }

关系运算

逻辑运算

算数运算

EL 的 empty 运算

1. empty 运算可以判断一个数据是否为空,如果为空,返回 true,否则返回 false

2. 以下几种情况为空

       ● 值为 null

       ● 值为空串的时

       ● 值是 Object 类型数组,长度为零

       ● list 集合,元素个数为零

       ● map 集合,元素个数为零

应用实例

empty.jsp

1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
2. <html>
3. <head>
4.     <title>el empty的运算</title>
5. </head>
6. <body>
7. <h1>el empty的运算</h1>
8. <%
9.     request.setAttribute("k1", null);
10.     request.setAttribute("k2", "");
11.     request.setAttribute("k3", new Object[]{});
12.     request.setAttribute("k4", new ArrayList<>());
13.     request.setAttribute("k5", new HashMap<>());
14. 
15.     request.setAttribute("score", 70);
16. %>
17. k1是否为空= ${empty k1}<br/>
18. k2是否为空= ${empty k2}<br/>
19. k3是否为空= ${empty k3}<br/>
20. k4是否为空= ${empty k4}<br/>
21. k5是否为空= ${empty k5}<br/>
22. 是否及格= ${score >= 60 ? "及格": "不及格"}
23. </body>
24. </html>

EL 的三元运算

1. 表达式 1?表达式 2: 表达式 3

2. 如果表达式 1 的值为真,返回表达式 2 的值,反之,返回表达式 3 的值。

应用实例

1. <%
2.         request.setAttribute("score", 90);
3. 
4. %>
5. 你的成绩为${score>=60?"及格":"不及格"}<br/>

EL 的 11 个隐含对象,可以直接使用

EL 获取四个特定域中的变量

应用实例

el_scope.jsp

1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
2. <html>
3. <head>
4. <title>演示el的四个常用的隐藏对象(域对象)</title>
5. </head>
6. <body>
7. <h1>演示el的四个常用的隐藏对象(域对象)</h1>
8. <%
9.     request.setAttribute("k1", "request-k1数据");
10.     pageContext.setAttribute("k1", "pageContext-k1数据");
11.     session.setAttribute("k1", "session-k1数据");
12.     application.setAttribute("k1", "application-k1数据");
13. %>
14. <h1>jsp脚本方式获取</h1>
15. request域中的k1= <%=request.getAttribute("k1")%><br/>
16. <h1>el方式来获取域对象的数据</h1>
17. request域中的k1= ${requestScope.k1}<br/>
18. pageContext域中的k1= ${pageScope.k1}<br/>
19. session域中的k1= ${sessionScope.k1}<br/>
20. application域中的k1= ${applicationScope.k1}<br/>
21. </body>
22. </html>

pageContext 对象介绍

应用实例

通过request对象来获取和HTTP协议相关的数据

  •    request.getScheme() 它可以获取请求的协议
  •    request.getServerName() 获取请求的服务器 ip 或域名
  •    request.getServerPort() 获取请求的服务器端口号
  •    getContextPath() 获取当前工程路径
  •    request.getMethod() 获取请求的方式(GET 或 POST)
  •    request.getRemoteHost() 获取客户端的 ip 地址
  •    session.getId() 获取会话的唯一标识
1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
2. <html>
3. <head>
4. <title>pageContext 对象的使用</title>
5. </head>
6. <body>
7. <h1>pageContext 对象的使用</h1>
8. <%--
9.     //通过request对象来获取和HTTP协议相关的数据
10.     request.getScheme() 它可以获取请求的协议
11.     request.getServerName() 获取请求的服务器 ip 或域名
12.     request.getServerPort() 获取请求的服务器端口号
13.     getContextPath() 获取当前工程路径
14.     request.getMethod() 获取请求的方式(GET 或 POST)
15.     request.getRemoteHost() 获取客户端的 ip 地址
16.     session.getId() 获取会话的唯一标识
17. 
18. 
19. --%>
20. <hr/>
21. <%--
22.     1.我们可以通过pageContext.request.xx 俩获取和http协议相关的信息
23.     2.相当于替代 request.getMethod()....
24. --%>
25. 协议: ${ pageContext.request.scheme }<br>
26. 
27. 服务器 ip:${ pageContext.request.serverName }<br>
28. 
29. 服务器端口:${ pageContext.request.serverPort }<br>
30. 
31. 工程路径:${ pageContext.request.contextPath }<br>
32. 
33. 请求方法:${ pageContext.request.method }<br>
34. 
35. 客户端 ip 地址:${ pageContext.request.remoteHost }<br>
36. 
37. 会话id :${ pageContext.session.id }<br>
38. 
39. <h1>使用jsp表达式脚本获取如上信息</h1>
40. 
41. ip地址: <%=request.getRemoteHost() %> <br>
42. 
43. <h1>使用el表达式形式获取信息-简化写法</h1>
44. <%
45.     pageContext.setAttribute("req", request);
46. %>
47. ip地址(简化获取): ${req.remoteHost} <br>
48. 
49. 获取请求方法(简化获取): ${req.method} <br>
50. </body>
51. </html>


目录
相关文章
|
7月前
|
C#
C逻辑运算符大全:揭秘代码中隐藏技能!
C逻辑运算符大全:揭秘代码中隐藏技能!
30 0
|
7月前
三元表达式使用方法以及如何使用三元表达式回显单选框
三元表达式使用方法以及如何使用三元表达式回显单选框
41 0
|
7月前
|
前端开发 JavaScript
【面试题】 JavaScript中高级语法--?? 表达式 的作用
【面试题】 JavaScript中高级语法--?? 表达式 的作用
|
缓存 JavaScript 测试技术
【Vue3 第三章】插值表达式 & 指令
【Vue3 第三章】插值表达式 & 指令
301 0
|
前端开发
前端知识案例90-javascript基础语法-区间 逻辑和界定符
前端知识案例90-javascript基础语法-区间 逻辑和界定符
62 0
前端知识案例90-javascript基础语法-区间 逻辑和界定符
|
前端开发
#yyds干货盘点 【React工作记录十】三元对按钮进行判断操作
#yyds干货盘点 【React工作记录十】三元对按钮进行判断操作
90 0
|
Java
EL中的基础操作符
EL中的基础操作符
61 0
|
JavaScript 前端开发
JavaScript入门第四章(运算符与表达式上 )
JavaScript入门第四章(运算符与表达式上 )
117 0
|
JavaScript 前端开发
JavaScript入门第五章(运算符与表达式下)
JavaScript入门第五章(运算符与表达式下)
89 0