EL表达式

EL即Expression Language,主要的任务是帮助开发者简化获取域属性。

但是一般情况下需要使用EL和JSTL结合使用。

语法:

${

// 隐含对象|直接写域中的属性

}

    算术运算
<!-- 算术运算 -->
+ = ${ + } <br/>
- = ${ - } <br/>
* = ${ * } <br/>
/ = ${ / } <br/>
% = ${ % } <br/>
    比较运算
<!-- 比较运算 -->
> = ${ > } <br/>
< = ${ < } <br/>
>= = ${ >= } <br/>
== = ${ == } <br/>
${ str == null }
    三目运算符
${ name != null ? "欢迎":"注册"}
    逻辑运算
${ > && < }<br/>

一  获取域对象(重点)

1. 普通数据

<!-- 获取普通属性 -->
<%
request.setAttribute("name","jack");
%>
${name}<br/>

以上的代码在获取域属性的时候没有指定给任何的域空间,那么底层一定按照小到大的方式逐一的检测的域属性。

pageContext.findAttribute(“”);          à 实现原理

2 获取数组属性

<!-- 获取数组属性 -->
<%
int [] ins = {,,,};
request.setAttribute("arrs",ins);
%>
${arrs}<br/>
${arrs[]}<br/>
${arrs[""]}<br/>  该方式不是给数组用,是个集合使用。

3  List集合

   <!-- 获取数组属性 -->
<%
List<String> list = new ArrayList<String>();
list.add(,"jiao");
list.add(,"ning");
list.add(,"bo");
request.setAttribute("list",list);
%>
${list }<br/>
${list[] }<br/>
${list[""] }<br/>

4  获取Map属性

<%
LinkedHashMap<String,String> map = new LinkedHashMap<String,String>();
map.put("","ooooo");
map.put("","fffff");
map.put("","uuuuu");
request.setAttribute("map",map);
%>
${map }<br/>
${map[] }<br/>
${map[""] }<br/>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<c:forEach items="${map}" var="entry">
${entry.key } = ${entry.value }<br/>
</c:forEach>

6  Bean操作

<!-- 获取Map中Bean属性 -->
<%
LinkedHashMap<String,Cat> cats = new LinkedHashMap<String,Cat>();
cats.put("",new Cat("A猫",,"波斯猫"));
cats.put("",new Cat("B猫",,"狸猫"));
cats.put("",new Cat("C猫",,"加菲猫")); request.setAttribute("cats",cats);
%>
<c:forEach items="${cats}" var="entry">
${entry.key} = ${entry.value.name } , ${entry.value.age },${entry.value.type }<br/>
</c:forEach>

7  EL隐含对象

pageScope

requestScope

sessionScope

applicationScope

如果在获取域属性的时候没有指定具体的域,那么逐一的查找比较耗时,因此希望大家在明确域名的时候一定要指定域名。

pageContext   该对象可以获取request对象

举例:

<!-- 隐含对象 -->
${pageContext.request.method }<br/>
${pageContext.request.servletPath }<br/>
${pageContext.request.contextPath }<br/>
${pageContext.request.protocol }<br/> 获取请求参数
param
paramValues
举例:
${param.name }<br/>
${paramValues.likes[] }<br/> 获取请求头信息
header
headerValues
举例:
${header["accept"] }<br/>
initParam
获取Cookie
cookie
举例:
${cookie }<br/>
${cookie.address }<br/>
${cookie.address.name }<br/>
${cookie.address.value }<br/>

EL和函数库

问题:在数据显示的时候经常需要调用一些方法对需要显示的数据进行基本的处理,如:

数据过滤、求子串等操作。那么就需要使用EL表达式进行快速的函数调用。

  1. 引入HTMLFilter.java类
  2. 描述为函数

2.1 在WEB-INF中创建一个myfun.tld文件

<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<tlib-version>1.0</tlib-version>
<short-name>jnb</short-name>
<function>
<name>filter</name>
<function-class>cn.itcast.utils.HTMLFilter</function-class>
<function-signature>java.lang.String filter(java.lang.String)</function-signature>
</function>
</taglib>

2.2  引入函数库

%@taglib uri="/WEB-INF/myfuns.tld" prefix="jnb"%

1.2  使用EL调用函数

<td>${jnb:filter(entry.value.info)}</td>

注意:

  1. EL表达式中不能继续嵌套EL表达式
  2. 定义函数的时候函数必须是静态的。

总结

JSTL总过有5个库,但是由于JSP主要是做数据显示的,因此我们只学习核心库和函数库。

java学习笔记—EL表达式(38)的更多相关文章

  1. 重温JSP学习笔记--El表达式

    el表达式是jsp内置的表达式语言,jsp从jsp2.0开始,就不再提倡使用java脚本,而是用el表达式和动态标签来替代,而el表达式主要替代的是jsp中的<%=....%>,也就是说e ...

  2. Javaweb学习笔记——EL表达式

    一.前言 EL表达式是什么? 简而言之,可以这样理解,EL表达式全名为:Exprexxsion Language,原先是JSTL 1.0为了方便存取数据而定义的语言,到了JSTL 2.0便正式成为标准 ...

  3. Java学习笔记-Lambda表达式

    Lambda表达式支持将代码块作为方法参数,Lambda表达式允许使用简洁的代码来创建只有一个抽象方法的接口(这种接口被称为函数是接口)的实例 意义 自从Java 8开始,Java支持Lambda表达 ...

  4. 0028 Java学习笔记-面向对象-Lambda表达式

    匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...

  5. java学习笔记06--正则表达式

    java学习笔记06--正则表达式 正则表达式可以方便的对数据进行匹配,可以执行更加复杂的字符串验证.拆分.替换等操作. 例如:现在要去判断一个字符串是否由数字组成,则可以有以下的两种做法 不使用正则 ...

  6. Java学习笔记4

    Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...

  7. 20145330第五周《Java学习笔记》

    20145330第五周<Java学习笔记> 这一周又是紧张的一周. 语法与继承架构 Java中所有错误都会打包为对象可以尝试try.catch代表错误的对象后做一些处理. 使用try.ca ...

  8. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

  9. 20145330第九周《Java学习笔记》

    20145330第九周<Java学习笔记> 第十六章 整合数据库 JDBC入门 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JD ...

随机推荐

  1. delphi 路径函数

    delphi path functionIncludeTrailingPathDelimiterIncludeTrailingPathDelimiter ensures that a path nam ...

  2. 基于Spring Boot和Spring Cloud实现微服务架构学习

    转载自:http://blog.csdn.net/enweitech/article/details/52582918 看了几周Spring相关框架的书籍和官方demo,是时候开始总结下这中间的学习感 ...

  3. 【333】Python3.6 格式化文本

    看如下例子进行体会: min_temperature = 0 max_temperature = 300 step = 20 # \t: A tab print('Fahrenheit\tCelsiu ...

  4. sdm 使用阿里云域名申请 Let’s Encrypt 通配符 域名证书

    安装acme 进入 套件中心 点击安装 Git Server 之后进入SSh会使用git命令 方法1--------------------------------------- 获取代码 git c ...

  5. 2017面向对象程序设计(Java)第六周学习总结

    转眼间,2017年的法定节日已经休完,我们的java学习也已经进行了六周.下面,我将对上个礼拜的学习情况进行总结. 首先,是学习态度问题.虽然同学们已经从家或者各个旅游景点回来,但是心还是没回来.有同 ...

  6. RemoteExt 远程验证

    public class RemoteExtAttribute : RemoteAttribute { private string _resourceKey; public RemoteExtAtt ...

  7. 74款安卓和IOS app源码地址

    知乎专栏App https://github.com/bxbxbai/ZhuanLan WeChat高仿微信 项目地址: https://github.com/motianhuo/wechat Gan ...

  8. [Training Video - 4] [Selenium IDE]

    Selenium IDE Training List

  9. css控制同一个页面的两个表格,一个显示有边框线,而另一个没边框线

    不显示边框的:<table border="0" cellspacing="0"  cellpadding="" ><tr ...

  10. 如何用Python实现常见机器学习算法-2

    二.逻辑回归 1.代价函数 可以将上式综合起来为: 其中: 为什么不用线性回归的代价函数表示呢?因为线性回归的代价函数可能是非凸的,对于分类问题,使用梯度下降很难得到最小值,上面的代价函数是凸函数的图 ...