EL表达式

一、EL表达式简介

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类的方法。

二、EL的作用

 a)获取数据
普通变量/JavaBean/List/Set/Map,注意,一定要将其放置到域对象中
        如果在域中找不到对应的值,返回空白字符串,不是NULL


  b)执行运算
算术/关系/逻辑
有用的二个运算:empty和**?**:**(二元运算符)


 c)获取web开发常用对象(11个隐式对象)

d)调用Java方法,即EL自定义函数
        EL是对标签(自定义和JSTL标签)
补充和简化

三、EL表达式语言中定义了11个隐含对象

隐含对象
对象类型
说明
pageContext
javax.servlet.jsp.PageContext
用于访问jsp内置对象
param
java.util.Map
包含页面所有参数的名称和对应值的集合
paramValues
java.util.Map
包含页面所有参数的名称和对应多个值的集合
header    
java.util.Map
包含每个header名和值的集合
headerValues
java.util.Map
包含每个header名和可能的多个值的集合
cookie
java.util.Map
包含每个cookie名和值的集合
initParam   
java.util.Map
包含Servlet上下文初始请求参数名和对应值的集合
pageScope    
java.util.Map
包含page页面范围内的属性值的集合
requestScope
java.util.Map
包含request请求范围内属性值的集合
sessionScope
java.util.Map
包含session绘画范围内的属性值的集合
applicationScope
java.util.Map
包含application应用范围内的属性值的集合


四、EL自定义函数的开发步骤

a)写一个EL函数类,该类无需继承和实现任何类或接口

//${el:filter("")}//普通类 
public class Filter {
	//EL自定义函数 	
	public static String filter(String message) {
        if (message == null)
            return (null);
        char content[] = new char[message.length()];
        message.getChars(0, message.length(), content, 0);
        StringBuffer result = new StringBuffer(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());
    }
}
b )在WEB-INF/*.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">
  <tlib-version>1.0</tlib-version>
  <short-name>el</short-name>
  <uri>http://java.sun.com/jsp/jstl/el</uri>
  <function>
    <name>filter</name>(函数名)
    <function-class>cn.itcast.web.jsp.el.Filter</function-class>(函数处理类的完整路径)
    <function-signature>java.lang.String filter(java.lang.String)</function-signature>(函数方法签名)
  </function>
</taglib>
c)在需要使用的jsp文件中,能过<%@taglib%>指令引入对应的EL函数

<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/el" prefix="el" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <body>
	${el:filter('<script type="text/javascript">while(true){window.alert("haha");}</script>')}<br/>
</body>
</html>

五、JSTL中的常用EL函数
	转小写:${fn:toLowerCase("ww.ITCAST.cn")}<br/>
 	转大写:${fn:toUpperCase("ww.ITCAST.cn")}<br/>
 	去空格前的长度:${fn:length("  www.itcast.cn  ")}<br/>
 	去空格后的长度:${fn:length(fn:trim("  www.itcast.cn  "))}<br/>
       *拆分字符串:${fn:split("www.itcast.cn",".")[2]}<br/>
 	<%
 		String[] sArr = {"www","itcast","cn"};
 		pageContext.setAttribute("SARR",sArr);
 	%>
       *合并字符串:${fn:join(SARR,"#")}<br/>
 	查询字符串:${fn:indexOf("www.itcast.cn","it")}<br/>
 	<%-- 找到返回首字母的索引号,从0开始,找不找返回-1 --%>
 	包函字符串:${fn:contains("www.itcast.cn","itcast")}<br/> 
 	<%-- 找到返回true,否则返回false--%>
 	指定字符串开始:${fn:startsWith("http://localhost:8080/day17/welcome.jsp","http://")}<br/> 
 	指定字符串结束:${fn:endsWith("http://localhost:8080/day17/welcome.jsp",".jsp")}<br/> 
	替换字符串:${fn:replace("www.itcast.cn",".","@")}<br/>
       *截取字符串:${fn:substring("http://localhost:8080/day17/welcome.jsp",7,16)}<br/>
 	截取字符串后:${fn:substringAfter("http://localhost:8080/day17/welcome.jsp","8080")}<br/>
 	截取字符串前:${fn:substringBefore("http://localhost:8080/day17/welcome.jsp","8080")}<br/>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值