EL(Expression Language)表达式

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>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值