EL表达式入门必看篇(推荐)

为了使JSP写起来更加简单。表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法。

JSP EL语言定义

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

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

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

一、JSP EL简介

1、语法结构

${expression}

2、[ ]与.运算符

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

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

${user.My-Name} 应当改为${user["My-Name"]}

如果要动态取值时,就可以用"[ ]"来做,而"."无法做到动态取值。例如:

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

3、变量

EL存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为username的变量。

因为我们并没有指定哪一个范围的username,所以它会依序从Page、Request、Session、Application范围查找。

假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传null。


属性范围


EL中的名称


Page


PageScope


Request


RequestScope


Session


SessionScope


Application


ApplicationScope

二、JSP EL 中的有效表达式

有效表达式可以包含文字、操作符、变量(对象引用)和函数调用。我们将分别了解这些有效表达式中的每一种:

1、文字

JSP 表达式语言定义可在表达式中使用的以下文字:


文字


文字的值


Boolean


true 和 false


Integer


与 Java 类似。可以包含任何正数或负数,例如 24、-45、567


Floating Point


与 Java 类似。可以包含任何正的或负的浮点数,例如 -1.8E-45、4.567


String


任何由单引号或双引号限定的字符串。对于单引号、双引号和反斜杠,使用反斜杠字符作为转义序列。

必须注意,如果在字符串两端使用双引号,则单引号不需要转义。


Null


null

2、操作符

JSP 表达式语言提供以下操作符,其中大部分是 Java 中常用的操作符:


术语


定义


算术型


+、-(二元)、*、/、div、%、mod、-(一元)


逻辑型


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


关系型


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

可以与其他值进行比较,或与布尔型、字符串型、整型或浮点型文字进行比较。



空操作符是前缀操作,可用于确定值是否为空。


条件型


A ?B :C。根据 A 赋值的结果来赋值 B 或 C。

3、隐式对象

JSP 表达式语言定义了一组隐式对象,其中许多对象在 JSP scriplet 和表达式中可用:


pageContext


JSP 页的上下文。它可以用于访问 JSP 隐式对象,如请求、响应、会话、输出、servletContext 等。

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

此外,还提供几个隐式对象,允许对以下对象进行简易访问:


术语


定义


param


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

getParameter (String) 方法返回带有特定名称的参数。表达式 $(param.name) 相当于 request.getParameter (name)。


paramValues


将请求参数名称映射到一个数值数组(通过调用 ServletRequest.getParameter (String name) 获得)。

它与 param 隐式对象非常类似,但它检索一个字符串数组而不是单个值。表达式 ${paramvalues.name) 相当于 request.getParamterValues(name)。


header


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

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


headerValues


将请求头名称映射到一个数值数组(通过调用 ServletRequest.getHeaders(String) 获得)。

它与头隐式对象非常类似。表达式 ${headerValues.name} 相当于 request.getHeaderValues(name)。


cookie


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

表达式 ${cookie.name.value} 返回带有特定名称的第一个 cookie 值。如果请求包含多个同名的 cookie,则应该使用 ${headerValues.name} 表达式。


initParam


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

除了上述两种类型的隐式对象之外,还有些对象允许访问多种范围的变量,如 Web 上下文、会话、请求、页面:


术语


定义


pageScope


将页面范围的变量名称映射到其值。

例如,EL 表达式可以使用 ${pageScope.objectName} 访问一个 JSP 中页面范围的对象,

还可以使用 ${pageScope.objectName.attributeName} 访问对象的属性。


requestScope


将请求范围的变量名称映射到其值。该对象允许访问请求对象的属性。

例如,EL 表达式可以使用 ${requestScope.objectName} 访问一个 JSP 请求范围的对象,

还可以使用 ${requestScope.objectName.attributeName} 访问对象的属性。


sessionScope


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

例如:${sessionScope.name}


applicationScope


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

三、特别强调:

1、注意当表达式根据名称引用这些对象之一时,返回的是相应的对象而不是相应的属性。例如:即使现有的 pageContext 属性包含某些其他值,${pageContext}也返回 PageContext 对象。

2、 注意 <%@ page isELIgnored="true" %> 表示是否禁用EL语言,TRUE表示禁止.FALSE表示不禁止.JSP2.0中默认的启用EL语言。

四、举例说明

1、例如,

<%=request.getParameter("username")%>      等价于       ${param.username}

2、例如,但是下面的那句EL语言可以完成如果得到一个username为空,则不显示null,而是不显示值。

<%=user.getAddr()%>      等价于     ${user.addr}。

3、例如:

<%=request.getAttribute("userlist")%>     等价于    ${ requestScope.userlist }

4、例如,原理如上例3。

${sessionScope.userlist}             1

${requestScope.userlist}             2

${applicationScope.userlist}         3

${pageScope.userlist}             4

${uselist}:执行顺序为4 1 2 3。

"."后面的只是一个字符串,并不是真正的内置对象,不能调用对象。

5、例如,

<%=user.getAddr()%>     等价于     ${user.addr}

第一句前面的user,为一个变量。

第二句后面user,必须为在某一个范围里的属性。

以上这篇EL表达式入门必看篇(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • JSP EL表达式详细介绍

    一.JSP EL语言定义 E L(Expression Language)  目的:为了使JSP写起来更加简单. 表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法.它是一种简单的语言,基于可用的命名空间(PageContext 属性).嵌套属性和对集合.操作符(算术型.关系型和逻辑型)的访问符.映射到 Java 类中静态方法的可扩展函数以及一组隐式对象.       EL 提供了在 JSP 脚本编制元素范围外使用运行时表达式的功能.

  • 实例解析JSP中EL表达式的各种运用

    EL运算符: <%@page language="java" contentType="text/html;charset=gb2312"%> <%@page import="java.sql.*" %> <!DOCTYPE html> <html> <head> <title>El算数运算符</title> </head> <body>

  • JSP 不能解析EL表达式的解决办法

    原因是:在默认情况下,Servlet 2.4 / JSP 2.0支持 EL 表达式. 解决的办法有两种: 1.修改web.xml的开头定义. 复制代码 代码如下: <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=&quo

  • jsp 不支持EL表达式,解决办法

    如果有以下内容,表示是Servlet 2.3 / JSP 1.2. <!--CTYPE web-app PUBLIC </sp--> "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> 在默认情况下,Servlet 2.3 / JSP 1.2是不支持EL表达式的,而Servlet 2.4 / JS

  • EL表达式入门必看篇(推荐)

    为了使JSP写起来更加简单.表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法. JSP EL语言定义 E L(Expression Language)目的:为了使JSP写起来更加简单. 表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法.它是一种简单的语言,基于可用的命名空间(PageContext 属性).嵌套属性和对集合.操作符(算术型.关系型和逻辑型)的访问符.映射

  • PowerShell管道入门必看篇(管道例子大全)

    PowerShell的一个重中之重的功能就是管道(pipeline),本文从浅入深,一步一步详解管道的使用方法和例子,来看看有没有你所不知道的吧,如果全知道,恭喜你已经很厉害啦--适用于所有PowerShell应用小白与技术老鸟.另外欢迎各位技术大牛来补充讨论学习~ 1. 管道(pipeline)是什么 在Shell中一个重要的基本概念就是管道(pipeline),即在一组命令中,输出的命令结果成为下一个命令的输入参数.管道的概念与真实生活中的生产线比较相似:在不同的生产环节进行连续的再加工,如

  • JavaScript基础教程——入门必看篇

    JavaScript他是一种描述性语言,其实他并不难学,只要用心学,一定会学好,我相信大家在看这篇文章的时候,一定也学过HTML吧,使用JavaScript就是为了能和网页有更好的交互,下面切入主题. 一. JavaScript 1.什么是JavaScript JavaScript是一种描述性语言,也是一种基于对象(Object)和事件驱动(Event Driven)的,并具有安全性的脚本语言. 2.JavaScript的特点 JavaScript主要用来向HTML页面添加交互行为. JavaS

  • JavaScript_object基础入门(必看篇)

    之前写Java时老是有点蒙,大部分都是用jQuery,但原理还不是很清楚,最近一段时间在系统的学习JavaScript,有什么问题或错误请指出,多谢..................... Object所有类的基础类 var obj = new Object(); var obj = {}; //实例化对象 给对象设置属性分为两种: 1.使用直接量的方式:对象.属性/方法,这种方式直观.易懂 obj.name = '张三'; obj.age = 20; obj.sex = '男'; obj.s

  • JUnit单元测试入门必看篇

    什么是单元测试 写了个类,要给别人用,会不会有bug?怎么办?测试一下. 用main方法测试好不好?不好! 不能一起运行! 大多数情况下需要人为的观察输出确定是否正确 为什么要进行单元测试 重用测试,应付将来的实现的变化. 提高士气,明确知道我的东西是没问题的. JUnit4 HelloWorld 需要导入JUnit和hamcrest包 new project 建立类 建立testcase assertThat 使用hamcrest的匹配方法 放弃旧的断言,使用hamcrest断言 a)   a

  • 基于Mybatis的配置文件入门必看篇

    Mybatis 配置文件入门 从这篇文章开始,我们将从其核心配置文件入手,对Mybatis支持的核心配置文件进行简单详细的描述. 从下面这段代码是我们在使用mybatis前的配置初始化过程 我们通过阅读其源码来逐步了解内部实现原理. // Mybatis 通过SqlSessionFactory获取SqlSession, 然后才能通过SqlSession与数据库进行交互 private static SqlSessionFactory getSessionFactory() { SqlSessio

  • JSP中EL表达式的用法详解(必看篇)

    EL 全名为Expression Language EL 语法很简单,它最大的特点就是使用上很方便.接下来介绍EL主要的语法结构: ${sessionScope.user.sex} 所有EL都是以${为起始.以}为结尾的.上述EL范例的意思是:从Session的范围中,取得 用户的性别.假若依照之前JSP Scriptlet的写法如下: User user =(User)session.getAttribute("user"); String sex =user.getSex( );

  • 新手如何快速入门Python(菜鸟必看篇)

    学习任何一门语言都是从入门(1年左右),通过不间断练习达到熟练水准(3到5年),少数人最终能精通语言,成为执牛耳者,他们是金字塔的最顶层.虽然万事开头难,但好的开始是成功的一半,今天这篇文章就来谈谈如何开始入门Python.只要方向对了,就不怕路远. 设定目标 当你决定入门 Python 时,需要一个清晰且短期内可实现的目标,比如通过学习找一份初级程序员工作,目标明确后,你需要了解企业对初级程序员有哪些技能要求,下面是我从拉勾网找的一个初级 Python 工程师的任职要求: 1.熟悉 Pytho

  • AugularJS从入门到实践(必看篇)

    前 言 前端 AngularJS是为了克服HTML在构建应用上的不足而设计的.(引用百度百科) AngularJS使用了不同的方法,它尝试去补足HTML本身在构建应用方面的缺陷.AngularJS通过使用我们称为指令(directives)的结构,让浏览器能够识别新的语法.(引用百度百科) 例如: 使用双大括号{{}}语法进行数据绑定: 使用DOM控制结构来实现迭代或者隐藏DOM片段: 支持表单和表单的验证: 能将逻辑代码关联到相关的DOM元素上: 能将HTML分组成可重用的组件. 本篇学习主要

  • 新入门node.js必须要知道的概念(必看篇)

    一.对于一个刚入门node.js的朋友来说,一定要了解一些基础概念: 今年我正式进入社会后,发现自己所知道的IT方面的知识,真的只是牛毛,原来人外有人,山外有山,还需要继续努力.下面是一些我的自学习心得,发出来和大家一起分享: web的开发原理: 1.C/S模式(客户端/服务器)比如:QQ.微信等要先下载客户端的软件都可以称为c/s模式,它是有专门的客户端程序. 2.B/S模式(浏览器/服务器)比如:网页游戏.它的优点是:不需要下载客户端应用.缺点是:浏览器本身,因为有些浏览器不支持. 下面是依

随机推荐