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. jeesite快速开发平台(六)----代码生成模块介绍及使用

    转自:https://blog.csdn.net/u011781521/article/details/79309861

  2. java String标准格式转换Date(yyyy-MM-dd HH:mm:ss)

    SimpleDateFormat sdf=new SimpleDateFormat("yyy年MM月dd日hh点mm分"); Date date=new Date(); Strin ...

  3. Django基础学习四_数据库的增删改查

    今天主要学习两个东西 1.如何对数据库做增删改查 2.如果将数据库中的数据用html的方式返回到前台 一.对数据库中增删改查操作 1.首先需要先见表,见表的方法我们在“http://www.cnblo ...

  4. wcf将一个服务同时绑定到http和tcp的写法

    服务器端:<?xml version="1.0" encoding="utf-8" ?><configuration>  <con ...

  5. Java 设计模式系列(三)抽象工厂

    Java 设计模式系列(三)抽象工厂 每天用心记录一点点.内容也许不重要,但习惯很重要!

  6. MyEclipse中Web项目文件名上红色和黄色感叹号处理

      MyEclipse中Web项目文件名上红色和黄色感叹号处理     先说红色感叹号: 那就是代表错误,说明你引用的JAR包位置无效,所以,你应该重新将包导入到工程里面去,这个具体应该会吧,如果是初 ...

  7. Maven项目下java.lang.ClassNotFoundException常规解决办法

    网上很多要修改.class .project的比较麻烦有时候还不一定管用.下面的方法适合于项目用已经引用了jar,但是运行时却ClassNotFound,请用如下方法试试: 严重: Error con ...

  8. ScreenCapture手动卸载教程-Xproer.ScreenCapture

    此教程包含WindowsXP,Windows7(x86) ,Windows7(x64),Firefox,Chrome卸载教程. 1.1. 手动卸载控件-Windows XP 主要步骤如下: 1.关闭所 ...

  9. WPF 绑定备忘单

     Part I – Common Examples Basic Binding   {Binding}  Bind to current DataContext. {Binding Name}  Bi ...

  10. Linux umask权限

    文件基本权限 Linux中文件权限由三部分组成: rw-r--r-- 前三位:表示用户所拥有的权限 中三位:表示用户所在组的权限 后三们:表示其他用户的权限 权限 八进制 十进制 - - - 000 ...