Java学习路线-53:EL(表达式语言)入门及 EL 函数库

简介: Java学习路线-53:EL(表达式语言)入门及 EL 函数库

第 8 章 : EL(表达式语言)入门及 EL 函数库

课时 27 EL 入门

EL 是 JSP 内置的表达式语言


jsp2.0 开始,EL 表达式和动态标签来替代 java 脚本

EL 替代 <%=%>


<% pageContext.setAttribute("name", "pageContext");%>
<% request.setAttribute("name", "request");%>
<% session.setAttribute("name", "session");%>
<% application.setAttribute("name", "application");%>
<!-- 全域查找 -->
${name} <br/>
<!-- pageContext -->
<!-- 指定域查找 -->
${requestScope.name} <br/>
${pageScope.name} <br/>
${sessionScope.name} <br/>
${applicationScope.name} <br/>

课时 28 EL 11 个内置对象

无需创建即可使用

pageScope
requestScope
sessionScope
applicationScope
param
paramValues
header
haderValues
iniParam
cookie
pageContext
<jsp:useBean id="person" class="com.pengshiyu.bean.Person" scope="page" />
<jsp:setProperty name="person" property="name" value="Tom" />
<jsp:getProperty name="person" property="name"  />
<!-- 等价于 -->
${person.name}

1、param 和 paramValues

param 获取单值

paramValues 获取多值


请求地址 /?name=Tom&numbers=1&numbers=2


${param.name}
${paramValues.numbers[0]}
${paramValues.numbers[1]}

2、header 和 haderValues

${header['user-agent']}
${header["User-Agent"]}

3、iniParam

iniParam 可以获取 <context-param> 配置参数


<context-param>
    <param-name>key1</param-name>
    <param-value>value1</param-value>
</context-param>
<context-param>
    <param-name>key2</param-name>
    <param-value>value2</param-value>
</context-param>

4、cookie

<!-- 获取cookie对象再获取值 -->
${cookie.JSESSIONID.value}
<!-- 等价于 -->
${pageContext.session.id}

5、pageContext


${pageContext.request.contextPath}

课时 29 EL 函数库

由 JSTL 提供

引人


<%@ taglib prefix="fn"
           uri="http://java.sun.com/jsp/jstl/functions" %>

函数


函数  描述
fn:contains() 测试输入的字符串是否包含指定的子串
fn:containsIgnoreCase() 测试输入的字符串是否包含指定的子串,大小写不敏感
fn:endsWith() 测试输入的字符串是否以指定的后缀结尾
fn:escapeXml()  跳过可以作为XML标记的字符
fn:indexOf()  返回指定字符串在输入字符串中出现的位置
fn:join() 将数组中的元素合成一个字符串然后输出
fn:length() 返回字符串长度
fn:replace()  将输入字符串中指定的位置替换为指定的字符串然后返回
fn:split()  将字符串用指定的分隔符分隔然后组成一个子字符串数组并返回
fn:startsWith() 测试输入字符串是否以指定的前缀开始
fn:substring()  返回字符串的子集
fn:substringAfter() 返回字符串在指定子串之后的子集
fn:substringBefore()  返回字符串在指定子串之前的子集
fn:toLowerCase()  将字符串中的字符转为小写
fn:toUpperCase()  将字符串中的字符转为大写
fn:trim() 移除首尾的空白符

使用实例

<%@ taglib prefix="fn"
           uri="http://java.sun.com/jsp/jstl/functions" %>
${fn:toUpperCase("hello")}
<!-- HELLO -->

课时 30 EL 自定义函数库

1、定义函数


com/pengshiyu/fn/MyFunctions.java
package com.pengshiyu.fn;
public class MyFunctions {
    public static String hello(){
        return "hello";
    }
}

2、配置函数


webapp/WEB-INF/custom.tld


<?xml version="1.0" encoding="utf-8"?>
<taglib>
    <tlib-version>1.0</tlib-version>
    <jsp-version>2.0</jsp-version>
    <short-name>Example TLD with Body</short-name>
    <function>
        <name>hello</name>
        <function-class>com.pengshiyu.fn.MyFunctions</function-class>
        <function-signature>java.lang.String hello()</function-signature>
    </function>
</taglib>

3、使用函数

webapp/demo.jsp


<%@ taglib prefix="fn"
           uri="/WEB-INF/custom.tld" %>
${fn:hello()}
相关文章
|
13天前
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
31 6
Spring Boot 入门:简化 Java Web 开发的强大工具
|
10天前
|
监控 架构师 Java
Java虚拟机调优的艺术:从入门到精通####
本文作为一篇深入浅出的技术指南,旨在为Java开发者揭示JVM调优的神秘面纱,通过剖析其背后的原理、分享实战经验与最佳实践,引领读者踏上从调优新手到高手的进阶之路。不同于传统的摘要概述,本文将以一场虚拟的对话形式,模拟一位经验丰富的架构师向初学者传授JVM调优的心法,激发学习兴趣,同时概括性地介绍文章将探讨的核心议题——性能监控、垃圾回收优化、内存管理及常见问题解决策略。 ####
|
14天前
|
Java API 开发者
Java中的Lambda表达式与Stream API的协同作用
在本文中,我们将探讨Java 8引入的Lambda表达式和Stream API如何改变我们处理集合和数组的方式。Lambda表达式提供了一种简洁的方法来表达代码块,而Stream API则允许我们对数据流进行高级操作,如过滤、映射和归约。通过结合使用这两种技术,我们可以以声明式的方式编写更简洁、更易于理解和维护的代码。本文将介绍Lambda表达式和Stream API的基本概念,并通过示例展示它们在实际项目中的应用。
|
16天前
|
Java API 开发者
Java中的Lambda表达式:简洁代码的利器####
本文探讨了Java中Lambda表达式的概念、用途及其在简化代码和提高开发效率方面的显著作用。通过具体实例,展示了Lambda表达式如何在Java 8及更高版本中替代传统的匿名内部类,使代码更加简洁易读。文章还简要介绍了Lambda表达式的语法和常见用法,帮助开发者更好地理解和应用这一强大的工具。 ####
|
18天前
|
并行计算 Java 编译器
深入理解Java中的Lambda表达式
在Java 8中引入的Lambda表达式,不仅简化了代码编写,还提升了代码可读性。本文将带你探索Lambda表达式背后的逻辑与原理,通过实例展示如何高效利用这一特性优化你的程序。
|
13天前
|
安全 Java API
Java中的Lambda表达式:简化代码的现代魔法
在Java 8的发布中,Lambda表达式的引入无疑是一场编程范式的革命。它不仅让代码变得更加简洁,还使得函数式编程在Java中成为可能。本文将深入探讨Lambda表达式如何改变我们编写和维护Java代码的方式,以及它是如何提升我们编码效率的。
|
16天前
|
安全 Java API
Java中的Lambda表达式与Stream API的高效结合####
探索Java编程中Lambda表达式与Stream API如何携手并进,提升数据处理效率,实现代码简洁性与功能性的双重飞跃。 ####
24 0
|
7月前
|
安全 Java
从零开始学习 Java:简单易懂的入门指南之不可变集合、方法引用(二十六)
从零开始学习 Java:简单易懂的入门指南之不可变集合、方法引用(二十六)
|
6月前
|
存储 Java API
Java——Stream流(1/2):Stream流入门、Stream流的创建(认识Stream、体验Stream流、Stream流的使用步骤、获取Stream流的方法)
Java——Stream流(1/2):Stream流入门、Stream流的创建(认识Stream、体验Stream流、Stream流的使用步骤、获取Stream流的方法)
93 0