EL获取域中的数据
EL(Expression Language)是表达式语言,EL的使用可以减少JAVA代码的书写。
1、EL表达式中的常量:
<body bgcolor="#7fffd4">
输出数字:${}<br>
输出字符串:${'ni hao'}<br>
</body>

EL表达式不必写在脚本内部。
2、从域中获取数据:
(1)建立学生类的JavaBean:
package pers.zhb.domain;
public class Student {
private String name;
private int age;
private String sex;
public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} public String getSex() {
return sex;
} public void setSex(String sex) {
this.sex = sex;
} @Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", sex='" + sex + '\'' +
'}';
}
}
(2)向域中添加数据:
//request域存储字符串
request.setAttribute("zhai",""); //session域存储对象
Student student1 =new Student();
student1.setAge();
student1.setName("李明");
student1.setSex("男");
session.setAttribute("student",student1); //application域存储一个集合
ArrayList <Student> list=new ArrayList<Student>();
Student student2=new Student();
student2.setName("赵云");
student2.setAge();
student2.setSex("男");
list.add(student2); Student student3=new Student();
student3.setName("李艳");
student3.setAge();
student3.setSex("女");
list.add(student3);
application.setAttribute("list",list);
%>
(3)从域中取出数据:
<%--域中值的获取--%>
<%out.print("获取request域中的值:");%><br>
${requestScope.zhai}<br>
<hr> <%out.print("获取session域中学生的所有属性:");%>
${sessionScope.student}
<%out.print("获取学生的某一个属性:");%><br>
${sessionScope.student.name}<br>
${sessionScope.student.age}<br>
<hr>
<%--获取application域中的集合元素--%>
<%out.print("获取域中集合的所有元素:");%><br>
${applicationScope.list}<br>
<%out.print("获取某一属性:");%><br>
${applicationScope.list[].name}

3、el的全域查找:
在全域查找的时候,不会为el表达式指定域的范围,而是按照pageContext域,request域,session域,application域的顺序查找。
使用全域查找后代码更为简洁:
<%--域的全域查找--%>
<%out.print("获取request域中的值:");%><br>
${zhai}<br>
<hr> <%out.print("获取session域中学生的所有属性:");%>
${student}
<%out.print("获取学生的某一个属性:");%><br>
${student.name}<br>
${student.age}<br>
<hr>
<%--获取application域中的集合元素--%>
<%out.print("获取域中集合的所有元素:");%><br>
${list}<br>
<%out.print("获取某一属性:");%><br>
${list[].name}
因为没有指定域的范围,如果在域中存储的时候,键的名字相同,会有什么情况呢?
<%
//request域存储字符串
request.setAttribute("zhai",""); //session域存储对象
Student student1 =new Student();
student1.setAge();
student1.setName("李明");
student1.setSex("男");
session.setAttribute("list",student1); //application域存储一个集合
ArrayList <Student> list=new ArrayList<Student>();
Student student2=new Student();
student2.setName("赵云");
student2.setAge();
student2.setSex("男");
list.add(student2); Student student3=new Student();
student3.setName("李艳");
student3.setAge();
student3.setSex("女");
list.add(student3);
application.setAttribute("list",list); %> <%--域的全域查找--%>
<%out.print("获取request域中的值:");%><br>
${zhai}<br>
<hr> <%out.print("获取session域中学生的所有属性:");%>
${list}
<%out.print("获取学生的某一个属性:");%><br>
${list.name}<br>
${list.age}<br>
<hr>
<%--获取application域中的集合元素--%>
<%out.print("获取域中集合的所有元素:");%><br>
${list}<br>
<%out.print("获取某一属性:");%><br>
${list[].name}
将Session和application域中键的名字改为一样的:

从执行结果来看,会按照特定的顺序执行优先级别较高的域。
4、el表达式的好处:
(1)简化代码,使代码简洁:
如:从application域中获取以为同学的名字:
不使用EL:
ArrayList <Student> list1= ( ArrayList <Student>)application.getAttribute("list");
list1.get().getAge();
使用EL后:
${applicationScope.list[].name}
使用全域查找后:
${list[].name}
(2)不需要强制转换
传统方式的不足:
需要强转,代码多且过程复杂。
EL获取域中的数据的更多相关文章
- 【EL表达式】EL从四大域中取数据
一.EL技术 1.EL 表达式概述 EL(Express Lanuage)表达式可以嵌入在jsp页面内部,减少jsp脚本的编写,EL 出现的目的是要替代jsp页面中脚本的编写. 2.EL从域中取出数据 ...
- php获取数组中重复数据的两种方法
分享下php获取数组中重复数据的两种方法. 1,利用php提供的函数,array_unique和array_diff_assoc来实现 <?php function FetchRepeatMem ...
- 基于BootStrap的initupload()实现Excel上传和获取excel中的数据
简单说明:后边要做exl解析(还没做呢),所以先有一个excel的的上传以及获取excel中的数据,展示出来. 代码: //html代码 <div class="btn-group&q ...
- Springboot中使用自定义参数注解获取 token 中用户数据
使用自定义参数注解获取 token 中User数据 使用背景 在springboot项目开发中需要从token中获取用户信息时通常的方式要经历几个步骤 拦截器中截获token TokenUtil工具类 ...
- C语言:将带头节点的单向链表结点域中的数据从小到大排序。-求出单向链表结点(不包括头节点)数据域中的最大值。-将M*N的二维数组中的数据,按行依次放入一维数组,
//函数fun功能是将带头节点的单向链表结点域中的数据从小到大排序. //相当于数组的冒泡排序. #include <stdio.h> #include <stdlib.h> ...
- JSP中获取jstl中的数据
我们在编程JSP时,有时会须要訪问jstl中的数据,或者说是el表达式中的数据. 比方, <c:forEach varStatus="data1" var=" ...
- Struts2获取Action中的数据
当我们用Struts2框架开发时,经常有要获取jsp页面的数据或者在jsp中获取后台传过来的数据(Action),那么怎么去获取自己想要的数据呢? 后台获取前端数据: 在java程序中生成要获取字段的 ...
- 使用 UEditor 编辑器获取数据库中的数据
在 ThinkPHP 3.2.2 中,使用 UEditor 编辑器获取数据库中保存的数据,可以使用 UEditor 自身提供的方法. 首先在视图模板中实例化编辑器,这是出现编辑器界面的必须的行为: & ...
- SharePoint 2010 获取列表中所有数据(包括文件夹内)的方法
转: http://blog.csdn.net/wangwenism/article/details/8751411 SharePoint的列表能存储文件以及文件夹,用户使用的时候,经常会建几个分类文 ...
随机推荐
- Detecting GAN-generated Imagery using Color Cues
Abstract 论文创新点:分析流行GAN网络结构得知,GAN网络生成得图片在颜色处理与真实摄像机拍摄的照片存在不同,主要表现在两方面. 实验结果:证明了两种线索能够有效区分GAN生 ...
- OSGI.NET插件方式开发你的应用
之前一直从事C# WEB开发.基本都是业务开发,性能优化. 体力活占比90%吧.模块真的很多很多,每次部署经常出先各种问题.发布经常加班. 今年开始接触winform 开发.发现C# 的事件 委托 ...
- linux安装go开发环境
1下载go wget https://studygolang.com/dl/golang/go1.12.7.linux-amd64.tar.gz执行此命令会将go1.12.7.linux-amd64. ...
- warning: LF will be replaced by CRLF in application.yml. The file will have its origina解决方法
环境: windows提交时报错如图所示: 原因是存在符号转义问题 windows中的换行符为 CRLF, 而在linux下的换行符为LF,所以在执行add . 时出现提示,解决办法: git con ...
- LOJ3123 CTS2019 重复 KMP自动机、DP、多项式求逆
传送门 CTS的计数题更完辣(撒花 Orz zx2003,下面的内容在上面的博客基础上进行一定的补充. 考虑计算无限循环之后不存在子串比\(s\)字典序小的串的个数.先对串\(s\)建立KMP自动机, ...
- App开放接口API安全性之Token签名Sign的设计与实现
前言 在app开放接口api的设计中,避免不了的就是安全性问题,因为大多数接口涉及到用户的个人信息以及一些敏感的数据,所以对这些接口需要进行身份的认证,那么这就需要用户提供一些信息,比如用户名密码等, ...
- System.AccessViolationException处理
程序出现 System.AccessViolationException异常会终止进程,try catch是无法捕捉的. 有个处理方法在引发异常的发放上面加上 [System.Runtime.Exce ...
- JS权威指南读书笔记(四)
第十章 正则表达式 1 正则表达式直接量定义为包含在一对斜杠(/)之间的字符 a /s$/ == new RegExp("s$") 2 直接量字符:所有字母和数字都是按照字 ...
- Java 之 web服务器—Tomcat
一.服务器 1.服务器 服务器:安装了服务器软件的计算机 2.服务器软件 服务器软件:接收用户的请求,处理请求,做出响应 3.Web 服务器软件 web 服务器软件:接收用户的请求,处理请求,做出响应 ...
- self attention pytorch代码
实现细节; 1.embedding 层 2.positional encoding层:添加位置信息 3,MultiHeadAttention层:encoder的self attention 4,sub ...