什么是jstl?jsp标准标签库

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wgf18247442000/article/details/99580705

什么是jstl?

JSTL是 JavaServer Pages Standard Tag Library JSP标准标签库

使用条件:如果要使用JSTL,则必须将jstl.jar和 standard.jar

优点:

1、 在应用程序服务器之间提供了一致的接口,最大程度地提高了WEB应用在各应用服务器之间的移植。

2、 简化了JSP和WEB应用程序的开发。

存取器

1.因为 EL标识符是作为隐式对象或限制了作用域的变量(通过属性来实现)解析的,因此有必要将它们转换成 Java 对象。EL 可以自动包装和解包其相应的 Java 类中的基本类型(例如,可以在后台将 int强制转换成 Integer 类,反之亦可),但大多数的标识符将成为指向完整的 Java 对象的指针。

2.结果是,对这些对象的特性或(在对象是数组和集合的情况下)对其元素的访问通常是令人满意的。
就为了实现这种用途,EL 提供了两种不同的存取器(点运算符( . )和方括号运算符( [] )),也支持通过 EL 操作特性和元素。

3.点运算符通常用于访问对象的特性。例如,在表达式${user.firstName} 中,使用点运算符来访问 user标识符所引用对象的名为 firstName 的特性。EL 使用 Java bean 约定访问对象特性,因此必须定义这个特性的 getter 方法(通常是名为 getFirstName() 的方法),以便表达式正确求值。当被访问的特性本身是对象时,可以递归地应用点运算符。例如,如果我们虚构的 user 对象有一个实现为 Java 对象的 address 特性,那么也可以用点运算符来访问这个对象的特性。例如,表达式${user.address.city} 将会返回这个地址对象嵌套的 city 特性。


4.方括号运算符用来检索数组和集合的元素。在数组和有序集合(也即,实现了 java.util.List 接口的集合)的情况下,把要检索的元素的下标放在方括号中。例如,表达式${urls[3]} 返回 urls标识符所引用的数组或集合的第四个元素(和 Java 语言以及 JavaScript 中一样,EL 中的下标是从零开始的)。

5.对于实现 java.util.Map接口的集合,方括号运算符使用关联的键查找存储在映射中的值。在方括号中指定键,并将相应的值作为表达式的值返回。例如,表 达式${commands["dir"]} 返回与 commands标识符所引用的 Map 中的 "dir" 键相关联的值。


6.对于上述两种情况,都可允许表达式出现在方括号中。对嵌套表达式求值的结果将被作为下标或键,用来检索集合或数组的适当元素。和点运算符一样,方括号运算符也可以递归应用。这使得 EL 能够从多维数组、嵌套集合或两者的任意组合中检索元素。此外,点运算符和方括号运算符还可以互操作。例如,如果数组的元素本身是对象,则可以使用方括号运算符来检索该数组的元素,并结合点运算符来检索该元素的一个特性(例如 ${urls[3].protocol} )。


7.假定 EL 充当指定动态属性值的简化语言,EL 存取器有一个有趣的功能(与 Java 语言的存取器不同),那就是它们在应用于 null 时不抛出异常。如果应用 EL 存取器的对象(例如, ${foo.bar} 和 ${foo["bar"]} 中的 foo标识符)是 null ,那么应用存取器的结果也是 null 。事实证明,在大多数情况下,这是一个相当有用的行为,不久您就会了解这一 点。


8.最后,点运算符和方括号运算符可能实现某种程度的互换。例如,也可以使用 ${user["firstName"]} 来检索 user 对象的 firstName 特性,正如可以用 ${commands.dir} 获取与 commands 映射中的 "dir" 键相关联的值一样。

以下是el表达式对javabean组件、数组,Map集合、List集合中数据调用方法的简要总结:

数据类型 | 示例用法 | 实际调用方法 |
:--:|:--:|:--:
JavaBean组件|${colorBean.red}   ${colorBean["red"]} |colorBean.getRed()
数组 | ${colorArray[2]} ${colorArray["2"]}| Array.get(colorArray, 2)
List | colorList[2] colorList["2"] | colorList.get(2)|
Map |   colorMap[red]   <p> colorMap["red"] </p> | colorMap.get(pageContext.findAttribute("red")) <p>colorMap.get("red")</p>|

运算符

  • 算术运算符 + 、 - 、 * 、 / (或 div )和 % (或 mod )
  • 关系运算符== (或 eq )、 != (或 ne )、 < (或 lt )、 > (或 gt )、 <= (或 le )和 >= (或 ge )
  • 逻辑运算符 && (或 and )、 || (或 or )和 ! (或 not )
  • 验证运算符 empty

常用函数(el表达常用)

fn:contains(string, substring)
如果参数string中包含参数substring,返回true

fn:containsIgnoreCase(string, substring)
如果参数string中包含参数substring(忽略大小写),返回true

fn:endsWith(string, suffix)
如果参数 string 以参数suffix结尾,返回true

fn:escapeXml(string)
将有特殊意义的XML (和HTML)转换为对应的XML实体字符,并返回转义后的字符

fn:indexOf(string, substring)
返回参数substring在参数string中第一次出现的位置

fn:join(array, separator)
将一个给定的数组array用给定的间隔符separator串在一起,组成一个新的字符串并返回。

fn:length(item)
返回参数item中包含元素的数量。
参数Item类型是普通对象、数组、Collection、Map、Iterator迭代器、Enumeration枚举对象、
或者String。
如果是String类型,返回值是String中的字符数。
如果是数组类型,返回值是数组的长度。
如果是Collection容器类的子类,返回值是该容器类的包含元素的个数。
如果是Map类型,返回值是此映射中的键-值映射关系数。
如果是Iterator类型,返回值是Iterator中的元素个数。
如果是Enumeration类型,返回值是Enumeration中的元素个数

fn:replace(string, before, after)
返回一个String对象。
用参数after字符串替换参数string中所有出现参数before字符串的地方,并返回替换后的结果

fn:split(string, separator)
返回一个数组,以参数separator 为分割符分割参数string,分割后的每一部分就是数组的一个元素

fn:startsWith(string, prefix)
如果参数string以参数prefix开头,返回true

fn:substring(string, begin, end)
返回参数string部分字符串, 从参数begin开始到参数end位置,包括end位置的字符

fn:substringAfter(string, substring)
返回参数substring在参数string中后面的那一部分字符串

fn:substringBefore(string, substring)
返回参数substring在参数string中前面的那一部分字符串

fn:toLowerCase(string)
将参数string所有的字符变为小写,并将其返回

fn:toUpperCase(string)
将参数string所有的字符变为大写,并将其返回

fn:trim(string)
去除参数string 首尾的空格,并将其返回

以上内容为对jstl的介绍与理解,我个人理解用土话讲,就是JSTL其实就相当于我们最早在jsp页面写<%= java 代码%>的模式一样,是这种方式演变而来,从而简化了我们对jsp页面的编码难度使用jstl标签库,简化了代码,底层实现还是java代码实现的。

如果需要案例请百度 或者 百度百科










展开阅读全文

没有更多推荐了,返回首页