码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2017-10-24 01:33:37      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:自定义el函数   jstl中的el函数   自定义el标签   自定义带属性的el标签   自定义el遍历标签   

1、自定义EL函数:

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

技术分享


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

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

技术分享


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

技术分享


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

技术分享

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

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

技术分享


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

技术分享


b、JSTL的EL函数标签库:

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

技术分享


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

技术分享

技术分享


3、自定义EL标签:

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

技术分享

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

技术分享

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

技术分享

 

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

技术分享


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

技术分享


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

技术分享


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

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

技术分享


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

技术分享


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

技术分享


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

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

技术分享


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

技术分享

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

技术分享


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

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

技术分享

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

技术分享


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

技术分享


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

技术分享


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

技术分享

技术分享



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

技术分享

-  附加说明: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函数和标签)

标签:自定义el函数   jstl中的el函数   自定义el标签   自定义带属性的el标签   自定义el遍历标签   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!