分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 代码编程

JSP编程专题2之JSP核心三(自定义EL函数和标签)

发布时间:2023-09-06 01:19责任编辑:顾先生关键词:暂无标签

1、自定义EL函数:

a、自定义类,类中的方法使用static修饰符修饰:

650) this.width=650;" src="https://s1.51cto.com/oss/201710/23/981fae6f79844dd128ca0847106b2d67.png" title="截图00.png" alt="981fae6f79844dd128ca0847106b2d67.png" />


b、该类以及函数,需要在一个扩展名为.tld(tld,tag library definition,标签库定义)的XML文件中进行注册。

-  需要注意的是,XML文件是需要约束的,即需要配置文件头部。这个头部约束可以从以下文件中进行复制:在Tomcat安装目录下:tomcat-7.0\webapps\example\WEB-INF\jsp2中。

650) this.width=650;" src="https://s5.51cto.com/oss/201710/23/7b6f5df94de8c801c03db6b18049d0ea.png" title="截图01.png" alt="7b6f5df94de8c801c03db6b18049d0ea.png" />


-  在项目的WEB-INF目录下新建一个XML文件(名字可以自定义),添加和修改的内容如下:

650) this.width=650;" src="https://s4.51cto.com/oss/201710/23/c63e450ddcff807d5c052603167b3136.png" title="截图03.png" alt="c63e450ddcff807d5c052603167b3136.png" />


c、在使用到这个EL函数的JSP文件中,需要添加taglib标签,如下所示:(添加的taglib标签和使用方式)

650) this.width=650;" src="https://s1.51cto.com/oss/201710/23/f1e855c7fe56fafc1d39a6835434e784.png" title="截图05.png" alt="f1e855c7fe56fafc1d39a6835434e784.png" />

-  在浏览器显示的页面中呈现的是大写的“ABC”。

-  需要注意的是,EL函数只能够处理四大域中的属性值以及String常量:

650) this.width=650;" src="https://s3.51cto.com/oss/201710/23/a09d9e3b27b9764d26fcba7a5417d73e.png" title="截图07.png" alt="a09d9e3b27b9764d26fcba7a5417d73e.png" />


2、JSTL中的EL函数:

a、JSTL:Apache已经定义好了一套标准的标签库规范,称之为JSTL,JSP Standard Tag Library,即JSP标准标签库,该规范已经通过JCP审核认定。

-  在JSTL中,已经定义好了一套对于字符串进行处理的函数标签库,这个函数标签库中定义了16个对于字符串进行处理的函数。我们可以在JSP页面中直接使用。

-  当然,需要使用JSTL,首先需要将其jar包导入。(jar包下载地址为:http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/)

650) this.width=650;" src="https://s2.51cto.com/oss/201710/23/6f9454d67685b990fc79cbdfaa0e504d.png" title="截图06.png" alt="6f9454d67685b990fc79cbdfaa0e504d.png" />


b、JSTL的EL函数标签库:

-  JSTL函数标签库的.tld文件存放于standard的jar包的META-INF目录中,文件名为fn.tld。

650) this.width=650;" src="https://s1.51cto.com/oss/201710/23/eab46254785d5a3781b30f95bb521051.png" title="截图08.png" alt="eab46254785d5a3781b30f95bb521051.png" />


c、JSTL的函数标签库中定义的16个EL函数如下表所示:

650) this.width=650;" src="https://s3.51cto.com/oss/201710/23/e394c39e8a66454926111768abb2c3c6.png" style="float:none;" title="截图09.png" alt="e394c39e8a66454926111768abb2c3c6.png" />

650) this.width=650;" src="https://s1.51cto.com/oss/201710/23/8af8d527d25762b8475c488bae4c8687.png" style="float:none;" title="截图10.png" alt="8af8d527d25762b8475c488bae4c8687.png" />


3、自定义EL标签:

a、自定义类,该类继承SimpleTagSupport类,重写doTag方法:

650) this.width=650;" src="https://s1.51cto.com/oss/201710/23/17a7979bdca28a39ef4bfe4618a6d550.png" title="截图11.png" alt="17a7979bdca28a39ef4bfe4618a6d550.png" />

-  javax.servlet.jsp.tagext.SimpleTagSupport类:实现自SimpleTag接口的用于定义标签处理器的基类。

650) this.width=650;" src="https://s5.51cto.com/oss/201710/23/258933b63e02cb929a611c30362f6924.png" title="截图12.png" alt="258933b63e02cb929a611c30362f6924.png" />

-  该类的doTag()方法默认不对标签不做任何处理:

650) this.width=650;" src="https://s2.51cto.com/oss/201710/23/267d8cb9734bb988aeeb5a96e94ba9e6.png" title="截图13.png" alt="267d8cb9734bb988aeeb5a96e94ba9e6.png" />

-  javax.servlet.jsp.tagext.JspFragment的invoke(Writer out)方法:执行这个Jsp片段并将数据写入给定的字符输出流中:(如果传入的参数是null,则与这个片段相关的JspContext对象的getOut方法将会配调用,并返回JspWriter类对象作为参数传入给invoke(Writer out)方法)

650) this.width=650;" src="https://s3.51cto.com/oss/201710/23/de2d30cba18339f4228cf4218439788e.png" title="截图14.png" alt="de2d30cba18339f4228cf4218439788e.png" />


b、在项目的WEB-INF目录下新建一个XML文件(名字可以自定义),添加和修改的内容如下:

650) this.width=650;" src="https://s2.51cto.com/oss/201710/23/475c69fc830693f26715bc31cc37e0ff.png" title="截图15.png" alt="475c69fc830693f26715bc31cc37e0ff.png" />


c、在使用到这个EL标签的JSP文件中,需要添加taglib标签,如下所示:(添加的taglib标签和使用方式)

650) this.width=650;" src="https://s4.51cto.com/oss/201710/23/a92573dd9ef3af555f0ad05b0c621506.png" title="截图16.png" alt="a92573dd9ef3af555f0ad05b0c621506.png" />


4、自定义带属性的标签:

a、自定义类,该类继承SimpleTagSupport类,重写doTag方法:(在自定义类中编写私有化的成员变量(并提供set方法),等同于在标签处理器中设置属性)

650) this.width=650;" src="https://s3.51cto.com/oss/201710/23/61797fb5cabdb62eb6c27e139653552b.png" title="截图00.png" alt="61797fb5cabdb62eb6c27e139653552b.png" />


b、在项目的WEB-INF目录下新建一个XML文件(名字可以自定义),添加和修改的内容如下:

650) this.width=650;" src="https://s3.51cto.com/oss/201710/23/bfacb9c212670ccde4b8866ae7c11000.png" title="截图01.png" alt="bfacb9c212670ccde4b8866ae7c11000.png" />


c、在使用到这个EL标签的JSP文件中,需要添加taglib标签,如下所示:(添加的taglib标签和使用方式)

650) this.width=650;" src="https://s1.51cto.com/oss/201710/23/62dc6ed6f94c08b60e1768e35bb079c5.png" title="截图04.png" alt="62dc6ed6f94c08b60e1768e35bb079c5.png" />


5、自定义遍历List的forEachList标签:

a、自定义类,该类继承SimpleTagSupport类,重写doTag方法:

650) this.width=650;" src="https://s3.51cto.com/oss/201710/23/8e5841486a2bc34c2f8f2d487b20eb6d.png" title="截图05.png" alt="8e5841486a2bc34c2f8f2d487b20eb6d.png" />


b、在项目的WEB-INF目录下新建一个XML文件(名字可以自定义),添加和修改的内容如下:

650) this.width=650;" src="https://s3.51cto.com/oss/201710/23/aeeafee4b6a13b232cdd0b633135629d.png" title="截图06.png" alt="aeeafee4b6a13b232cdd0b633135629d.png" />

c、在使用到这个EL标签的JSP文件中,需要添加taglib标签,如下所示:(添加的taglib标签和使用方式)

650) this.width=650;" src="https://s2.51cto.com/oss/201710/23/aa1d897788a08618ea57def9f8647e35.png" title="截图07.png" alt="aa1d897788a08618ea57def9f8647e35.png" />


6、自定义遍历自定义遍历集合与数组(包括基本类型数组)的forEach标签:

a、自定义类,该类继承SimpleTagSupport类,重写doTag方法:

650) this.width=650;" src="https://s5.51cto.com/oss/201710/23/cc0c1f52f41c7d48c26c1d3dfdefa31e.png" title="截图19.png" alt="cc0c1f52f41c7d48c26c1d3dfdefa31e.png" />

-  java.lang.reflect.Array类:这个类提供静态方法,用以动态创建和访问java数组对象。

650) this.width=650;" src="https://s5.51cto.com/oss/201710/23/46cd10359aa0b2a0484fe7d18b9ed74f.png" title="截图20.png" alt="46cd10359aa0b2a0484fe7d18b9ed74f.png" />


-  java.util.Map接口中的entrySet方法:用于返回包含当前Map键值对的Set视图:(即以“键=值”的形式存储,即Map.Entry<K,V>)

650) this.width=650;" src="https://s1.51cto.com/oss/201710/23/ca3259349a6c739fb040467f492e0f31.png" title="截图10.png" alt="ca3259349a6c739fb040467f492e0f31.png" />


b、在项目的WEB-INF目录下新建一个XML文件(名字可以自定义),添加和修改的内容如下:

650) this.width=650;" src="https://s4.51cto.com/oss/201710/23/1d59c0ee5ab9fa830bbbd6ea5a57868b.png" title="截图21.png" alt="1d59c0ee5ab9fa830bbbd6ea5a57868b.png" />


c、在使用到这个EL标签的JSP文件中,需要添加taglib标签,如下所示:(添加的taglib标签和使用方式)

650) this.width=650;" src="https://s5.51cto.com/oss/201710/23/2e3404d54d434f9b87a049c1ffd4f5bc.png" style="float:none;" title="截图22.png" alt="2e3404d54d434f9b87a049c1ffd4f5bc.png" />

650) this.width=650;" src="https://s5.51cto.com/oss/201710/23/c59c631cb7da7e0e2f405d6ae5f6ea08.png" style="float:none;" title="截图23.png" alt="c59c631cb7da7e0e2f405d6ae5f6ea08.png" />



-  显示在index.jsp中的数据为:

650) this.width=650;" src="https://s4.51cto.com/oss/201710/23/ba16ae061c57af59b5b73e8a22824327.png" title="截图24.png" alt="ba16ae061c57af59b5b73e8a22824327.png" />

-  附加说明:EL总结

-  EL不能够出现在Java代码块、表达式块等JSP的动态代码部分。

-  EL只能从pageContext、request、session和application四大域属性空间中获取数据。

-  EL不能抛出空指针异常。若访问一个null对象的属性,则什么也不显示。

-  EL不会抛出数组访问越界异常。若访问一个数组中的不存在的元素,则什么也不显示。

-  EL不具有对字符串进行处理的能力,就连简单的字符串拼接都不行。









本文出自 “12392717” 博客,请务必保留此出处http://12402717.blog.51cto.com/12392717/1975416

JSP编程专题2之JSP核心三(自定义EL函数和标签)

原文地址:http://12402717.blog.51cto.com/12392717/1975416

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved