JSP编程专题2之JSP核心三(自定义EL函数和标签)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSP编程专题2之JSP核心三(自定义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标签和使用方式)
- 附加说明: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函数和标签)的主要内容,如果未能解决你的问题,请参考以下文章
JSP编程专题2之JSP核心三(JSTL核心标签库,格式化标签库)
JSP编程专题2之JSP核心一(内置对象,JSP指令以及JSP动作)