您的位置:首页 > 其它

EL(Expression Language)表达式

2016-12-14 14:42 253 查看
EL 全名为Expression Language。EL主要作用:

获取数据:

EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域 中检索java对象、获取数据。(某个web域 中的对象,访问javabean的属性、访问list集合、访问map集合、访问数组)

执行运算:

利用EL表达式可以在JSP页面中执行一些基本的关系运算、逻辑运算和算术运算,以在JSP页面中完成一些简单的逻辑运算。${user==null}

获取web开发常用对象

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

调用Java方法

EL表达式允许用户开发自定义EL函数,以在JSP页面中通过EL表达式调用Java类的方法。
<%@page import="com.itheima.domain.Person"%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="http://www.itheima.com/MyFunc" prefix="myFunc" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>

<body>
<hr />
<h1>用来操作javabean的属性</h1>
<%
Person p = new Person();
p.setName("李四");
p.setAge(15);
pageContext.setAttribute("p", p);
%>
${p.age } <!--15 -->
${p.name }<!-- 李四 -->

<a href="${pageContext.request.contextPath }/index.jsp">xxxx</a>

<hr>
<h1>用来操作Map的数据</h1>
使用中括号的地方都可以使用点来替代,除了中扩号中为数字或包含特殊字符的情况.-
<br>
如果中括号中书写的值有引号,则el表达式直接使用该值。如果中扩中的值没有引号,则el表达式将其作为一个变量到域中搜寻变量的值,找到的变量的值作为关键字使用
<br>
<%
Map map = new HashMap();
map.put("name1", "张飞1");
map.put("name2", "张飞2");
map.put("name3", "张飞3");
pageContext.setAttribute("map", map);
pageContext.setAttribute("name2", "name3");
%>
${map["name2"]} <!--张飞2 -->
${map[name2] } <!-- 张飞3 -->
${map.name1 }<!-- 张飞1 -->
${map.name4 }<!-- 不输出任何内容 -->
<hr />
<h1>用来操作List的数据</h1>
<%
List list = new ArrayList();
list.add("11111");
list.add("22222");
list.add("33333");
pageContext.setAttribute("list", list);
%>
${list[1] }<!-- 22222 -->
<hr />
<h1>用来操作数组中的数据</h1>
<%
String[] names = { "aaa", "bbb", "ccc" };
pageContext.setAttribute("names", names);
%>
${names[1] }<!--bbb -->
<hr />
<h1>用来输出域中的数据</h1>
<%
pageContext.setAttribute("name", "张天师");
%>
${name }<!-- 张天师 -->
<hr />
<h1>el支持三元运算符</h1>
<%
int i = 10;
int num2 = i < 100 ? i : 100;
%>
${1>3?"你确定吗?":"1不可能大于3" }<!-- 1不可能大于3 -->
<hr>
<h1>el可以empty运算符,此运算符用来检查对象是否为null或“空”</h1>
null true 集合 虽然不为null 但是集合中内容为空,返回true 字符串 虽然部位null 但是字符串是空字符串“”
返回false
<%
String[] ns = {};
System.out.print(ns);
pageContext.setAttribute("ns", ns);
%>
${empty ns }<!-- true -->
<%
char[] nn = {};
pageContext.setAttribute("nn", nn);
%>
xxxx${empty nn }<!-- false -->

<hr>
<h1>el可以用来进行逻辑运算</h1>
&& and || or ! not
${1>3 || 3<5 } <!-- true -->
${1>3 or 3<5 }<!--true -->

<hr>
<h1>el可以用来进行关系运算</h1>
== eq > gt < lt <= le >= ge != ne ${1==1 }${1 eq 1 } ${1>2 }${1 gt 2 }
<%
int num = 10;
pageContext.setAttribute("num", num);
%>
${num>5 }<!--true -->
<hr>
<h1>el可以用来进行算数运算,在进行算术运算时,el将会试图把非数字转换为数字参与运算</h1>
${1+1}<!-- 2 -->

<hr />
<%
pageContext.setAttribute("class", "pageContext");
request.setAttribute("class", "request");
application.setAttribute("class", "application");
%>
<!-- http://localhost:8080/Test6/el1.jsp?name1=aaa&name2=333 -->
${param.name1 } <!-- aaa -->
${param.name2 } <!-- 333 -->
${header["Accept-Language"] }<!-- Accept-Language:zh-CN,zh;q=0.8 -->
${headerValues["Accept-Language"][0] } <!-- zh-CN,zh;q=0.8 -->
${cookie.JSESSIONID.name }<!-- JSESSIONID -->
${cookie.JSESSIONID.value } <!-- 0A550C47771A781130D5D37825465708 -->
<!--
web.xml
<context-param>
<param-name>name1</param-name>
<param-value>value1</param-value>
</context-param>
-->
${initParam.name1 }<!-- value1 -->
<hr/>
<h1>调用java里面的方法</h1>
<!--
1.WEB-INF目录下 myFunc.tld
<?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.0" 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"> <tlib-version>1.0</tlib-version>
<short-name>myFunc</short-name>
<uri>http://www.itheima.com/MyFunc</uri>
<function>
<name>encode</name>
<function-class>com.itheima.el.MyURLEncoder</function-class>
<function-signature> java.lang.String MyEncode( java.lang.String ,java.lang.String ) </function-signature>
</function>
</taglib>
2.在com.itheima.el包创建MyURLEncoder。java
package com.itheima.el;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

public class MyURLEncoder {
//将传入的字符串进行URL编码后返回
public static String MyEncode(String str,String charset){
try {
return URLEncoder.encode(str, charset);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
throw new RuntimeException();
}
}
}
3.<%-- <%@taglib uri="http://www.itheima.com/MyFunc" prefix="myFunc" %> --%>
-->
${myFunc:encode("涂文远","utf-8") }<!-- %E6%B6%82%E6%96%87%E8%BF%9C -->
<hr/>
<h1>jstl中的常用el函数</h1>
${fn:toUpperCase("xxxHJKLSDfkjsdKJkfdkfjkSD") }<!-- XXXHJKLSDFKJSDKJKFDKFJKSD -->
${fn:toLowerCase("xxxHJKLSDfkjsdKJkfdkfjkSD") }<!-- xxxhjklsdfkjsdkjkfdkfjksd -->
${fn:trim(" www.it315.org ") }<!--www.it315.org-->
${fn:length("www.it315.org") }<!-- 13-->
${fn:split("www.baidu.com",".")[1] }<!--baidu -->
${fn:join(fn:split("www,baidu,com",","),".") }<!--www.baidu.com -->
${fn:indexOf("www.baidu.com","baidu") }<!--4 -->
${fn:contains("www.baidu.com","baidu") }<!--true -->
${fn:containsIgnoreCase("www.baidu.com","Baidu") }<!-- true-->
${fn:startsWith("www.baidu.com","www") }<!-- true -->
${fn:endsWith("www.baidu.com","cn") }<!-- false -->
${fn:replace("www it315 org", " ", ".") }<!--www.it315.com -->
${fn:substring("www.baidu.com",4,9) }<!-- baidu -->
${fn:substringAfter("www.baidu.com",".") }<!--baidu.com -->
${fn:substringBefore("www.baidu.com",".") }<!-- www -->
</body>
</html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: