java学习笔记—EL表达式(38)
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表达式进行快速的函数调用。
- 引入HTMLFilter.java类
- 描述为函数
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>
注意:
- EL表达式中不能继续嵌套EL表达式
- 定义函数的时候函数必须是静态的。
总结
JSTL总过有5个库,但是由于JSP主要是做数据显示的,因此我们只学习核心库和函数库。
java学习笔记—EL表达式(38)的更多相关文章
- 重温JSP学习笔记--El表达式
el表达式是jsp内置的表达式语言,jsp从jsp2.0开始,就不再提倡使用java脚本,而是用el表达式和动态标签来替代,而el表达式主要替代的是jsp中的<%=....%>,也就是说e ...
- Javaweb学习笔记——EL表达式
一.前言 EL表达式是什么? 简而言之,可以这样理解,EL表达式全名为:Exprexxsion Language,原先是JSTL 1.0为了方便存取数据而定义的语言,到了JSTL 2.0便正式成为标准 ...
- Java学习笔记-Lambda表达式
Lambda表达式支持将代码块作为方法参数,Lambda表达式允许使用简洁的代码来创建只有一个抽象方法的接口(这种接口被称为函数是接口)的实例 意义 自从Java 8开始,Java支持Lambda表达 ...
- 0028 Java学习笔记-面向对象-Lambda表达式
匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...
- java学习笔记06--正则表达式
java学习笔记06--正则表达式 正则表达式可以方便的对数据进行匹配,可以执行更加复杂的字符串验证.拆分.替换等操作. 例如:现在要去判断一个字符串是否由数字组成,则可以有以下的两种做法 不使用正则 ...
- Java学习笔记4
Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...
- 20145330第五周《Java学习笔记》
20145330第五周<Java学习笔记> 这一周又是紧张的一周. 语法与继承架构 Java中所有错误都会打包为对象可以尝试try.catch代表错误的对象后做一些处理. 使用try.ca ...
- 《Java学习笔记(第8版)》学习指导
<Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...
- 20145330第九周《Java学习笔记》
20145330第九周<Java学习笔记> 第十六章 整合数据库 JDBC入门 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JD ...
随机推荐
- Discuz 任务、道具、任务和验证类插件制作
一.广告类脚本位置:source/class/adv/adv_name.php语言包位置:source/language/adv/lang_name.php <?php class adv_na ...
- YII 自带验证码实现
共三步,分别controllers,models,views各一层添置一行代码即可实现 第一步在controllers添加 public function actions() { return arr ...
- svn can't save server certificate
f I use any svn command communicating with the remote server I get the following error: Error valida ...
- sqlserver数据库导出成insert语句
点击数据库名称右键=========>任务========>生成脚本 一.表结构导出成sql语句 二.数据导出成sql语句
- 问题记录,StartCoroutine(“str")问题
StartCoroutine参数为函数字符串名,运行时出错,错误是:无法启动协程函数. 调用格式如下: gameManager.StartCoroutine(LuaOnLevelwasloaded() ...
- MaskBlt 拷贝非矩形区域图象
MaskBlt 该函数使用特定的掩码和光栅操作来对源和目标位图的颜色数据进行组合. 原型: BOOL MaskBlt( HDC hdcDest, int nXDest, int nYDest ...
- Redis RDB文件
[Redis RDB文件] 1.RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot). RDB 的优点 RDB 是一个非常紧凑(compact)的 ...
- 使用ES(elasticsearch) 搜索引擎
介绍 https://blog.csdn.net/andyzhaojianhui/article/details/75195296 创建语句 { "company":{ &quo ...
- 307. Range Sum Query - Mutable查询求和的范围(可变)
[抄题]: Given an integer array nums, find the sum of the elements between indices i and j (i ≤ j), inc ...
- boost之内存管理
内存管理一直是令C++程序员最头疼的工作,C++继承了C那高效而又灵活的指针,使用起来稍微不小心就会导致内存泄露.野指针.越界访问等访问.虽然C++标准提供了只能指针std::auto_ptr,但是并 ...