1. lEL 全名为Expression Language。EL主要作用:
l获取数据
•EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域
中检索java对象、获取数据。(某个web域 中的对象,访问javabean的属性、访问list集合、访问map集合、访问数组)
l执行运算
•利用EL表达式可以在JSP页面中执行一些基本的关系运算、逻辑运算和算术运算,以在JSP页面中完成一些简单的逻辑运算。${user==null}
l获取web开发常用对象
•EL 表达式定义了一些隐式对象,利用这些隐式对象,web开发人员可以很轻松获得对web常用对象的引用,从而获得这些对象中的数据。
l调用Java方法
•EL表达式允许用户开发自定义EL函数,以在JSP页面中通过EL表达式调用Java类的方法。
 
1.获取数据
EL表达式用于获取数据,在JSP页面中可使用${标识符}的形式,通知JSP引擎调用pageContext.findAttribute()方法,以标识符为关键字从各个域对象中获取对象。如果域对象中不存在标识符所对应的对象,则返回结果为””(注意,不是null)。
•示例:使用EL表达式获取request、session、applection域中的数据。
EL表达式中也可以使用${customerBean.address}的形式来访问JavaBean对象的属性。
•示例:使用EL表达式获取Bean属性。
结合JSTL标签,EL表达式也可轻松获取各种集合中的元素。
•示例:使用EL表达式获取List、Map集合中的元素。
EL表达式也可使用类如${1==1}的形式进行简单的逻辑判断。
 
JSTL标签库
•JSTL是sun公司开发的一套标签库,使用JSTL可以在页面中实现一些简单的逻辑,从而替换页面中的脚本代码。
•在页面中使用JSTL标签需完成以下2个步骤:

1、导入jstl.jar和standerd.jar这两个JSTL的jar文件。

2、在JSP页面中使用<%@ tablib url=“” prifix=“” %>元素导入标签库。

•JSTL标签库中常用标签:

<c:foreach var=“” items=“”>

<c:if test=“”>

<%@page import="javax.swing.plaf.basic.BasicScrollPaneUI.HSBChangeListener"%>
<%@page language="java" import="java.util.*,com.kevin.*" pageEncoding="UTF-8" errorPage="/errors/error.jsp"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Insert title here</title> </head>
<body> <font color="red"> <br />---------------------------------------------------<br />
<%
Person person = new Person("xiang");
request.setAttribute("person", person);
%>
${person.name } <br/> <br />---------------------------------------------------<br />
<%
List list = new ArrayList();
list.add(new Person("kevin"));
list.add(new Person("xiang"));
request.setAttribute("list", list);
%>
${list[0].name} <br/>
<c:forEach var="pList" items="${list}">
${pList.name} <br/>
</c:forEach> <br />---------------------------------------------------<br />
<%
Map map = new HashMap();
map.put("aaaa", new Person("aaaa___"));
map.put("1111", new Person("1111____"));
request.setAttribute("map", map);
%>
${map.aaaa.name} <br/>
${map['1111'].name} <br/>
<c:forEach var="entry" items="${map}">
${entry.key} : ${entry.value.name} <br />
</c:forEach> <br />---------------------------------------------------<br />
${pageContext.request.contextPath} <!-- 动态获取Web应用的路径 /WebTest4 --> <br />---------------------------------------------------<br />
<c:if test="${person==null}">
请登录!!!
</c:if>
<c:if test="${person!=null}">
欢迎:${person.name}
</c:if> </font> </body>
</html>

2. 执行运算



3. 获得web开发常用对象
4. 使用EL调用Java方法 (EL函数)
lEL表达式语法允许开发人员开发自定义函数,以调用Java类的方法。
•示例:${prefix:method(params)}
•在EL表达式中调用的只能是Java类的静态方法。
•这个Java类的静态方法需要在TLD文件中描述,才可以被EL表达式调用。
•EL自定义函数用于扩展EL表达式的功能,可以让EL表达式完成普通Java程序代码所能完成的功能。
EL函数 与 自定义标签的区别
虽然两者都可以移除JSP中的Java代码, 但是EL函数不能传入pageContext对象,所以只能移除与Web对象无关的Java代码。
EL Function开发步骤
编写Java类静态方法
public class HtmlFilter {
public static String filter(String message) { if (message == null)
return (null); char content[] = new char[message.length()];
message.getChars(0, message.length(), content, 0);
StringBuilder result = new StringBuilder(content.length + 50);
for (int i = 0; i < content.length; i++) {
switch (content[i]) {
case '<':
result.append("<");
break;
case '>':
result.append(">");
break;
case '&':
result.append("&");
break;
case '"':
result.append(""");
break;
default:
result.append(content[i]);
}
}
return (result.toString());
}
}
编写tld文件, 和自定义标签一样
<?xml version="1.0" encoding="UTF-8" ?>

<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<description>A tag library exercising SimpleTag handlers.</description>
<tlib-version>1.0</tlib-version>
<short-name>kevin</short-name>
<uri>http://www.kevin.com</uri>
<function>
<name>filter</name>
<function-class>com.kevin.web.tag.HtmlFilter</function-class>
<function-signature>java.lang.String filter( java.lang.String )</function-signature>
</function> </taglib>
JSP使用
<%@ page language="java" contentType="text/html; charset=UTF-8" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="http://www.kevin.com" prefix="fn" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Insert title here</title>
</head>
<body> <a href=''>点点</a>
${fn:filter("<a href=''>点点</a>")}
</body>
</html>
如果函数不只有一个参数 ,filter(String message, List list), 在Jsp中调用时不能在$中再 嵌套$,直接取域中的list即可,${fn:filter("<a href=''>点点</a>", list)}



5.EL函数库 
数据回显示例:
<body>

<%
User user = new User();
String[] licks = {"sing", "dance", "football"};
user.setLicks(licks);
request.setAttribute("user", user);
%> <input type="checkbox" name="lick" value="sing" ${fn:contains(fn:join(user.licks, ","),"sing")?'checked':''} />唱歌 <br />
<input type="checkbox" name="lick" value="dance" ${fn:contains(fn:join(user.licks, ","),"dance")?'checked':''} />跳舞 <br />
<input type="checkbox" name="lick" value="football" ${fn:contains(fn:join(user.licks, ","),"football")?'checked':''} />足球 <br />
<input type="checkbox" name="lick" value="basketball" ${fn:contains(fn:join(user.licks, ","),"basketball")?'checked':''} />篮球 <br /> </body>
</html>
EL函数库
contains boolean contains(java.lang.String, java.lang.String) ${fn:contains(name, searchString)}
containsIgnoreCase boolean containsIgnoreCase(java.lang.String, java.lang.String) ${fn:containsIgnoreCase(name, searchString)}
endsWith boolean endsWith(java.lang.String, java.lang.String) ${fn:endsWith(filename, ".txt")}
escapeXml java.lang.String escapeXml(java.lang.String) ${fn:escapeXml(param:info)}
indexOf int indexOf(java.lang.String, java.lang.String) ${fn:indexOf(name, "-")}
join java.lang.String join(java.lang.String[], java.lang.String) ${fn:join(array, ";")}
length int length(java.lang.Object) ${fn:length(shoppingCart.products)}
replace java.lang.String replace(java.lang.String, java.lang.String, java.lang.String) ${fn:replace(text, "-", "•")}
split java.lang.String[] split(java.lang.String, java.lang.String) ${fn:split(customerNames, ";")}
startsWith boolean startsWith(java.lang.String, java.lang.String) ${fn:startsWith(product.id, "100-")}
substring java.lang.String substring(java.lang.String, int, int) ${fn:substring(zip, 6, -1)}
substringAfter java.lang.String substringAfter(java.lang.String, java.lang.String) ${fn:substringAfter(zip, "-")}
substringBefore java.lang.String substringBefore(java.lang.String, java.lang.String) ${fn:substringBefore(zip, "-")}
toLowerCase java.lang.String toLowerCase(java.lang.String) ${fn.toLowerCase(product.name)}
toUpperCase java.lang.String toUpperCase(java.lang.String) ${fn.UpperCase(product.name)}
trim java.lang.String trim(java.lang.String) ${fn.trim(name)}

JavaWeb -- Jsp中的 EL表达式的更多相关文章

  1. jsp中的el表达式没有解析

    今天发现jsp中的el表达式没有解析,把解决的过程记录一下 在web.xml的web-app节点的版本改成2.4以上

  2. SSH 框架controller向jsp传递List jsp中使用el表达式获取

    mvc可以使用ModelAndViev传递数据选择跳转的视图 controller中的代码, 把一个模拟的表单studentListSimulate传给ModelAndView @RequestMap ...

  3. JSP中的EL 表达式

    JSP中的EL 表达式 什么是 EL 表达式,EL 表达式的作用? EL 表达式的全称是:Expression Language.是表达式语言. EL 表达式的什么作用:EL 表达式主要是代替 jsp ...

  4. JSP中使用EL表达式

    EL表达式 :EL 全名为Expression Language,就是为了替代<%= %>脚本表达式. EL主要作用: 获取数据: EL表达式主要用于替换JSP页面中的脚本表达式,以从各种 ...

  5. Jsp中的EL表达式

    EL表达式作用: 向浏览器输出域对象中的变量值或表达式计算的结果!!! 语法: ${变量或表达式} 可以通过page指令来设置EL表示是否启用,false是不启用,true是启用,默认是true &l ...

  6. 快速学会在JSP中使用EL表达式

    在没有学会EL表达式之前,我们想在JSP文件中获取servlet或者其他JSP页面传来的值,通常都是在JSP页面中编写java代码来实现.而在jsp页面编写Java 代码,这种做法时不规范的,将会产生 ...

  7. Java基础82 jsp中的EL表达式(网页知识)

    1.EL表达式的作用 EL表达式的作用:向浏览器输出域对象中的变量值或者表达式计算结果.语法:${变量或者表达式} 注: Jsp的核心语法:jsp的表达式<%= %>和jsp的脚本< ...

  8. JSP中的EL表达式详细介绍

    一.JSP EL语言定义 EL 提供了在 JSP 脚本编制元素范围外使用运行时表达式的功能.脚本编制元素是指页面中能够用于在 JSP 文件中嵌入 Java 代码的元素.它们通常用于对象操作以及执行那些 ...

  9. JSP中,EL表达式向session中取出一个attribute和JSP脚本访问session取出一个attribute,写法有何不同?(转自百度知道)

    EL表达式使用起来会更简洁,假如session中有一个属性A(attrA),那么EL和jsp脚本取值的方式如下: EL表达式:${ sessionScope.attrA } JSP脚本:<%=s ...

随机推荐

  1. Disable Client Certificate Revocation (CRL) Check on IIS

    Disable Client Certificate Revocation (CRL) Check on IIS: REGISTRY  : HKLM\SYSTEM\CurrentControlSet\ ...

  2. Coursera课程《Machine Learning》学习笔记(week2)

    1 特征 1-1 什么是特征? 我的理解就是,用于描述某个样本点,以哪几个指标来评定,这些个指标就是特征.比方说对于一只鸟,我们评定的指标就可以是:(a)鸟的翅膀大还是小?(b)鸟喙长还是短?(c)鸟 ...

  3. Yue Fei's Battle(组合计数递推)

    //求一个直径为 k 的树有多少种形态,每个点的度不超过 3 // 非常完美的分析,学到了,就是要细细推,并且写的时候要细心 还有除法取模需要用逆元 #include <iostream> ...

  4. HTML随意记录

    HTML特殊符号对照表: http://www.cnblogs.com/knowledgesea/archive/2013/07/24/3210703.html

  5. python问号堂--第二篇

    1.分别书写数字5,10,32,7的二进制表示? 5---0b101      10---0b1010     32---0b100000    7---0b111 以上结果可以bin()来检测 2. ...

  6. 通过profile优化SQL语句

    开启profile优化SQL语句:set profiling=1;执行SQL语句show profiles;show profile for query 2;//根据query_id 查看某个查询的详 ...

  7. 拟牛顿法——DFP、BFGS、L-BFGS

    DFP 该算法的核心是:通过迭代的方法,对Hk+1(-1)近似.迭代方式: 其中D0通常取为单位矩阵,关键是每一步构造矫正矩阵△Dk. 考虑△Dk 的待定形式为 拟牛顿的条件 这里插播一下拟牛顿的条件 ...

  8. Python2 socket 多线程并发 TCPServer Demo

    #coding=utf-8 import socket import threading,getopt,sys,string opts, args = getopt.getopt(sys.argv[1 ...

  9. Android下拉快捷设置面板添加快捷开关流程

    快速设定面板上快捷开关的加载流程,包括图标等的加载和点击事件等的处理过程,以及创建一个快捷开关的主要过程(以增加一个锁屏开关为例).本文所讨论的Android版本为5.1. 快捷开关的加载流程 资源模 ...

  10. active scaffold

    模板文件路径:/.rvm/gems/ruby-2.2.3/gems/active_scaffold-3.5.3/app/views/active_scaffold_overrides