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>