表达式语言EL

表达式语言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>

<%@ 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>

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视频教程。

时间: 2024-10-06 18:03:42

表达式语言EL的相关文章

表达式语言EL简单学习

Jsp2.0最重要的特性就是表达式语言EL.jsp用户可以用它来访问应用程序数据. EL表达式以${开头并以}结束. ${expresion}     ${x+y} 它也常用来连接两个表达式,取值将从左到右进行,计算结果为String.   加入a+b等于8,c+d等于10,则两个表达式的计算结果为810      ${a+b}${c+d} 表达式${a+b}and${c+d}的取值结果则为8and10 如果在定制标签的属性值中使用EL表达式,那么表达式的取值结果将会强制变成该属性需要的类型:

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

EL表达式语言 EL就是Expression Language,目的是简化JSP的语法.来看几个例子就明白了. ${test} 会翻译成<%=test%> ${test.name} 会翻译成 <%=test.getName()%> ${sessionScope.username}} 会翻译成 <%=session.getAttribute("username")%> 只有sessionScope.requestScope等才会翻译成getAttrib

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

一.JSP内置对象 JSP根据Servlet API规范提供了一些内置对象,开发者不用事先声明就可使用标准变量来访问这些对象. JSP提供了9种内置对象: (一).request 简述: JSP编程中最常用的对象,代表来自客户端的请求,调用request对象相应的方法可以获取关于客户请求的信息. 常见方法的用法示例: 1 <font size=5> 2 <br>客户端使用的协议是: 3 <% 4 String protocol = request.getProtocol();

JSP 表达式语言

JSP 表达式语言 JSP表达式语言(EL)使得访问存储在JavaBean中的数据变得非常简单.JSP EL既可以用来创建算术表达式也可以用来创建逻辑表达式.在JSP EL表达式内可以使用整型数,浮点数,字符串,常量true.false,还有null. 一个简单的语法 典型的,当您需要在JSP标签中指定一个属性值时,只需要简单地使用字符串即可: JSP EL允许您指定一个表达式来表示属性值.一个简单的表达式语法如下: ${expr} 其中,expr指的是表达式.在JSP EL中通用的操作符是".

【JSP】EL表达式语言

EL简介 EL语言原本是JSTL1.0中的技术(所以EL和JSTL配合如此亲密和默契也就是自然的了),但是从JSP2.0开始(JSTL1.1)就分离出来纳入了JSP的标准了.因此EL不需要任何jar包,他是集成到JSP技术本身中的了. 由于EL定位是 表达式语言,因此EL只能用于做简单的运算和取值,它是JSP无脚本化的一个利器,非常易学. EL的特点 1.所有的EL表达式的格式 ${   expression   },例如取的一个对象user的age属性 ${ user.name } 2.可以使

Spring基础系列6 -- Spring表达式语言(Spring EL)

Spring基础系列6 -- Spring表达式语言(Spring EL) 转载:http://www.cnblogs.com/leiOOlei/p/3543222.html 本篇讲述了Spring Expression Language —— 即Spring3中功能丰富强大的表达式语言,简称SpEL.SpEL是类似于OGNL和JSF EL的表达式语言,能够在运行时构建复杂表达式,存取对象属性.对象方法调用等.所有的SpEL都支持XML和Annotation两种方式,格式:#{ SpEL exp

JSP页面中EL表达式语言的使用详解

JavaBean在JSP中的局限 获取JavaBean属性必须要实例化 强制类型转化 <% Employee employee = (Employee)request.getAttribute("employee"); Computer comp = employee.getComputer(); String manufacturer = comp.getManufacturer(); %> 如果页面编写出现逻辑错误,将会导致代码执行错误,并且JSP页面编译页面时也会产生

JSP表达式语言(EL)

JSP表达式语言(EL)使得访问存储在JavaBean中的数据变得非常简单.JSP  EL既可以用来创建算术表达式也可以用来创建逻辑表达式.在JSP  EL表达式内可以使用整数型.浮点型.字符串.常量true.false,还有null.一般的在JSP标签中指定一个属性值时,需要使用一大行代码: <jsp:setProperty name="box" property="perimeter" value="100" /> JSP  EL

JSP的EL表达式语言

以下内容引用自http://wiki.jikexueyuan.com/project/jsp/expression-language.html: JSP表达式语言(EL)可以方便地访问存储在JavaBean组件中的应用程序的数据.JSP EL允许创建表达式(a)算术和(b)逻辑.在一个JSP EL表达式中,可以使用整数.浮点型数字.字符串.内置的布尔常量值为true和false和null. 一.简单的语法 通常,当给JSP标签指定一个属性值时,只需使用一个字符串.例如: <jsp:setProp