EL(Expression Language)是表达式语言,EL的使用可以减少JAVA代码的书写。

1、EL表达式中的常量:

  1. <body bgcolor="#7fffd4">
  2. 输出数字:${}<br>
  3. 输出字符串:${'ni hao'}<br>
  4. </body>

EL表达式不必写在脚本内部。

2、从域中获取数据:

(1)建立学生类的JavaBean:

  1. package pers.zhb.domain;
  2. public class Student {
  3. private String name;
  4. private int age;
  5. private String sex;
  6. public String getName() {
  7. return name;
  8. }
  9.  
  10. public void setName(String name) {
  11. this.name = name;
  12. }
  13.  
  14. public int getAge() {
  15. return age;
  16. }
  17.  
  18. public void setAge(int age) {
  19. this.age = age;
  20. }
  21.  
  22. public String getSex() {
  23. return sex;
  24. }
  25.  
  26. public void setSex(String sex) {
  27. this.sex = sex;
  28. }
  29.  
  30. @Override
  31. public String toString() {
  32. return "Student{" +
  33. "name='" + name + '\'' +
  34. ", age=" + age +
  35. ", sex='" + sex + '\'' +
  36. '}';
  37. }
  38. }

(2)向域中添加数据:

  1. //request域存储字符串
  2. request.setAttribute("zhai","");
  3.  
  4. //session域存储对象
  5. Student student1 =new Student();
  6. student1.setAge();
  7. student1.setName("李明");
  8. student1.setSex("男");
  9. session.setAttribute("student",student1);
  10.  
  11. //application域存储一个集合
  12. ArrayList <Student> list=new ArrayList<Student>();
  13. Student student2=new Student();
  14. student2.setName("赵云");
  15. student2.setAge();
  16. student2.setSex("男");
  17. list.add(student2);
  18.  
  19. Student student3=new Student();
  20. student3.setName("李艳");
  21. student3.setAge();
  22. student3.setSex("女");
  23. list.add(student3);
  24. application.setAttribute("list",list);
  25. %>

(3)从域中取出数据:

  1. <%--域中值的获取--%>
  2. <%out.print("获取request域中的值:");%><br>
  3. ${requestScope.zhai}<br>
  4. <hr>
  5.  
  6. <%out.print("获取session域中学生的所有属性:");%>
  7. ${sessionScope.student}
  8. <%out.print("获取学生的某一个属性:");%><br>
  9. ${sessionScope.student.name}<br>
  10. ${sessionScope.student.age}<br>
  11. <hr>
  12. <%--获取application域中的集合元素--%>
  13. <%out.print("获取域中集合的所有元素:");%><br>
  14. ${applicationScope.list}<br>
  15. <%out.print("获取某一属性:");%><br>
  16. ${applicationScope.list[].name}

3、el的全域查找:

在全域查找的时候,不会为el表达式指定域的范围,而是按照pageContext域,request域,session域,application域的顺序查找。

使用全域查找后代码更为简洁:

  1. <%--域的全域查找--%>
  2. <%out.print("获取request域中的值:");%><br>
  3. ${zhai}<br>
  4. <hr>
  5.  
  6. <%out.print("获取session域中学生的所有属性:");%>
  7. ${student}
  8. <%out.print("获取学生的某一个属性:");%><br>
  9. ${student.name}<br>
  10. ${student.age}<br>
  11. <hr>
  12. <%--获取application域中的集合元素--%>
  13. <%out.print("获取域中集合的所有元素:");%><br>
  14. ${list}<br>
  15. <%out.print("获取某一属性:");%><br>
  16. ${list[].name}

因为没有指定域的范围,如果在域中存储的时候,键的名字相同,会有什么情况呢?

  1. <%
  2. //request域存储字符串
  3. request.setAttribute("zhai","");
  4.  
  5. //session域存储对象
  6. Student student1 =new Student();
  7. student1.setAge();
  8. student1.setName("李明");
  9. student1.setSex("男");
  10. session.setAttribute("list",student1);
  11.  
  12. //application域存储一个集合
  13. ArrayList <Student> list=new ArrayList<Student>();
  14. Student student2=new Student();
  15. student2.setName("赵云");
  16. student2.setAge();
  17. student2.setSex("男");
  18. list.add(student2);
  19.  
  20. Student student3=new Student();
  21. student3.setName("李艳");
  22. student3.setAge();
  23. student3.setSex("女");
  24. list.add(student3);
  25. application.setAttribute("list",list);
  26.  
  27. %>
  28.  
  29. <%--域的全域查找--%>
  30. <%out.print("获取request域中的值:");%><br>
  31. ${zhai}<br>
  32. <hr>
  33.  
  34. <%out.print("获取session域中学生的所有属性:");%>
  35. ${list}
  36. <%out.print("获取学生的某一个属性:");%><br>
  37. ${list.name}<br>
  38. ${list.age}<br>
  39. <hr>
  40. <%--获取application域中的集合元素--%>
  41. <%out.print("获取域中集合的所有元素:");%><br>
  42. ${list}<br>
  43. <%out.print("获取某一属性:");%><br>
  44. ${list[].name}

将Session和application域中键的名字改为一样的:

从执行结果来看,会按照特定的顺序执行优先级别较高的域。

4、el表达式的好处:

(1)简化代码,使代码简洁:

如:从application域中获取以为同学的名字:

不使用EL:

  1. ArrayList <Student> list1= ( ArrayList <Student>)application.getAttribute("list");
  2. list1.get().getAge();

使用EL后:

  1. ${applicationScope.list[].name}

使用全域查找后:

  1. ${list[].name}

(2)不需要强制转换

传统方式的不足:

需要强转,代码多且过程复杂。

EL获取域中的数据的更多相关文章

  1. 【EL表达式】EL从四大域中取数据

    一.EL技术 1.EL 表达式概述 EL(Express Lanuage)表达式可以嵌入在jsp页面内部,减少jsp脚本的编写,EL 出现的目的是要替代jsp页面中脚本的编写. 2.EL从域中取出数据 ...

  2. php获取数组中重复数据的两种方法

    分享下php获取数组中重复数据的两种方法. 1,利用php提供的函数,array_unique和array_diff_assoc来实现 <?php function FetchRepeatMem ...

  3. 基于BootStrap的initupload()实现Excel上传和获取excel中的数据

    简单说明:后边要做exl解析(还没做呢),所以先有一个excel的的上传以及获取excel中的数据,展示出来. 代码: //html代码 <div class="btn-group&q ...

  4. Springboot中使用自定义参数注解获取 token 中用户数据

    使用自定义参数注解获取 token 中User数据 使用背景 在springboot项目开发中需要从token中获取用户信息时通常的方式要经历几个步骤 拦截器中截获token TokenUtil工具类 ...

  5. C语言:将带头节点的单向链表结点域中的数据从小到大排序。-求出单向链表结点(不包括头节点)数据域中的最大值。-将M*N的二维数组中的数据,按行依次放入一维数组,

    //函数fun功能是将带头节点的单向链表结点域中的数据从小到大排序. //相当于数组的冒泡排序. #include <stdio.h> #include <stdlib.h> ...

  6. JSP中获取jstl中的数据

    我们在编程JSP时,有时会须要訪问jstl中的数据,或者说是el表达式中的数据. 比方, <c:forEach    varStatus="data1" var=" ...

  7. Struts2获取Action中的数据

    当我们用Struts2框架开发时,经常有要获取jsp页面的数据或者在jsp中获取后台传过来的数据(Action),那么怎么去获取自己想要的数据呢? 后台获取前端数据: 在java程序中生成要获取字段的 ...

  8. 使用 UEditor 编辑器获取数据库中的数据

    在 ThinkPHP 3.2.2 中,使用 UEditor 编辑器获取数据库中保存的数据,可以使用 UEditor 自身提供的方法. 首先在视图模板中实例化编辑器,这是出现编辑器界面的必须的行为: & ...

  9. SharePoint 2010 获取列表中所有数据(包括文件夹内)的方法

    转: http://blog.csdn.net/wangwenism/article/details/8751411 SharePoint的列表能存储文件以及文件夹,用户使用的时候,经常会建几个分类文 ...

随机推荐

  1. xorm -Exist方法实例

    判断某个记录是否存在可以使用Exist, 相比Get,Exist性能更好. package main import ( "fmt" _ "github.com/go-sq ...

  2. 【LEETCODE】38、167题,Two Sum II - Input array is sorted

    package y2019.Algorithm.array; /** * @ProjectName: cutter-point * @Package: y2019.Algorithm.array * ...

  3. Android--Bitmap处理、圆角、圆形

    /** * 转换图片成圆形 * * @param bitmap * 传入Bitmap对象 * @return */ public static Bitmap toRoundBitmap(Bitmap ...

  4. ArcGIS 字段计算器 Python 坑

    最近要处理个简单数据,一个字段中为文本类型,包含各种描述.要求是包含平方米的数值提取出来,变成数值,如果包含多个,则把各个值累加起来. 比如 字段值为 “非法占用100平方米” 处理后结果为 100 ...

  5. [国家集训队] JZPKIL

    题目链接 洛谷:https://www.luogu.org/problemnew/show/P4464 Solution 这题是真的毒....数论大杂烩,窝断断续续写了两天. 众所周知: \[ {\r ...

  6. JSOI2019 Round2

    JSOI的题质量很高-- 精准预测(2-SAT.拓扑排序.bitset) 不难发现两个条件都可以用经典的2-SAT连边方式连边,考虑如何加入时间的限制.对于第\(x\)个人在\(t\)时刻的状态是生/ ...

  7. 在右键菜单中添加用Jupyter Notebook打开

    在右键菜单中添加用Jupyter Notebook打开 为了把 Jupyter 的工作目录指定到某一个文件夹下,每次都要启动 CMD 终端, 然后激活 Anaconda 环境,再启动 Jupyter ...

  8. Replace到达地

    string getcstr(string cs)        {            String SplitKey = @"乌孜别克族,柯尔克孜族,维吾尔族, 鄂伦春族, 哈萨克族, ...

  9. 浮动和渐变色,定位position,元素的层叠顺序

    浮动: float 是我们网页布局的一种 浮动 可以有 left 左浮动 right 右浮动 两种 浮动的特点: 脱离正常的文档流,原本的空间不占据,浮动的标签都具有块级标签的一些特点,可以手动设置宽 ...

  10. springboot+security整合(1)

    说明 springboot 版本 2.0.3源码地址:点击跳转 系列 springboot+security 整合(1) springboot+security 整合(2) springboot+se ...