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

举报
彭世瑜 发表于 2021/08/14 00:36:34 2021/08/14
【摘要】 第 8 章 : EL(表达式语言)入门及 EL 函数库 课时 27 EL 入门 EL 是 JSP 内置的表达式语言 jsp2.0 开始,EL 表达式和动态标签来替代 java 脚本 EL 替代 <%=%> <% pageContext.setAttribute("name", "pageContext");%> <% request...

第 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/>


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

课时 28 EL 11 个内置对象

无需创建即可使用

pageScope
requestScope
sessionScope
applicationScope
param
paramValues
header
haderValues
iniParam
cookie
pageContext

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
<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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

1、param 和 paramValues
param 获取单值
paramValues 获取多值

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

${param.name}

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

  
 
  • 1
  • 2
  • 3
  • 4

2、header 和 haderValues

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

  
 
  • 1
  • 2

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>

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

4、cookie

<!-- 获取cookie对象再获取值 -->
${cookie.JSESSIONID.value}

<!-- 等价于 -->
${pageContext.session.id}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

5、pageContext

${pageContext.request.contextPath}

  
 
  • 1

课时 29 EL 函数库

由 JSTL 提供
引人

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

  
 
  • 1
  • 2

函数

函数	描述
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()	移除首尾的空白符

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

使用实例

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

${fn:toUpperCase("hello")}
<!-- HELLO -->

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

课时 30 EL 自定义函数库

1、定义函数

com/pengshiyu/fn/MyFunctions.java

package com.pengshiyu.fn;

public class MyFunctions { public static String hello(){ return "hello"; }
}


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

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>

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

3、使用函数
webapp/demo.jsp

<%@ taglib prefix="fn" uri="/WEB-INF/custom.tld" %>

${fn:hello()}


  
 
  • 1
  • 2
  • 3
  • 4
  • 5

文章来源: pengshiyu.blog.csdn.net,作者:彭世瑜,版权归原作者所有,如需转载,请联系作者。

原文链接:pengshiyu.blog.csdn.net/article/details/106181138

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。