EL表达式、JSTL标签库
一、EL(Expression Language)表达式
语法结构:${var}
若要停用对EL表达式的评估的话,需要使用page指令将isELIgnored属性值设为true:
<%@ page isELIgnored ="true|false" %> 这样,EL表达式就会被忽略。若设为false,则容器将会计算EL表达式。
EL表达式的应用:
- 获取数据:用于替换Jsp中的脚本表达式,从web域中检索java对象、获取数据。
- 执行运算:执行一些基本的逻辑运算、关系运算、算术运算。
- 获取Web开发常用对象:利用EL定义的隐式对象,可以获得对web常用对象的引用,从而获取这些对象中的的数据。
- 调用java方法:EL允许自定义EL函数,可以通过EL表达式调用java类的方法。
<h3>EL表达式中使用二元表达式</h3>
<%
session.setAttribute("user",new User("孤傲苍狼"));
%>
${user==null? "对不起,您没有登陆 " : user.username} <%
List<String> emptyList = null;
%>
<%--使用empty运算符检查对象是否为null(空) --%>
<c:if test="${empty(emptyList)}">
对不起,没有您想看的数据
</c:if>
EL表达式语言中定义了11个隐含对象,他们都是java.util.Map类型,使用这些隐含对象可以很方便地获取web开发中的一些常见对象,并读取这些对象的数据

<br/>---------------1、pageContext对象:获取JSP页面中的pageContext对象------------------------<br/>
${pageContext}
<br/>---------------2、pageScope对象:从page域(pageScope)中查找数据------------------------<br/>
<%
pageContext.setAttribute("name","张三"); //map
%>
${pageScope.name}
<br/>---------------3、requestScope对象:从request域(requestScope)中获取数据------------------------<br/>
<%
request.setAttribute("name","李四"); //map
%>
${requestScope.name}
<br/>---------------4、sessionScope对象:从session域(sessionScope)中获取数据------------------------<br/>
<%
session.setAttribute("user","xdp"); //map
%>
${sessionScope.user}
EL表达式语言可以访问EL函数。EL函数实际上与Java类的方法对应,这个Java类必须定义为public类型,并且作为函数的方法必须声明为public static类型。当Java类定义好以后,应该在标签描述符(TLD)文件中,把Java类的方法映射为函数。
EL Function:
一般来说, EL自定义函数开发与应用包括以下三个步骤:
1、编写一个Java类的静态方法。
2、编写标签库描述符(tld)文件,在tld文件中描述自定义函数。
3、在JSP页面中导入和使用自定义函数。
详情参考:(1)http://www.cnblogs.com/xdp-gacl/p/3938361.html(1.5EL Function开发步骤)
(2)http://blog.csdn.net/goskalrie/article/details/51315397(自定义和使用EL函数)
二、JSTL(JavaServer Pages Standard Tag Library,JSP标准标签库)
JSTL是apache对EL表达式的扩展(也就是说JSTL依赖EL),JSTL是标签语言。JSTL标签使用以来非常方便,它与JSP动作标签一样,只不过它不是JSP内置的标签,需要我们自己导包,以及指定标签库。
1、JSTL标签库包含四类:
- core:核心标签库,学习重点
- fmt:格式化标签库,只学习两个
- sql:数据库标签库,已过时,不学习
- xml:xml标签库,已过时,不学习
2、使用taglib指令导入标签库
除了JSP动作标签外,使用其他第三方的标签库都需要:(1)导包;(2)在使用标签的JSP页面中使用taglib指令导入标签库。
导入JSTL的core标签库:<%@ taglib prefix="c"uri="http://java.sun.com/jstl/core" %>
- prefix="c":指定标签库的前缀,这个前缀可以随便给值,但大家都会在使用core标签库时指定前缀为c;
- uri="http://java.sun.com/jstl/core":指定标签库的uri,它不一定是真实存在的网址,但它可以让JSP找到标签库的描述文件;
3、核心标签库(core)
JSTL的核心标签库标签共13个,分为4类:
1.表达式控制标签:out、set、remove、catch
2.流程控制标签:if、choose、when、otherwise
3.循环标签:forEach、forTokens
4.URL操作标签:import、url、redirect
(1)<c:out>标签主要是用来输出数据对象(字符串、表达式)的内容或结果。JSTL的使用是和EL表达式分不开的,<c:out>有特定的结果处理功能,EL的单独使用会降低程序的易读性,建议把EL的结果输入放入<c:out>标签中。
(2)<c:set>标签用于把某一个对象存在指定的域范围内,或者将某一个对象存储到Map或者JavaBean对象中。
<c:set value="赵五" target="${person}" property="name"></c:set>
<c:set target="${person}" property="age">19</c:set>
<li>从Bean中获取对象person的name值:<c:out value="${person.name}"></c:out></li>
<li>从Bean中获取对象person的age值:<c:out value="${person.age}"></c:out></li>
(3)<c:remove>标签主要用来从指定的JSP范围内移除指定的变量。
(4)<c:catch>标签用于捕获嵌套在标签体中的内容抛出的异常。
(5)<c:if>标签和程序中的if语句作用相同,用来实现条件控制。
<%--使用if标签进行判断并把检验后的结果赋给adminchock,存储在默认的page范围中。 --%>
<c:if test="${param.uname=='admin'}" var="adminchock">
(6)<c:choose>、<c:when>和<c:otherwise>这3个标签通常情况下是一起使用的,<c:choose>标签作为<c:when>和<c:otherwise>标签的父标签来使用。 使用<c:choose>,<c:when>和<c:otherwise>三个标签,可以构造类似 “if-else if-else” 的复杂条件判断结构。
(7)<c:forEach>标签该根据循环条件遍历集合(Collection)中的元素。
(8)<c:import>该标签可以把其他静态或动态文件包含到本JSP页面,与<jsp:include>的区别为:<jsp:include>只能包含同一个web应用中的文件。而<c:import>可以包含其他web应用中的文件,甚至是网络上的资源。
(9)<c:url>标签用于在JSP页面中构造一个URL地址,其主要目的是实现URL重写。
(10)<c:redirect>该标签用来实现请求的重定向。同时可以配合使用<c:param>标签在url中加入指定的参数。
4、fmt标签库
fmt标签库是用来格式化输出的,通常需要格式化的有时间和数字:
(1)格式化日期
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
......
<%
Date date = new Date();
pageContext.setAttribute("d", date);
%>
<fmt:formatDate value="${d }" pattern="yyyy-MM-dd HH:mm:ss"/>
(2)格式化数字
<%
double d1 = 3.5;
double d2 = 4.4;
pageContext.setAttribute("d1", d1);
pageContext.setAttribute("d2", d2);
%>
<fmt:formatNumber value="${d1 }" pattern="0.00"/><br/>
<fmt:formatNumber value="${d2 }" pattern="#.##"/>
5、自定义JSTL标签
详见:http://blog.csdn.net/qq_25827845/article/details/53311722(自定义标签)
以上均为简单学习的过程。
参考资料:
EL:
(1)http://www.runoob.com/jsp/jsp-expression-language.html
(2)http://blog.csdn.net/goskalrie/article/details/51315397
(3)http://www.cnblogs.com/xdp-gacl/p/3938361.html
(4)http://blog.csdn.net/qwerasdf123/article/details/4189889
JSTL:
(5)http://www.runoob.com/jsp/jsp-jstl.html
(6)http://blog.csdn.net/qq_25827845/article/details/53311722
(7)http://www.cnblogs.com/lihuiyy/archive/2012/02/24/2366806.html
(8)http://www.cnblogs.com/xdp-gacl/p/3943390.html
EL表达式、JSTL标签库的更多相关文章
- jsp学习---mvc模式介绍和el表达式,jstl标签库的使用入门
一.mvc模式介绍 下图是常用的mvc分层模式: 项目中的包命名规则,一般如下: com.amos.domain 封装JavaBean,一般我喜欢用model命名这个包com.amos.dao 封装d ...
- JavaWeb基础Day17 (JSP EL表达式 jstl标签库 beanutil工具类)
JSP jsp的实质就是指在html界面中嵌入Java代码 jsp脚本 <% Java代码 %> 相当于写在service方法中. <%=java 变量或者表达式 %> ...
- 2.EL表达式&JSTL标签库常用方法
1.EL表达式 Expression Language表达式语言,主要是代替jsp页面中的表达式脚本在jsp页面中进行数据的输出. 格式为${表达式} EL表达式输出Bean的普通属性.数组属性.Li ...
- jsp之el表达式jstl标签
不管是el表达式还是jstl标签最终的目的都是要消除jsp中的java代码,当然是消除显式的java代码 el表达式的出现是为了简化jsp中读取数据并写入页面的操作. el表达式的功能不多,也很好记 ...
- el和jstl标签库讲解视频
https://www.bilibili.com/video/av22415283/?p=1
- EL表达式与标签库
https://blog.csdn.net/panhaigang123/article/details/78428567
- JavaWeb学习之JSP常用标签、EL表达式的运算符、JSTL标签库(6)
1.JSP常用标签 * 只要支持JSP文件,常用标签有可以直接使用 * 格式: jsp:xxxx * jsp:forward ,完成jsp页面的转发 * page属性:转发的地址 <% requ ...
- Struts标签、Ognl表达式、el表达式、jstl标签库这四者之间的关系和各自作用
我之前虽然会用,但是一直分不清彼此之间有什么区别,所以查找资料,将它们进行整合区分,加深了解, 一 介绍 1.Struts2的作用 Struts2标签库提供了主题.模板支持,极大地简化了视图页面的 ...
- Java实战之04JavaWeb-04JSP、EL表达式、JSTL标签库
一.jsp部分 只要是与页面显示相关的都是重点 1.jsp的脚本 <%java代码%>:被翻译到service方法内部,局部变量,局部的功能 <%=表达式或变量%>:翻译成se ...
随机推荐
- 关于matlab2018a版本错误使用 svmclassify 分类器
当我们照常使用分类器函数svmclassify时,2018版的matlab会报出以下错误: 解决办法: 1,下载libsvm(一般下载最新版本就ok了)包,并将其添加至matlab的toolbox文件 ...
- logstash同步mysql数据失败
问题描述 前提: 项目采用Elasticsearch提供搜索服务,Mysql提供存储服务,通过Logstash将Mysql中数据同步到Elasticsearch. 问题: 使用logstash-j ...
- VGG19模型训练+读取
目录 VGG-19模型简单介绍 VGG-19模型文件介绍 分析模型文件 mean值查看 Weight和Bias查看 读取代码 读取模型 训练代码 参考资料 VGG-19的介绍和训练这里不做说明,网上资 ...
- 二、Python-运算符、控制及循环语句
一.运算符 算数运算符 +:加 -:减 *:乘 /:除 ~:取反 %:求余数(只返回余数) //:取整数(只返回整数部分) **:幂,返回x的y次方 赋值运算符:= 比较运算符:<小于.< ...
- 【转】配置Exchange 2010 服务器(二)Exchange2010证书配置
原文链接:http://blog.51cto.com/shubao/788562 (一)架设证书服务器 (二)Exchange2010申请证书 (三)证书服务器导入Exchange服务器受信任根证书 ...
- http协议,servlet的生命周期
1.http协议(http协议是无状态的) http协议是指计算机通信网络中两台计算机进行通信必须共同遵守的规定或规则,它允许将超文本标记语言(html)文档从web服务器传送到客户端的浏览器(目前我 ...
- --- Android 设置为A2DP 接收器
http://www.it1352.com/88728.html external/bluetooth/bluedroid/include/bt_target.h: * Enable bluetoot ...
- Iview Modal 点击确定就关闭,我想禁止关闭该怎么办呢?
网上各种loading,不推荐.用下面的方法直接就解决了 <div slot="footer"> <Button type="text" si ...
- open函数新建文件报错
报错原因很多,我这里只写我遇到的: 给的路径或者文件名中包含了这些字符的:/\:*?"><| 都不行,我说的是Windows平台下的.
- Unity 自定义导入时切割Sprite
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; us ...