EL表达式

EL表达式

   jsp的核心语法:jsp表达式<%=  %>  和jsp脚本<%    %>
   jsp开发原则:尽量在jsp页面中少写甚至布鞋java代码。使用EL表达式替换掉jsp表达式。

EL表达式作用:向浏览器输出域对象中的变量表达式计算的结果。

语法:${域对象中的变量或表达式}

        1.输出基本数据类型变量

                1.1 从4个域对象中获取

                       ${域对象中的变量 }
                    例如:
  1. <body>
  2. <%
  3. String name1 = "变量中的数据";
  4. pageContext.setAttribute("name2", "page域中的数据");
  5. pageContext.setAttribute("name3", "request域中的数据",pageContext.REQUEST_SCOPE);
  6. session.setAttribute("name4", "session域中的数据");
  7. application.setAttribute("name5", "application域中的数据");
  8. %>
  9. <hr/>
  10. jsp表达式:<%=pageContext.findAttribute("name1") %><br/>
  11. jsp表达式:<%=pageContext.findAttribute("name2") %><br/>
  12. jsp表达式:<%=pageContext.findAttribute("name3") %><br/>
  13. jsp表达式:<%=pageContext.findAttribute("name4") %><br/>
  14. jsp表达式:<%=pageContext.findAttribute("name5") %><br/>
  15. <hr/>
  16. EL表达式替换jsp表达式:${name1}<br/>
  17. EL表达式替换jsp表达式:${name2}<br/>
  18. EL表达式替换jsp表达式:${name3}<br/>
  19. EL表达式替换jsp表达式:${name4}<br/>
  20. EL表达式替换jsp表达式:${name5}<br/>
  21. <hr/>
  22. <%-- ${name3} 等价于
  23. pageContext.findAttribute(name3);
  24. 自动在四个域中搜索数据, 查询顺序: page -> request -> session域- > context域(application域)
  25. --%>
  26. </body>

                1.2指定域对象中获取

                        ${域.变量}
                       域范围:pageScope/requestScope/sessionScope/applicationScope
                    例如:
  1. <body>
  2. <%
  3. String name1 = "变量中的数据";
  4. pageContext.setAttribute("name2", "page域中的数据");
  5. pageContext.setAttribute("name3", "request域中的数据",pageContext.REQUEST_SCOPE);
  6. session.setAttribute("name4", "session域中的数据");
  7. application.setAttribute("name5", "application域中的数据");
  8. %>
  9. <hr/>
  10. EL表达式指定域获取:${pageScope.name2 }<br/>
  11. EL表达式指定域获取:${requestScope.name3 }<br/>
  12. EL表达式指定域获取:${sessionScope.name4 }<br/>
  13. EL表达式指定域获取:${applicationScope.name5 }<br/>
  14. <hr/>
  15. <%-- ${requestScope.name3 } 等价于
  16. pageContext.getAttribute(name3, pageContext.REQUEST_SCOPE)
  17. --%>
  18. jsp表达式指定域获取:<%=pageContext.getAttribute("name2", pageContext.PAGE_SCOPE) %><br/>
  19. jsp表达式指定域获取:<%=pageContext.getAttribute("name3", pageContext.REQUEST_SCOPE) %><br/>
  20. jsp表达式指定域获取:<%=pageContext.getAttribute("name4", pageContext.SESSION_SCOPE) %><br/>
  21. jsp表达式指定域获取:<%=pageContext.getAttribute("name5", pageContext.APPLICATION_SCOPE) %><br/>
  22. </body>
   整体Demo:   
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"
  2. session="true"
  3. %>
  4. <%
  5. String path = request.getContextPath();
  6. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  7. %>
  8. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  9. <html>
  10. <head>
  11. <base href="<%=basePath%>">
  12. <title>My JSP 'el.jsp' starting page</title>
  13. <meta http-equiv="pragma" content="no-cache">
  14. <meta http-equiv="cache-control" content="no-cache">
  15. <meta http-equiv="expires" content="0">
  16. <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  17. <meta http-equiv="description" content="This is my page">
  18. <!--
  19. <link rel="stylesheet" type="text/css" href="styles.css">
  20. -->
  21. </head>
  22. <body>
  23. <%
  24. String name1 = "变量中的数据";
  25. pageContext.setAttribute("name2", "page域中的数据");
  26. pageContext.setAttribute("name3", "request域中的数据",pageContext.REQUEST_SCOPE);
  27. session.setAttribute("name4", "session域中的数据");
  28. application.setAttribute("name5", "application域中的数据");
  29. %>
  30. <hr/>
  31. jsp表达式:<%=pageContext.findAttribute("name1") %><br/>
  32. jsp表达式:<%=pageContext.findAttribute("name2") %><br/>
  33. jsp表达式:<%=pageContext.findAttribute("name3") %><br/>
  34. jsp表达式:<%=pageContext.findAttribute("name4") %><br/>
  35. jsp表达式:<%=pageContext.findAttribute("name5") %><br/>
  36. <hr/>
  37. EL表达式替换jsp表达式:${name1}<br/>
  38. EL表达式替换jsp表达式:${name2}<br/>
  39. EL表达式替换jsp表达式:${name3}<br/>
  40. EL表达式替换jsp表达式:${name4}<br/>
  41. EL表达式替换jsp表达式:${name5}<br/>
  42. <hr/>
  43. <%-- ${name3} 等价于
  44. pageContext.findAttribute(name3);
  45. --%>
  46. EL表达式指定域获取:${pageScope.name2 }<br/>
  47. EL表达式指定域获取:${requestScope.name3 }<br/>
  48. EL表达式指定域获取:${sessionScope.name4 }<br/>
  49. EL表达式指定域获取:${applicationScope.name5 }<br/>
  50. <hr/>
  51. <%-- ${requestScope.name3 } 等价于
  52. pageContext.findAttribute(name3);
  53. --%>
  54. jsp表达式指定域获取:<%=pageContext.getAttribute("name2", pageContext.PAGE_SCOPE) %><br/>
  55. jsp表达式指定域获取:<%=pageContext.getAttribute("name3", pageContext.REQUEST_SCOPE) %><br/>
  56. jsp表达式指定域获取:<%=pageContext.getAttribute("name4", pageContext.SESSION_SCOPE) %><br/>
  57. jsp表达式指定域获取:<%=pageContext.getAttribute("name5", pageContext.APPLICATION_SCOPE) %><br/>
  58. </body>
  59. </html>
Student类: 
  1. package com.cn.entity;
  2. public class Student {
  3. private int id;
  4. private String name1;//注意这里是name1
  5. private char sex;
  6. private int age;
  7. public int getId() {
  8. return id;
  9. }
  10. public void setId(int id) {
  11. this.id = id;
  12. }
  13. public String getName() {//注意这里是getName
  14. return name1;
  15. }
  16. public void setName(String name) {
  17. this.name1 = name;
  18. }
  19. public char getSex() {
  20. return sex;
  21. }
  22. public void setSex(char sex) {
  23. this.sex = sex;
  24. }
  25. public int getAge() {
  26. return age;
  27. }
  28. public void setAge(int age) {
  29. this.age = age;
  30. }
  31. public Student(int id, String name, char sex, int age) {
  32. super();
  33. this.id = id;
  34. this.name1 = name;
  35. this.sex = sex;
  36. this.age = age;
  37. }
  38. }
效果:

        2.输出对象的属性值

             ${对象.XXXX}    .XXXX相当于 .getXXXX()方法
             注意:其中,XXXX为对象对应类中属性的get方法getXXXX()的XXXX的小写,而不是属性名。
            否则会出现如下异常:

 
             例如:
  1. <%@ page
  2. language="java"
  3. import="java.util.*, com.cn.entity.Student"
  4. pageEncoding="UTF-8"
  5. %>
  6. <%
  7. String path = request.getContextPath();
  8. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  9. %>
  10. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  11. <html>
  12. <head>
  13. <base href="<%=basePath%>">
  14. <title>My JSP 'el2.jsp' starting page</title>
  15. <meta http-equiv="pragma" content="no-cache">
  16. <meta http-equiv="cache-control" content="no-cache">
  17. <meta http-equiv="expires" content="0">
  18. <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  19. <meta http-equiv="description" content="This is my page">
  20. <!--
  21. <link rel="stylesheet" type="text/css" href="styles.css">
  22. -->
  23. </head>
  24. <body>
  25. <%
  26. //保存对象数据
  27. Student stu = new Student(001, "木丁西", '男', 24);
  28. //放入域对象中
  29. pageContext.setAttribute("stu", stu);
  30. %>
  31. <%-- 使用el表达式获取对象--%>
  32. 学生对象:${stu}<br/>
  33. 编号:${stu.id}<br/><%--注意这里的.id,并不是调用属性(Student类中,属性私有的private),而是调用get方法getId()--%>
  34. 姓名:${stu.name }<br/>
  35. 性别:${stu.sex }<br/>
  36. 年龄:${stu.age }<br/>
  37. <hr/>
  38. <h3>等价于:</h3>
  39. 学生对象:<%=(Student)pageContext.getAttribute("stu") %><br/>
  40. 编号:<%=((Student)pageContext.getAttribute("stu")).getId() %><br/>
  41. 编号:<%=((Student)pageContext.getAttribute("stu", pageContext.PAGE_SCOPE)).getId() %><br/>
  42. 编号:<%=((Student)pageContext.getAttribute("stu", pageContext.PAGE_SCOPE)).getName() %><br/>
  43. 姓名:<%=((Student)pageContext.getAttribute("stu")).getName() %><br/>
  44. 性别:<%=((Student)pageContext.getAttribute("stu")).getSex() %><br/>
  45. 年龄:<%=((Student)pageContext.getAttribute("stu")).getAge() %><br/>
  46. <%--
  47. ${stu.id} 等价于
  48. <%=((Student)pageContext.getAttribute("stu", pageContext.PAGE_SCOPE)).getId() %>
  49. --%>
  50. </body>
  51. </html>
    效果如下:

     3.输出集合对象

     获取集合对象:${List集合对象名}
     获取List集合中的第index个对象:${List集合对象名[索引值]  }     注意:这里的中括号[索引值]等价于调用list.get(索引值)方法
    (假如List集合中存储的值为对象)获取List集合中的第index个对象中的属性值:${List集合对象名[index].xxx}  注意:注意这里的.XXX,并不是调用第index个对象中的属性名,而是调用该对象的get方法getXxx()中Xxx的小写xxx
    
   获取Map集合中对应key值的value值:${Map集合对象名[key]  }         注意:[key]相当于调用了get(key)方法
(假如Map集合中存储的值为对象)获取Map集合中key值对应的的对象中的属性值:${Map集合对象名[key].xxx}   

Demo如下:
  1. <%@ page
  2. language="java"
  3. import="java.util.*, com.cn.entity.Student"
  4. pageEncoding="UTF-8"%>
  5. <%
  6. String path = request.getContextPath();
  7. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  8. %>
  9. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  10. <html>
  11. <head>
  12. <base href="<%=basePath%>">
  13. <title>My JSP 'el3.jsp' starting page</title>
  14. <meta http-equiv="pragma" content="no-cache">
  15. <meta http-equiv="cache-control" content="no-cache">
  16. <meta http-equiv="expires" content="0">
  17. <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  18. <meta http-equiv="description" content="This is my page">
  19. <!--
  20. <link rel="stylesheet" type="text/css" href="styles.css">
  21. -->
  22. </head>
  23. <body>
  24. <hr/><hr/>
  25. <h1>EL表达式获取List集合对象</h1>
  26. <%
  27. //创建Student对象
  28. Student stu1 = new Student(1, "木丁西", '男', 24);
  29. Student stu2 = new Student(2, "小龙女", '女', 14);
  30. Student stu3 = new Student(3, "张馨予", '女', 28);
  31. Student stu4 = new Student(4, "刘先生", '男', 35);
  32. //创建集合对象
  33. List<Student> list = new ArrayList();
  34. list.add(stu1);
  35. list.add(stu2);
  36. list.add(stu3);
  37. list.add(stu4);
  38. //保存集合对象到page域对象中。
  39. pageContext.setAttribute("list", list);
  40. %>
  41. <%-- 使用EL表达式获取集合对象 --%>
  42. EL表达式获取集合对象:${list }<br/>
  43. EL表达式获取集合中的第1个对象:${list[0] }<br/>
  44. <%--
  45. 注意这里的中括号[]等价于调用get(索引值)方法
  46. --%>
  47. --|EL表达式获取集合中的第1个对象中的属性值:${list[0].id }-${list[0].name }-${list[0].sex }-${list[0].age }<br/>
  48. <%--
  49. 注意这里的.id,并不是调用属性(Student类中,属性私有的private),而是调用get方法getId()中Id的小写
  50. --%>
  51. EL表达式获取集合中的第2个对象:${list[1] }<br/>
  52. --|EL表达式获取集合中的第1个对象中的属性:${list[1].id }-${list[1].name }-${list[1].sex }-${list[1].age }<br/>
  53. EL表达式获取集合中的第3个对象:${list[2] }<br/>
  54. --|EL表达式获取集合中的第1个对象中的属性:${list[2].id }-${list[2].name }-${list[2].sex }-${list[2].age }<br/>
  55. EL表达式获取集合中的第4个对象:${list[3] }<br/>
  56. --|EL表达式获取集合中的第1个对象中的属性:${list[3].id }-${list[3].name }-${list[3].sex }-${list[3].age }<br/>
  57. <hr/>
  58. <h3>上面的等价于</h3>
  59. jsp表达式获取集合对象:
  60. <%
  61. List<Student> stuList= (List<Student>)pageContext.getAttribute("list", pageContext.PAGE_SCOPE);
  62. %><%= stuList %><br/>
  63. jsp表达式获取集合中的第1个对象:<%= stuList.get(0) %><br/>
  64. --|jsp表达式获取集合中的第1个对象中的属性值:<%=stuList.get(0).getId()%>-<%=stuList.get(0).getName()%>-<%=stuList.get(0).getSex()%>-<%=stuList.get(0).getAge()%><br/>
  65. jsp表达式获取集合中的第2个对象:<%= stuList.get(1) %><br/>
  66. --|jsp表达式获取集合中的第2个对象中的属性值:<%=stuList.get(1).getId()%>-<%=stuList.get(1).getName()%>-<%=stuList.get(1).getSex()%>-<%=stuList.get(1).getAge()%><br/>
  67. jsp表达式获取集合中的第3个对象:<%= stuList.get(2) %><br/>
  68. --|jsp表达式获取集合中的第3个对象中的属性值:<%=stuList.get(2).getId()%>-<%=stuList.get(2).getName()%>-<%=stuList.get(2).getSex()%>-<%=stuList.get(2).getAge()%><br/>
  69. jsp表达式获取集合中的第4个对象:<%= stuList.get(3) %><br/>
  70. --|jsp表达式获取集合中的第4个对象中的属性值:<%=stuList.get(3).getId()%>-<%=stuList.get(3).getName()%>-<%=stuList.get(3).getSex()%>-<%=stuList.get(3).getAge()%><br/>
  71. <hr/><hr/>
  72. <h1>EL表达式获取Map集合对象</h1>
  73. <%
  74. //创建Map集合对象
  75. Map<String, Student> map = new HashMap();
  76. //添加数据到 Map结合中
  77. map.put("001", stu1);
  78. map.put("002", stu2);
  79. map.put("003", stu3);
  80. map.put("004", stu4);
  81. //保存集合对象到page域对象中。
  82. pageContext.setAttribute("map", map);
  83. %>
  84. <%-- 使用EL表达式获取Map集合对象 --%>
  85. EL表达式获取集合对象:${map }<br/>
  86. EL表达式获取集合中的第1个对象:${map["001"]}<br/>
  87. --|EL表达式获取集合中的第1个对象中的属性:${map["001"].id }-${map["001"].name }-${map["001"].sex }-${map["001"].age }<br/>
  88. EL表达式获取集合中的第2个对象:${map["002"]}<br/>
  89. --|EL表达式获取集合中的第2个对象中的属性:${map["002"].id }-${map["002"].name }-${map["002"].sex }-${map["002"].age }<br/>
  90. EL表达式获取集合中的第3个对象:${map["003"]}<br/>
  91. --|EL表达式获取集合中的第3个对象中的属性:${map["003"].id }-${map["003"].name }-${map["003"].sex }-${map["003"].age }<br/>
  92. EL表达式获取集合中的第4个对象:${map["004"]}<br/>
  93. --|EL表达式获取集合中的第4个对象中的属性:${map["004"].id }-${map["004"].name }-${map["004"].sex }-${map["004"].age }<br/>
  94. <hr/>
  95. <h3>上面的等价于</h3>
  96. jsp表达式获取集合对象:
  97. <%
  98. Map<String, Student> stuMap = (Map<String, Student>)pageContext.getAttribute("map", pageContext.PAGE_SCOPE);
  99. %><%= stuMap %><br/>
  100. jsp表达式获取集合中的第1个对象:<%= stuMap.get("001") %><br/>
  101. --|jsp表达式获取集合中的第1个对象中的属性值:<%=stuMap.get("001").getId()%>-<%=stuMap.get("001").getName()%>-<%=stuMap.get("001").getSex()%>-<%=stuMap.get("001").getAge()%><br/>
  102. jsp表达式获取集合中的第2个对象:<%= stuMap.get("002") %><br/>
  103. --|jsp表达式获取集合中的第2个对象中的属性值:<%=stuMap.get("002").getId()%>-<%=stuMap.get("002").getName()%>-<%=stuMap.get("002").getSex()%>-<%=stuMap.get("002").getAge()%><br/>
  104. jsp表达式获取集合中的第3个对象:<%= stuMap.get("003") %><br/>
  105. --|jsp表达式获取集合中的第3个对象中的属性值:<%=stuMap.get("003").getId()%>-<%=stuMap.get("003").getName()%>-<%=stuMap.get("003").getSex()%>-<%=stuMap.get("003").getAge()%><br/>
  106. jsp表达式获取集合中的第4个对象:<%= stuMap.get("004") %><br/>
  107. --|jsp表达式获取集合中的第4个对象中的属性值:<%=stuMap.get("004").getId()%>-<%=stuMap.get("004").getName()%>-<%=stuMap.get("004").getSex()%>-<%=stuMap.get("004").getAge()%><br/>
  108. </body>
  109. </html>
效果如下:

        4. 表达式计算
        4.1 算数表达式 
        4.2 比较运算 
        4.3  逻辑运算
                   4.4  判空(null 或  空字符串)  

   Demo如下:    
  1. <%@ page language="java" import="java.util.*, com.cn.entity.Student" pageEncoding="UTF-8"
  2. session="true"
  3. %>
  4. <%
  5. String path = request.getContextPath();
  6. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  7. %>
  8. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  9. <html>
  10. <head>
  11. <base href="<%=basePath%>">
  12. <title>My JSP 'el.jsp' starting page</title>
  13. <meta http-equiv="pragma" content="no-cache">
  14. <meta http-equiv="cache-control" content="no-cache">
  15. <meta http-equiv="expires" content="0">
  16. <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  17. <meta http-equiv="description" content="This is my page">
  18. <!--
  19. <link rel="stylesheet" type="text/css" href="styles.css">
  20. -->
  21. </head>
  22. <body>
  23. <%--
  24. EL表达式计算
  25. --%>
  26. <%-- 1.算数表达式 --%>
  27. 10+5:${10+5 }<br/>
  28. 10-5:${10-5 }<br/>
  29. 10*5:${10*5 }<br/>
  30. 10/5:${10/5 }<br/>
  31. <hr/>
  32. <%--
  33. 2.比较运算
  34. > < >= <= == !=
  35. --%>
  36. 10>5:${10>5 }<br/>
  37. 10<5:${10<5 }<br/>
  38. 10==5:${10==5 }<br/>
  39. 10!=5:${10!=5 }<br/>
  40. <hr/>
  41. <%--
  42. 3.逻辑运算
  43. && ||
  44. --%>
  45. true && true - ${true && true }<br/>
  46. true && false - ${true && false }<br/>
  47. true || true - ${true || true }<br/>
  48. true || false - ${true || false }<br/>
  49. !true - ${!true }<br/>
  50. !false - ${!false }<br/>
  51. <hr/>
  52. <%--
  53. 4.判空(null 空字符串)
  54. empty 变量
  55. --%>
  56. <%
  57. //String name = "木丁西";
  58. //String name = "";
  59. String name = null;
  60. pageContext.setAttribute("name", name);
  61. %>
  62. name是否为空:${name == null }<br/>
  63. name是否为空:${name == "" }<br/>
  64. name是否为空或null${name == null || name == "" }<br/>
  65. <%-- 简化写法 --%>
  66. name是否为空或null${empty name}<br/>
  67. </body>
  68. </html>
效果如下:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值