EL表达式

介绍:

EL(Expression Language)  目的:为了使JSP写起来更加简单。

表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法。它是一种简单的语言,基于可用的命名空间(PageContext 属性)、嵌套属性和对集合、操作符(算术型、关系型和逻辑型)的访问符、映射到 Java 类中静态方法的可扩展函数以及一组隐式对象。

EL 提供了在 JSP 脚本编制元素范围外使用运行时表达式的功能。脚本编制元素是指页面中能够用于在 JSP 文件中嵌入 Java 代码的元素。它们通常用于对象操作以及执行那些影响所生成内容的计算。JSP 2.0 将 EL 表达式添加为一种脚本编制元素。

作用:

1,  获取数据:EL表达式用来替换jsp页面中的脚本表达式,他可以从各种类型的web作用域中检索Java对象,例如:访问javabean的属性,List集合,Map集合以及数组等来获取数据。

2,  执行运算:EL表达式可以在jsp页面执行一些基本的关系运算,逻辑运算和算术运算。

3,  获取web开发对象:EL表达式定义了一些隐式对象,利用这些提供的隐式对象,可以很轻松的获取对常用对象的引用,从而获得这些对象中的数据。

用法:

EL表达式的结构

${expresson}

例如:表达式A+B用EL表达式表示为${A+B}

[]与.运算符

EL 提供.和[]两种运算符来存取数据。

当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字的符号,就一定要使用 []。

例如:

${user.stu_number}应当改为${user["stu_number"] },使用.运算符来访问它会导致异常发生。

如果要动态取值时,用[]来做,而.无法做到动态取值。

例如:

${sessionScope.user[data]}中data 是一个变量

除此之外,EL表达式中一般使用.运算符来访问其属性,因为他比较简便快捷。

最常见的我们要访问HttpSession时:

${pageContext.session}

当要获取session的id标识时:

${pageContext.session.id}

我们可以看到,使用EL表达式确实很便捷。

EL表达式操作符

算术型

+、-、*、/、div、%、mod

逻辑型

and、&&、or、||、!、not

关系型

==、eq、!=、ne、<、lt、>、gt、<=、le、>=、ge

EL表达式还可以进行三目运算

如:${count?A:B}。

表示:如果count的计算结果是true,则输出结果是A,否则输出B。

常用场景:欢迎您:${user!=null ?user.username : '游客' }

这里首先判断user是否为空,不为空则去取username,为空则显示一个默认的昵称;如果不加判断直接取username,则容易出现空指针。

EL提供了判空运算符:empty

如:${empty username}

表示:判断jsp作用域中是否存在username,如果没有则返回true。(注意,这里是不存在返回的是true)。

EL表达式隐式对象

1,  pageContext

用于访问 JSP 隐式对象,如请求、响应、会话、输出、servletContext 等。

pageContext对象表示当前jsp页面中的javax.servlet.jsp.PageContext,他可以访问所有其他jsp的对象。

如下,列出其可以访问的jsp对象

request          

HttpServletRequest

response         

HttpServletResponse

session          

HttpSession(有开关的:page指令的session属性的取值)

application        

ServletContext

config           

ServletConfig

page           

this(当前Servlet对象)

exception        

java.lang.Throwable(有开关:page指令的isErrorPage属性改为true)

out           

JspWriter

pageContext为EL表达式的内置隐式对象,而通过它可以访问jsp中的九大内置对象,,那么间接的我们可以使用pageContext隐式的获取jsp中的其他内置对象了。

例如,${pageContext.response} 为页面的响应对象赋值。

2,  param

将请求参数名称映射到单个字符串参数值(通过调用 ServletRequest.getParameter (String name) 获得);getParameter(String) 方法返回带有特定名称的参数。

例如:表达式 ${param .name}相当于Servlet中的request.getParameter (name)

3,  paramValues

将请求参数名称映射到一个数值数组(通过调用ServletRequest.getParameter (String name) 获得);它与 param 隐式对象非常类似,但它检索一个字符串数组而不是单个值。

例如:表达式 ${paramvalues.name} 相当于 request.getParamterValues(name)。

4,  header

将请求头名称映射到单个字符串头值(通过调用ServletRequest.getHeader(String name) 获得)。

例如:表达式 ${header.name} 相当于 request.getHeader(name)。

5,  headerValues

将请求头名称映射到一个数值数组(通过调用ServletRequest.getHeaders(String) 获得)。它与头隐式对象非常类似。

例如:表达式${headerValues. name} 相当于 request.getHeaderValues(name)。

6,  cookie

将 cookie 名称映射到单个cookie 对象。向服务器发出的客户端请求可以获得一个或多个 cookie。

例如:表达式 ${cookie. name.value} 返回带有特定名称的第一个 cookie 值。

(如果请求包含多个同名的 cookie,则应该使用${headerValues. name} 表达式。)

7,  initParam

将上下文初始化参数名称映射到单个值(通过调用 ServletContext.getInitparameter(String name) 获得)。

例如:获取username的上下文参数值,使用${initParam.username}

EL表达式的4个Scope

pageScope

将页面范围的变量名称映射到其值。例如,EL 表达式可以使用 ${pageScope.objectName} 访问一个 JSP 中页面范围的对象,还可以使用 ${pageScope .objectName. attributeName} 访问对象的属性。

requestScope

将请求范围的变量名称映射到其值。该对象允许访问请求对象的属性。例如,EL 表达式可以使用 ${requestScope. objectName} 访问一个 JSP 请求范围的对象,还可以使用 ${requestScope. objectName. attributeName} 访问对象的属性。

sessionScope

将会话范围的变量名称映射到其值。该对象允许访问会话对象的属性。例如:

${sessionScope. name}

applicationScope

将应用程序范围的变量名称映射到其值。该隐式对象允许访问应用程序范围的对象。

EL表达式在最早的时候必须配合JSTL标签库才能使用。但在jsp2.0之后jsp容器已经可以独立的解析EL表达式了,但现在的开发中,EL表达式我们通常会拿来配合JSTL来使用,这样也会让jsp页面写起来更加简单。

JSTL标签库

介绍:

JSTL(JSP StandardTagLibrary,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。JSTL只能运行在支持JSP1.2和Servlet2.3规范的及其以上容器上,如tomcat 7.x。在JSP 2.0中也是作为标准支持的。

使用:

首先我们要引入jar,这里我们要引入两个jar ,jstl-1.2.jar和standard-1.1.2.jar,然后将这两个jar放入到WEB-INF下的lib文件夹中。然后在我们的jsp页面上要引入<%@ tagliburi="http://Java.sun.com/jsp/jstl/core"prefix="c"%>

JSTL标签中的五大类

标签库

作用

URL

前缀

核心

包含web应用的常见工作,包括循环、输入、输出等

http://java.sun.com/jsp/jstl/core

c

国际化

语言区域、消息、数字和日期的格式化

http://java.sun.com/jsp/jstl/fmt

fmt

XML

访问XML文件

http://java.sun.com/jsp/jstl/xml

x

数据库

访问数据库

http://java.sun.com/jsp/jstl/sql

sql

函数

集合长度,字符串操作

http://java.sun.com/jsp/jstl/functions

fn

1,  核心标签库<这个用到最多>

引用核心标签库的语法

<%@ taglib prefix="c"uri="http://java.sun.com/jsp/jstl/core" %>

JSTL 核心标签库(C标签)标签共有14个,功能上分为4类

1.表达式控制标签:out、set、remove、catch

2.流程控制标签:if、choose、when、otherwise

3.循环标签:forEach、forTokens

4.URL操作标签:import、url、redirect、param

标签作用介绍

<c:out>

在JSP中显示数据

<c:set>

保存数据

<c:remove>

删除数据

<c:catch>

处理产生错误的异常状况,并且将错误信息储存起来

<c:if>

与我们在一般程序中用的if一样

<c:choose>

本身只当做<c:when>和<c:otherwise>的父标签

<c:when>

<c:choose>的子标签,用来判断条件是否成立

<c:otherwise>

<c:choose>的子标签,接在<c:when>标签后,当<c:when>标签判断为false时被执行

<c:import>

检索一个绝对或相对 URL,然后将其内容暴露给页面

<c:forEach>

基础迭代标签,接受多种集合类型

<c:forTokens>

根据指定的分隔符来分隔内容并迭代输出

<c:param>

用来给包含或重定向的页面传递参数

<c:redirect>

重定向至一个新的URL.

<c:url>

使用可选的查询参数来创造一个URL

举例

forEach标签

<c:forEach items="${map}"var="entry"> ${entry.key},${entry.value }<br> </c:forEach>

Import标签

<c:importurl="http://localhost:8080/drp4.5/test_upload.html"/>

URL,param标签

<c:urlvalue="http://localhost:8080/drp4.5/sysmgr/validate.jsp"var="u"> <c:paramname="userId" value="zhangsan"/> <c:paramname="age" value="20"/> </c:url>

Choose,when,otherwise标签

<c:choose> <c:whentest="${v1 gt v2}"> v1大于v2<br> </c:when> <c:otherwise> v1小于v2<br> </c:otherwise>
</c:choose>

If标签

<c:if test="${v1 ltv2}"> v1小于v2<br> </c:if>

2,  国际化标签库

引用国际化标签库的语法

 <%@ taglib prefix="fmt"
uri="http://java.sun.com/jsp/jstl/fmt"%>


标签作用介绍

<fmt: setLocale>

设置全局的 Locale 信息,包括语言和国家代码

<fmt:bundle>

用于绑定资源文件在它的标签体内

<fmt:setBundle>

允许将资源配置文件保存为一个变量。

<fmt:message>

从指定的资源文件中把指定的键值取出来

<fmt:param>

为格式化文本串中的占位符设置参数值,只能嵌套在<fmt:message>标签内使用

<fmt:requestEncoding>

用于定义字符编码

<fmt:timezone>

设定时区,时区设定在标签体内起作用

<fmt:setTimeZone>

允许将时区设置保存为一个变量,结合属性 var 使用

<fmt:formatNumber>

根据 Locale 格式化数字,货币和百分比

<fmt:parseNumber>

用来将字符串类型的数字, 货币或百分比转换成数字类型

<fmt:formatData>

用来格式化日期

<fmt:parseDate>

将字符串类型的时间转换为日期类型

3,  XML标签库

引用XML标签库的语法

<%@ taglib prefix="x"uri="http://java.sun.com/jsp/jstl/xml" %>

标签作用介绍

<x:out>

与<%= ... >,类似,不过只用于XPath表达式

<x:parse>

解析 XML 数据

<x:set>

设置XPath表达式

<x:if>

判断XPath表达式,若为真,则执行本体中的内容,否则跳过本体

<x:forEach>

迭代XML文档中的节点

<x:choose>

<x:when>和<x:otherwise>的父标签

<x:when>

<x:choose>的子标签,用来进行条件判断

<x:otherwise>

<x:choose>的子标签,当<x:when>判断为false时被执行

<x:transform>

将XSL转换应用在XML文档中

<x:param>

与<x:transform>共同使用,用于设置XSL样式表

4,  数据库标签库

引用数据库标签库的语法

<%@ taglib prefix="sql"uri="http://java.sun.com/jsp/jstl/sql" %>

标签作用介绍

<sql:setDataSource>

指定数据源

<sql:query>

运行SQL查询语句

<sql:update>

运行SQL更新语句

<sql:param>

将SQL语句中的参数设为指定值

<sql:dateParam>

将SQL语句中的日期参数设为指定的java.util.Date 对象值

<sql:transaction>

在共享数据库连接中提供嵌套的数据库行为元素,将所有语句以一个事务的形式来运行

5,  函数标签库

引用函数标签库的语法

<%@ taglib prefix="fn"uri="http://java.sun.com/jsp/jstl/functions" %>

标签作用介绍

fn:contains()

测试输入的字符串是否包含指定的子串

fn:containsIgnoreCase()

测试输入的字符串是否包含指定的子串,大小写不敏感

fn:endsWith()

测试输入的字符串是否以指定的后缀结尾

fn:escapeXml()

跳过可以作为XML标记的字符

fn:indexOf()

返回指定字符串在输入字符串中出现的位置

fn:join()

将数组中的元素合成一个字符串然后输出

fn:length()

返回字符串长度

fn:replace()

将输入字符串中指定的位置替换为指定的字符串然后返回

fn:split()

将字符串用指定的分隔符分隔然后组成一个子字符串数组并返回

fn:startsWith()

测试输入字符串是否以指定的前缀开始

fn:substring()

返回字符串的子集

fn:substringAfter()

返回字符串在指定子串之后的子集

fn:substringBefore()

返回字符串在指定子串之前的子集

fn:toLowerCase()

将字符串中的字符转为小写

fn:toUpperCase()

将字符串中的字符转为大写

fn:trim()

移除首位的空白符

ps:JSTL标签用法最重要的是Core标签库,这个重点记一下,其余的用到了过来翻翻看看怎么写就可以了

EL表达式和JSTL标签库使用相关推荐

  1. spring mvc学习(37):JavaEE-JSP基础-EL表达式和JSTL标签库(Taglibs)

    EL表达式和JSTL标签库: 在JSP页面代替java代码,便于编写 一.EL表达式 作用: ${} 简化脚本表达式 <%= %> j2ee1.4以前版本需指定<%@ page is ...

  2. java标签库jstl-el表达式介绍使用配置手册_JAVA EE 实验报告EL表达式和jstl标签库的使用...

    昆明理工大学信息工程与自动化学院学生实验报告 ( 2013 -2014 学年第一学期) 课程名称:Java EE技术开课实验室:系机房444 2013 年 12月2 日年级.专业.班计科111 学号姓 ...

  3. 28. EL 表达式 以及 JSTL 标签库

    28. EL 表达式 以及 JSTL 标签库 1.EL 表达式 a)什么是 EL 表达式,EL 表达式的作用? EL 表达式的全称是:Expression Language.是表达式语言. EL 表达 ...

  4. Java Web - EL表达式和JSTL标签库

    在使用servlet和jsp的过程中,两者之间的数据流转是十分常见的,jsp实际上也是一种servlet,也就是两个servlet之间的数据流转,我们根据不同的使用场景选择使用,请求转发(在reque ...

  5. Struts标签、Ognl表达式、el表达式、jstl标签库这四者之间的关系和各自作用

    来自:http://blog.csdn.net/love_you_99/article/details/8184797 一 介绍 1.Struts2的作用 Struts2标签库提供了主题.模板支持,极 ...

  6. EL表达式和JSTL标签库学习笔记

    先说一些数据库的知识,在进行表的操作时,若有一对多的关系,则在建外键时应选择多的一方.如user和group的对应关系,应在一个user属于多少个group,而不是一个group有多少用户,虽然这样也 ...

  7. EL表达式与Jstl标签库学习

    一.EL表达式 1)概念:Expression Language(EL表达式),jsp文件内置的一种能简化代码的表达式,可供jsp文件对流转数据的读取. 2)作用:让 jsp 书写起来更加的方便.简化 ...

  8. EL表达式、JSTL标签库、文件上传和下载

    一.EL表达式 1.什么是EL表达式,EL表达式的作用? EL表达式的全称是:Expression Language,是表达式语言. EL表达式的作用:EL表达式主要是替代jsp页面中的表达式脚本在j ...

  9. 【JSP教科书】JSP知识在线指南(记录知识JSP体系、EL表达式、JSTL标签库、JSP开发模型和分页查询)

    文章目录 @[toc] 一.JSP简介 1.1 什么是JSP? 1.2 JSP的特点 1.3 JSP为什么也是Servlet 1.4 tomact服务器中的资源分析 1.4.1 tomact服务器中的 ...

最新文章

  1. c语言程序设计日历推后几天是星期几,C语言程序设计: 输入年月日 然后输出是星期几...
  2. 组件(2):使用Prop下发数据
  3. CPlus的简单线程的制作
  4. 一个抓取网站图片并提供批量下载功能的Chrome扩展
  5. matlab 按钮组设置,MATLAB中的单选按钮和按钮组
  6. 深度学习-超参数调优
  7. 剑指Offer面试题:28.连续子数组的最大和
  8. C++設計模式——策略模式
  9. (TPC-H测试 SF=10,SF=200) PostgreSQL 11 vs 10 vs Deepgreen
  10. 每个项目都不同:支持一个摄像头,到现在还没搞好
  11. AD16操作技巧笔记
  12. pythonplot绘图xrd_学术干货 | 手把手教你如何快速绘制XRD标准图
  13. origin做相关性分析图_Origin9.1科技绘图及数据分析
  14. 操作系统课堂笔记(4)进程管理之多道程序设计和进程
  15. 理解并取:frame-relay的工作原理
  16. Javaweb大作业文档部分预览
  17. 谷歌广告联盟怎么收款?google AdSense 广告款收取流程!(转载)
  18. Mockito 中被 Mocked 的对象属性及方法的默认值
  19. 解决群晖 “由于系统可用存储空间不足,您将无法登录“ 的问题
  20. 使用openlayers加载地图行政区域(结合百度云地图)

热门文章

  1. 真无线蓝牙耳机霸主之争:苹果AirPods和索尼WF-1000XM3怎么选?
  2. 相机翻转设计的华硕旗舰ZenFone 6固件更新:新增“超级夜间模式”
  3. 因弹幕系统技术升级 B站即日起至6月6日关闭弹幕功能
  4. 高通骁龙712移动平台正式发布!整体性能提升10%
  5. 女员工采购电影票抽中黄金 老板:必须上交 不上交就开除
  6. 聊聊Vue(前端Vue面试包过)【面试干货】
  7. opencv AKAZE 局部特征匹配算法
  8. 小女出世,暂停工作,全职照料大人小孩
  9. Ubuntu系统下ntp服务器搭建
  10. 目前使用的工具及开发方式