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()}
相关文章
|
7月前
|
IDE Java 关系型数据库
Java 初学者学习路线(含代码示例)
本教程为Java初学者设计,涵盖基础语法、面向对象、集合、异常处理、文件操作、多线程、JDBC、Servlet及MyBatis等内容,每阶段配核心代码示例,强调动手实践,助你循序渐进掌握Java编程。
879 3
|
6月前
|
存储 Oracle Java
java零基础学习者入门课程
本课程为Java零基础入门教程,涵盖环境搭建、变量、运算符、条件循环、数组及面向对象基础,每讲配示例代码与实践建议,助你循序渐进掌握核心知识,轻松迈入Java编程世界。
522 0
|
7月前
|
SQL Java 数据库
2025 年 Java 从零基础小白到编程高手的详细学习路线攻略
2025年Java学习路线涵盖基础语法、面向对象、数据库、JavaWeb、Spring全家桶、分布式、云原生与高并发技术,结合实战项目与源码分析,助力零基础学员系统掌握Java开发技能,从入门到精通,全面提升竞争力,顺利进阶编程高手。
1170 2
|
7月前
|
Java
java入门代码示例
本文介绍Java入门基础,包含Hello World、变量类型、条件判断、循环及方法定义等核心语法示例,帮助初学者快速掌握Java编程基本结构与逻辑。
549 0
|
7月前
|
SQL 算法 Java
零基础到精通的史上最强 Java 学习路线图推荐
史上最全Java学习路线图,涵盖基础语法、面向对象、数据结构与算法、多线程、JVM、Spring框架、数据库及项目实战,助你从零基础到精通Java开发,附完整代码与工具推荐。
403 3
零基础到精通的史上最强 Java 学习路线图推荐
|
7月前
|
存储 Java Go
对比Java学习Go——函数、集合和OOP
Go语言的函数支持声明与调用,具备多返回值、命名返回值等特性,结合`func`关键字与类型后置语法,使函数定义简洁直观。函数可作为一等公民传递、赋值或作为参数,支持匿名函数与闭包。Go通过组合与接口实现面向对象编程,结构体定义数据,方法定义行为,接口实现多态,体现了Go语言的简洁与高效设计。
194 4
|
7月前
|
NoSQL Java 关系型数据库
超全 Java 学习路线,帮你系统掌握编程的超详细 Java 学习路线
本文为超全Java学习路线,涵盖基础语法、面向对象编程、数据结构与算法、多线程、JVM原理、主流框架(如Spring Boot)、数据库(MySQL、Redis)及项目实战等内容,助力从零基础到企业级开发高手的进阶之路。
499 2
|
7月前
|
前端开发 Java 数据库连接
帮助新手快速上手的 JAVA 学习路线最详细版涵盖从入门到进阶的 JAVA 学习路线
本Java学习路线涵盖从基础语法、面向对象、异常处理到高级框架、微服务、JVM调优等内容,适合新手入门到进阶,助力掌握企业级开发技能,快速成为合格Java开发者。
974 3
|
8月前
|
NoSQL Java 关系型数据库
Java 从入门到进阶完整学习路线图规划与实战开发最佳实践指南
本文为Java开发者提供从入门到进阶的完整学习路线图,涵盖基础语法、面向对象、数据结构与算法、并发编程、JVM调优、主流框架(如Spring Boot)、数据库操作(MySQL、Redis)、微服务架构及云原生开发等内容,并结合实战案例与最佳实践,助力高效掌握Java核心技术。
872 1
|
8月前
|
Java 测试技术 API
Java IO流(二):文件操作与NIO入门
本文详解Java NIO与传统IO的区别与优势,涵盖Path、Files类、Channel、Buffer、Selector等核心概念,深入讲解文件操作、目录遍历、NIO实战及性能优化技巧,适合处理大文件与高并发场景,助力高效IO编程与面试准备。