EL函数

1、EL函数的作用:操作字符串

2、在JSP页面中要引入EL函数库

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

3、语法

${ fn:方法名(参数) }

4、实例

 
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <!-- 引入EL函数库 -->
  4. <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
  5. <!-- 引入jstl标签库 -->
  6. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  7. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  8. <html>
  9. <head>
  10. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  11. <title>Insert title here</title>
  12. </head>
  13. <body>
  14. <!-- 操作域对象中的字符串 -->
  15. <c:set var="username" value="abcdefg" scope="page"></c:set>
  16. <h4>EL函数操作page域的内容</h4>
  17. ${ fn:indexOf(pageScope.username,"de") }
  18. ${ fn:startsWith(pageScope.username,"a") }
  19. ${ fn:toUpperCase(username) }
  20. ${ fn:substringAfter(username,"de") }
  21. ${ fn:substringBefore(username,"de") }
  22. </body>
  23. </html>

自定义EL函数

步骤:

(1)编写一个java类,提供一个静态方法,方法必须有返回值

 
  1. package com.myel;
  2. /**
  3. * 自定义EL函数
  4. * @author 58351
  5. *
  6. */
  7. public class ELDemo {
  8. /**
  9. * say hello 方法
  10. * @param str
  11. * @return
  12. */
  13. public static String sayHello(String str){
  14. return "hello"+str;
  15. }
  16. }

(2)在WEB-INF目录下,编写.tld结尾的文件(xml文件),进行配置

- 不要在lib或者classes目录下创建

 
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
  4. version="2.0">
  5. <tlib-version>1.0</tlib-version>
  6. <short-name>myfn</short-name>
  7. <uri>http://www.sutu.com/myfn</uri>
  8. <!-- 配置自定义EL函数 -->
  9. <function>
  10. <!-- 配置方法的名称 -->
  11. <name>sayHello</name>
  12. <!-- 配置方法所在的类 -->
  13. <function-class>com.myel.ELDemo</function-class>
  14. <!-- 配置方法的签名(描述类中的方法) -->
  15. <function-signature>java.lang.String sayHello(java.lang.String)</function-signature>
  16. </function>
  17. </taglib>

(3)在JSP页面上引入自己编写的EL函数库

 
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  4. <!-- 引入自己的EL函数 -->
  5. <%@ taglib prefix="myfn" uri="http://www.sutu.com/myfn" %>
  6. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  7. <html>
  8. <head>
  9. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  10. <title>Insert title here</title>
  11. </head>
  12. <body>
  13. <h4>使用自己编写的EL函数</h4>
  14. ${ myfn:sayHello("张三") }
  15. </body>
  16. </html>

自定义标签

1、自定义标签主要用于移除JSP页面中的java代码,提高代码的复用性

2、开发步骤:

(1)编写一个类,继承SimpleTagSupport类,重写3个方法

(2)在tld文件中,编写配置文件

(3)在 JSP页面中引入自定义的标签库

自定义标签(没有标签主体)

自定义标签的java类

 
  1. package com.myjstl;
  2. import java.io.IOException;
  3. import javax.servlet.jsp.JspContext;
  4. import javax.servlet.jsp.JspException;
  5. import javax.servlet.jsp.PageContext;
  6. import javax.servlet.jsp.tagext.JspFragment;
  7. import javax.servlet.jsp.tagext.SimpleTagSupport;
  8. /**
  9. * 自定义标签没有标签主体
  10. * @author 58351
  11. *
  12. */
  13. public class JSTLDemo1 extends SimpleTagSupport {
  14. private PageContext pc;
  15. private JspFragment body;
  16. /**
  17. * 标签执行了就会调用该方法
  18. */
  19. public void doTag() throws JspException, IOException {
  20. //向页面输出hello
  21. pc.getOut().write("hello");
  22. }
  23. /**
  24. * 获取标签主体,默认调用该方法,把JspFragment(标签主体对象)传入进来
  25. */
  26. public void setJspBody(JspFragment jspBody) {
  27. this.body = jspBody;
  28. }
  29. /**
  30. * Tomcat服务器默认先调用该方法,获取pageContext对象
  31. */
  32. public void setJspContext(JspContext pc) {
  33. this.pc = (PageContext) pc;
  34. }
  35. }

配置文件

 
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
  4. version="2.0">
  5. <tlib-version>1.0</tlib-version>
  6. <short-name>myc</short-name>
  7. <uri>http://www.sutu.com/myc</uri>
  8. <!-- 配置自定义标签 -->
  9. <tag>
  10. <!-- 配置标签名称 -->
  11. <name>print</name>
  12. <!-- 自定义标签所在的类 -->
  13. <tag-class>com.myjstl.JSTLDemo1</tag-class>
  14. <!-- 配置标签主体 -->
  15. <body-content>empty</body-content>
  16. </tag>
  17. </taglib>

JSP页面引入自定义标签库

<%@ taglib prefix="myc" uri="http://www.sutu.com/myc" %>

使用标签

 
  1. <body>
  2. <!-- 自定义标签 -->
  3. <!-- 在页面上输出hello -->
  4. <myc:print/>
  5. </body>

自定义标签(有标签主体)

 
  1. package com.myjstl;
  2. import java.io.IOException;
  3. import javax.servlet.jsp.JspContext;
  4. import javax.servlet.jsp.JspException;
  5. import javax.servlet.jsp.PageContext;
  6. import javax.servlet.jsp.tagext.JspFragment;
  7. import javax.servlet.jsp.tagext.SimpleTagSupport;
  8. /**
  9. * 自定义标签有标签主体
  10. * @author 58351
  11. *
  12. */
  13. public class JSTLDemo2 extends SimpleTagSupport {
  14. private PageContext pc;
  15. private JspFragment body;
  16. /**
  17. * 最后调用该方法,目的:输出标签主体
  18. */
  19. public void doTag() throws JspException, IOException {
  20. //直接调用JspFragment的invoke(Writer out),标签主体向外输出
  21. body.invoke(pc.getOut());
  22. }
  23. public void setJspBody(JspFragment jspBody) {
  24. this.body = jspBody;
  25. }
  26. public void setJspContext(JspContext pc) {
  27. this.pc = (PageContext) pc;
  28. }
  29. }

配置文件

 
  1. <!-- 配置自定义标签含有标签主体 -->
  2. <tag>
  3. <name>out</name>
  4. <tag-class>com.myjstl.JSTLDemo2</tag-class>
  5. <body-content>scriptless</body-content>
  6. </tag>

带有属性的自定义标签

配置类

 
  1. public class JstlDemo3 extends SimpleTagSupport{
  2. private PageContext pc;
  3. // 代表标签主体
  4. private JspFragment jspBody;
  5. // test和JSP页面上的if test属性名称必须是相同的
  6. // 必须给我提供test属性的set方法
  7. private boolean test;
  8. public void setTest(boolean test) {
  9. this.test = test;
  10. }
  11. /**
  12. * 最后调用该方法,目的:输出标签主体,由于属性决定
  13. */
  14. public void doTag() throws JspException, IOException {
  15. // 直接调用JspFragment的invoke(Writer out) ,标签主体向外输出
  16. if(test){
  17. jspBody.invoke(pc.getOut());
  18. }
  19. }
  20. public void setJspContext(JspContext pc) {
  21. this.pc = (PageContext) pc;
  22. }
  23. public void setJspBody(JspFragment jspBody) {
  24. this.jspBody = jspBody;
  25. }
  26. }

配置文件

 
  1. <tag>
  2. <!-- 配置标签名称 -->
  3. <name>if</name>
  4. <!-- 标签使用的类 -->
  5. <tag-class>cn.itcast.jstl.JstlDemo3</tag-class>
  6. <!-- 配置标签主体 -->
  7. <body-content>scriptless</body-content>
  8. <!-- 配置属性 -->
  9. <attribute>
  10. <!-- 配置数据名称 -->
  11. <name>test</name>
  12. <!-- 属性是否是必须出现的 -->
  13. <required>true</required>
  14. <!-- 支持EL表达式 -->
  15. <rtexprvalue>true</rtexprvalue>
  16. <!-- 属性的类型 -->
  17. <type>boolean</type>
  18. </attribute>
  19. </tag>

---------------------
作者:Tommy5553
来源:CSDN
原文:https://blog.csdn.net/Tommy5553/article/details/86362449
版权声明:本文为作者原创文章,转载请附上博文链接!
内容解析By:CSDN,CNBLOG博客文章一键转载插件

[转]EL函数、自定义EL函数、自定义标签相关推荐

  1. 自定义EL函数、自定义JSTL标签

    自定义EL函数 1.做一个类(静态) package com.maya.el;public class ELBiaoDaoShi {public static String TiHuan(String ...

  2. 自定义EL函数解决JSTL标签不足之处——按字节长度截取字符串

    题外话:做过大型网站前台的Web开发程序员最头疼的事情就是前台首页的布局,这其中最最头疼的就是标题字符的截取的问题,虽然有fn:substring,但表现率以及对中文的支持均不够完善,其实最终还是归结 ...

  3. JAVAWEB开发之JSTL标签库的使用、 自定义EL函数、自定义标签(带属性的、带标签体的)

    JSTL  JSTL简介: JSTL的全称:JSP Standard Tag Library,JSP标准标签库 JSTL的作用:   提供给Java Web开发人员一个标准通用的标签函数库   和EL ...

  4. jsp 将java对象转json对象 (自定义EL函数)

    功能:在 jsp 页面将 java对象 转换为 json对象 (使用自定义EL函数实现) 步骤: 1. 创建 JSP EL 工具类 2. 创建 tld 文件 3. 配置 web.xml 文件 4. 完 ...

  5. 自定义EL表达式的函数

    /**  * 自定义EL表达式的函数  * @author Administrator  *  */ public class Functions { public static String clo ...

  6. R语言ggpubr包ggsummarystats函数可视化分组条形图(自定义分组颜色、添加抖动数据点jitter、误差条)并在X轴标签下方添加分组对应的统计值(样本数N、中位数、四分位数的间距iqr)

    R语言ggpubr包ggsummarystats函数可视化分组条形图(自定义分组颜色.添加抖动数据点jitter.误差条error bar)并在X轴标签下方添加分组对应的统计值(样本数N.中位数med ...

  7. R语言编写自定义函数基于ggsumarystats函数计算每个分组的统计值、自定义可视化分组分面条形图,并在X轴标签下方添加分组对应的统计值(样本数N、中位数median、四分位数的间距iqr)

    R语言编写自定义函数基于ggsumarystats函数计算每个分组的统计值.自定义可视化分组分面条形图,并在X轴标签下方添加分组对应的统计值(样本数N.中位数median.四分位数的间距iqr) 目录

  8. Python matplotlib可视化:用Matplotlib的bar_label函数自定义条形图的数值标签、用Matplotlib的bar_label函数为条形图添加数值标记(在每一个条形的中部)

    Python matplotlib可视化:用Matplotlib的bar_label函数自定义条形图的数值标签.用Matplotlib的bar_label函数为条形图添加数值标记(在每一个条形的中部) ...

  9. 自定义jstl函数标签

    自定义EL标签: 做一个简单的重复内容的标签 第一步: 做一个类 第二步:做完类之后我们就需要去配置,新建一个.xml,注意新建文件的位置 如图:,在打开的窗口选择一定不能是其他的xml或者fi将默认 ...

最新文章

  1. 网络设备中的集线器(Hub)是什么?—Vecloud微云
  2. org.apache.ibatis.builder.BuilderException: Could not find value method on SQL annotation
  3. 前端学习(3026):vue+element今日头条管理-调整外观
  4. 安装MongoDB Install MongoDB on Ubuntu
  5. Exchange 企业邮件与Windows安全应用 — Exchange 2007 收件人管理
  6. 聊聊flink的BlobServer
  7. Kubeadm installation
  8. CCF——游戏(2017-12)
  9. go mock mysql_go sqlmocks的使用
  10. Springboot实现filter拦截token验证和跨域
  11. 超市便利店批发行业企业仓库,使用盘点机PDA扫描商品条码高效盘点,库存管不准怎么办
  12. input 框隐藏光标问题
  13. C语言字母大小写互换的简单方法
  14. 计算机二级java邓伦单_全国计算机等级考试计算机基础及Photoshop应用试题答案(2)...
  15. 电机是怎么转的?(电机原理+电机控制+电机分类)
  16. python代码画樱花-python画樱花树代码 具体代码介绍
  17. 二十二、商城 - 商品录入-FastDFS(10)
  18. 2022.2.20自制豆腐
  19. OpenCV各版本差异
  20. 伽马校正(gamma correction)学习笔记

热门文章

  1. VMware Workstation(虚拟机) V6.0.2 Build 59824 汉化版 |
  2. 迎.NET6,今日先送200P全新视频教程 / 源码
  3. WPF 如何流畅地滚动ScrollViewer
  4. 使用表达式自定义Serilog输出格式
  5. VSCode+BeetleX.VueHost开发Vue应用
  6. Dotnet的局部函数和委托的对比
  7. Abp vNext异常处理的缺陷/改造方案
  8. 使用 .NET Core 中的 EventCounters 衡量性能
  9. C# 8: 默认接口方法
  10. ASP.NET Core分布式项目实战(集成ASP.NETCore Identity)--学习笔记