表达式语言EL

表达式语言

  EL(Expression Language,表达式语言)主要是用在JSP页面中,用来辅助我们产生无脚本的JSP页面,此处的脚本指的是JSP中的Java代码。

  EL的语法是这样的:

${expr}

  如果你想在页面上直接输出上面的内容,需要进行转义,加上反斜杠即可:

\${expr}

  再比如:

${sessionScope.user.sex}

  所有EL都是以 ${ 为起始、以} 为结尾的。

  Expressions can be used in two ways:

  1.Attribute values in custom and standard actions

  2.Within template text

EL可以用来访问Java Bean

  Beans within the namespace available to the JSP can be accessed easily using EL.

  1.Beans can be accessed by way of dot notation:

  ${bean.attribute}

  2.Beans can be located by searching through the scopes:

  page, request, session and application.

  3.Bean scope can be specified by preceding the bean name with the scope.

  ${sessionScope.cust.firstName}

实例1

  JSP页面el1.jsp里有一个表单:

  <body>
<form action="el/el2.jsp">
username: <input type="text" name="username">
<input type="submit" value="submit">
</form>
</body>

  在页面el2.jsp里面获取这个参数显示:

  之前可以:

  <%= request.getParameter("username") %>

  现在可以:

${ param.username }

  两种效果是一样的。唯一的不同是使用EL打出点之后即便Alt+/也没有任何的输入提示。

实例页面

  也可以显示Session中的属性值:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'el1.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
--> </head> <body>
<form action="el/el2.jsp">
username: <input type="text" name="username"><br>
interest: <input type="text" name="interest"><br>
interest: <input type="text" name="interest"><br>
interest: <input type="text" name="interest"><br>
interest: <input type="text" name="interest"><br>
interest: <input type="text" name="interest"><br>
<input type="submit" value="submit">
</form> <% session.setAttribute("hello", "world");%>
</body>
</html>

el1.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'el2.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
--> </head> <body> get parameter user name:
<br>
<%=request.getParameter("username")%>
<br>
${ param.username }
<br>
<br>
get session attribute:
<br>
<%=session.getAttribute("hello")%>
<br>
${ sessionScope.hello } <br>
get param in an array:
<br>
${ paramValues.interest[3] } <br>
calculation:
<br>
${ 3/4 }
<br>
${3 div 5}
</body>
</html>

el2.jsp

EL默认对象

运算符

  EL表达式支持:

5个算术运算符:

  加(+)减(-)乘(*)除(/ and div)和取模(% and mod)。

6个比较操作符:

3个逻辑运算符:

.和[]运算符

  EL 提供 . [ ] 两种运算符来存取数据。下列两者所代表的意思是一样的

  ${sessionScope.user.sex} 等于

  ${sessionScope.user["sex"]}

  . 和 [ ] 也可以同时混合使用,如下:

  ${sessionScope.shoppingCart[0].price}

  回传结果为shoppingCart中第一项物品的价格。

两者差异:

差异1:特殊字符需要包含在[]里。

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

  ${user.My-Name }

  上述是不正确的方式,应当改为:

  ${user["My-Name"] }

差异2:[]中可以放置变量,进行动态取值。

  ${sessionScope.user[data]}

  此时,data 是一个变量。

  假若data的值为"sex"时,那上述的例子等于${sessionScope.user.sex};

  假若data 的值为"name"时,它就等于${sessionScope.user.name}。

  因此,如果要动态取值时,就可以用上述的方法来做,但 . 无法做到动态取值

EL变量

  EL 存取变量数据的方法很简单,例如:${username}。

  它的意思是取出某一范围中名称为username的变量。

  因为我们并没有指定哪一个范围的username,所以它的默认值会先从Page 范围找,假如找不到,再依序到Request、Session、Application范围。

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

  我们也可以指定要取出哪一个范围的变量。如:

pageContext

  可以使用${pageContext}来取得其他有关用户要求或页面的详细信息:

参考资料

  圣思园张龙老师Java Web视频教程。

表达式语言EL的更多相关文章

  1. 表达式语言EL简单学习

    Jsp2.0最重要的特性就是表达式语言EL.jsp用户可以用它来访问应用程序数据. EL表达式以${开头并以}结束. ${expresion}     ${x+y} 它也常用来连接两个表达式,取值将从 ...

  2. 06.十分钟学会表达式语言EL

    一. 概念:MVC设计模式一个主要好处就是让jsp中的代码越来越来少,而且规定只能出现三种代码:接收属性,判断语句,迭代输出.但是,在开发中,jsp输出至少还是需要接受VO对象的,这时候为了避免导入V ...

  3. Java EE之表达式语言EL(上)

    1.了解表达式语言 表达式语言(EL)用于在不使用脚本.声明或者表达式的情况下,在JSP页面中渲染数据. EL曾是JSTL 1.0规范(与JSP 1.2)中的一部分,并且只可以用作JSTL标签的特性. ...

  4. 【jsp】详解JSP表达式语言(EL)

    一.JSP EL语言定义 E L(Expression Language)  目的:为了使JSP写起来更加简单. 表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 ...

  5. Java EE之表达式语言EL(下)

    1.在EL表达式中使用作用域变量 表达式语言对作用域变量的支持,以及它解析变量的方式都使它变得非常有用. 1.1 EL表达式的隐式变量 EL表达式的作用域中定义了11个隐式变量. 当EL表达式引用了一 ...

  6. JSP简明教程(四):EL表达式语言、JavaBean、Cookie、Session

    EL表达式语言 EL这是Expression Language.的目的是为了简化JSP句法.来看几个例子来清除. ${test} 它会被翻译成<%=test%> ${test.name} ...

  7. EL(Expression Language)表达式语言

    EL(Expression Language)表达式语言 EL的基本语法是以${开始,以}结束 为了能够方便地输出数据,EL提供了11个内置对象,其中 2个内置对象为了方便输出请求参数 param用来 ...

  8. Java EE JSP内置对象及表达式语言

    一.JSP内置对象 JSP根据Servlet API规范提供了一些内置对象,开发者不用事先声明就可使用标准变量来访问这些对象. JSP提供了9种内置对象: (一).request 简述: JSP编程中 ...

  9. JSP 表达式语言

    JSP 表达式语言 JSP表达式语言(EL)使得访问存储在JavaBean中的数据变得非常简单.JSP EL既可以用来创建算术表达式也可以用来创建逻辑表达式.在JSP EL表达式内可以使用整型数,浮点 ...

随机推荐

  1. SQL Server在执行SQL语句时,表之间驱动顺序对性能的影响

    环境:SQL Server2012 SP3 企业版,开发服务器,并没有什么负载,全库索引统一Rebuild过 经反复执行验证过, 不算太复杂的SQL(存储过程中代入参数抠出来的SQL代码) 默认情况下 ...

  2. ”Connection reset by peer“引发的思考

    闲来无事,把之前写的一个游戏服务器框架(<一个java页游服务器框架>),部署到阿里云服务器上,测试运行了下,结果看到后台log中打印出了“Connection reset by peer ...

  3. JAVA 设计模式 迭代器模式

    用途 迭代器模式 (Iterator) 提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示. 迭代器模式是一种行为型模式. 结构

  4. 实现UniqueAttribute唯一性约束

    using System; using System.ComponentModel.DataAnnotations; using System.Data.Entity; namespace Zwj.T ...

  5. Fiddler 抓取手机APP数据包

    Fiddler是一个调试代理,下载地址http://www.telerik.com/download/fiddler 下载安装运行后,查出运行机器的IP,手机连接同一网域内的WIFI,手机WIFI连接 ...

  6. [转] MySql 优化 大数据优化

    一.我们可以且应该优化什么? 硬件 操作系统/软件库 SQL服务器(设置和查询) 应用编程接口(API) 应用程序 ------------------------------------------ ...

  7. 使用ViewModel来实现多个Model传送至视图

    在开发ASP.NET MVC时,我们会遇上这样的情形,需要一次性传送多个Model从控制器Controller至视图View. 实现很简单,只是创建一个集合类即可. Ok,下面先在数据库准备一些数据, ...

  8. LINQ使用Lambda表达式选择几列

    学习LINQ的Lambda的表达式,尝试从数据集合中,选择其中几列. 创建一个model: source code: namespace Insus.NET.Models { public class ...

  9. 在Winform开发中使用日程控件XtraScheduler(2)--深入理解数据的存储

    在上篇随笔<在Winform开发中使用日程控件XtraScheduler>中介绍了DevExpress的XtraScheduler日程控件的各种使用知识点,对于我们来说,日程控件不陌生,如 ...

  10. WebApp简单制作(后端也可以装逼啦)

    前端越来越吃香的感觉 年后回来,跟之前和几个同事和朋友聊天,发现有两个.net的和一个php的朋友都转到了前端,真是出乎意料.自从之前的webapp兴起后,前端感觉比后端吃香很多,总结朋友们转的原因, ...