7.1 c:if, c:forEach
每个人都喜欢使用标签而不是 Java 代码的代码,因此他们决定扩大范围。但编程并不局限于创建对象和读取它们的属性。您需要调用对象的方法,使用数据库和其他服务。该怎么办?
您只需要将每个 Java 语句表示为一个标记。是if
,将是<if>
,是for
,将是,<for>
等等。好吧好吧,开玩笑,不是那样的。嗯,不可能是人们真的决定这样做。但不,也许吧!
程序员允许在代码中添加任何标签。原则上,没有什么可担心的——JSP 是一个可扩展的标准。但他们走得更远,发布了 JSP 标准标签库 - JSTL。带有它的页面如下所示:
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
<html>
<head>
<title> JSTL Example</title>
</head>
<body>
<c:set var = "salary" scope = "session" value = "${2000*5}"/>
<c:if test = "${ salary > 2000}">
<p>My salary is: <c:out value = "${salary}"/><p>
</c:if>
</body>
</html>
你在以后的项目中很可能会遇到这样的代码,我会给出一些解释。
7.2 JSTL函数
JSTL 函数分为 5 类:
- 主要标签;
- 格式化标签;
- SQL 标签;
- XML标签;
- 调用函数。
我不会列出所有的,但我会列出最受欢迎的。让我们从主要标签开始:
1个 | <c:out> |
输出指定的表达式 - 相当于 <%= %> |
2个 | <c:set> |
将表达式的结果写入变量 |
3个 | <c:remove> |
删除变量 |
4个 | <c:catch> |
捕获异常 |
5个 | <c:if> |
if 的类比 |
6个 | <c:choose> |
模拟开关 |
7 | <c:when> |
与 choose 一起使用 |
8个 | <c:otherwise> |
与 choose 一起使用 |
9 | <c:import> |
允许您在代码中包含内容(相当于导入指令) |
10 | <c:forEach> |
对于每个循环 |
十一 | <c:param> |
允许您设置导入选项 |
12 | <c:redirect> |
重定向 |
13 | <c:url> |
创建带参数的 URL |
我将仅举一个例子并以此结束。原则上,经过一定的技巧是完全有可能阅读这样的代码的。但是不推荐写。
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
<html>
<head>
<title> Each Tag Example&</title>
</head>
<body>
<c:forEach var = "i" begin = "1" end = "5">
Item <c:out value = "${i}"/><p>
</c:forEach>
</body>
</html>
想一想,我们把Java代码写成标签的形式,然后JSP解析器就会把这些标签转成Java代码。这个世界上有什么地方出了问题。
顺便说一下,您可以编写自己的标签库。我什至曾经在他们所在的项目中工作过。很棒的体验。一旦对库进行任何更改,整个 jsp 就会立即中断。
你想要什么?编译器不会跟踪此类更改。只有在查看生成的 HTML 页面时才能直观地找到它们。如果这些是在非平凡情况下出现的一些罕见场景……上帝保佑后端开发和静态类型!