本系列文章旨在记录和总结自己在Java Web开发之路上的知识点、经验、问题和思考,希望能帮助更多(Java)码农和想成为(Java)码农的人。
目录
- 介绍
- JSTL规范下载
- JSTL包含哪些库
- JSTL如何使用
- 租房网应用中使用JSTL
- JSTL相关的JAR包
- EL表达式访问列表的长度
- JSTL的forEach标签
- 剩下的页面改造
- 总结
介绍
上篇文章我们使用JSP技术对租房网平台进行了改造,也提到下面这样的代码有点奇葩:
">
像这样的代码我们可以使用JSTL技术来解决。当然,JSTL可不仅仅只有这点功能,你还可以定义自己的标签。
在这篇文章里,我提到过JSTL是JSP相关的技术,从它的名字全称(JSP Standard Tag Library,即JSP标准标签库)就可以看出来。
在本篇文章里,我们就尝试初步使用JSTL来进一步改造我们的租房网应用。
JSTL规范下载
既然称之为库,那么它包含哪些库呢?
我们可以把JSTL规范下载下来看一下,当然你也可以找本相关书籍,或者直接在网上搜索一下。
JSTL规范的下载类似Servlet规范的下载(可以参考这篇文章),不过我们在JCP官网(https://jcp.org/en/home/index)中搜索的关键字就变成Tag或Tag Library了。
我们在搜索结果中就可以看到:
点击 Download page 链接可以看到:
然后继续点击底部的 Maintenance Review 2 of JSR 52 链接,跳转到:
不过,再次点击DOWNLOAD按钮时,我这边出现无法访问此网站的错误。所以我转而点击底部的 JSR-000052 A Standard Tag Library for JavaServer Pages Detail Page 链接:
从这里我们可以看到JSTL规范的各个阶段,我们选择 Maintenance Release 2 这个阶段,点击它右边的 Download page 链接:
然后再点击红色箭头所指的链接,跳转到真正的下载页面:
后续操作就跟Servlet规范的下载类似了。
JSTL包含哪些库
现在,我们可以打开JSTL规范,可以看到如下描述:
事实上,JSTL应该就只是一个库,但它根据不同功能而划分成了多个库:
- 核心:变量支持、流控制、URL管理等等,它的命名空间URI是:http://java.sun.com/jsp/jstl/core,标签前缀通常使用:c
- XML处理:它的命名空间URI是:http://java.sun.com/jsp/jstl/xml,标签前缀通常使用:x
- 国际化:语言区域、消息格式化、数字和日期格式化等,它的命名空间URI是:http://java.sun.com/jsp/jstl/fmt,标签前缀通常使用:fmt
- 数据库访问(SQL):它的命名空间URI是:http://java.sun.com/jsp/jstl/sql,标签前缀通常使用:sql
- 函数:集合长度、字符串操作等,它的命名空间URI是:http://java.sun.com/jsp/jstl/functions,标签前缀通常使用:fn
JSTL如何使用
JSTL的终极目标是简化JSP页面的开发,所以,它应该是在JSP页面中使用。
既然是标签,那它的使用是否跟HTML标签、XML标签类似呢?答案是肯定的。
不过,JSTL标签的使用与XML标签使用时声明命名空间类似,也需要告诉Servlet/JSP容器该JSP页面需要引入某个库(即上述的核心、XML处理、国际化、数据库访问、函数等等,以及以后自定义的标签)。
在JSP页面中是使用一个JSP指令(即taglib指令,之前我们用过page指令)来声明的:
举个例子,假设我们要使用JSTL的核心库,则应该在JSP页面的开头处这样声明:
然后,就可以使用核心库的标签,比如out标签:
default value
注意:在标签的语法中,[]表示可选的属性。如果值带下划线,则表示为默认值。
out标签有两种形式,有属性和属性值,也可能有标签内容,跟HTML标签和XML标签类似。
租房网应用中使用JSTL
我们就拿租房网应用中的房源列表页面houses.jsp来使用JSTL改造,因为这里涉及列表数据的展示。
列表数据是很常见的,我们经常可以看到包含列表数据的页面,比如订单列表、商品列表等等。
houses.jsp原来的代码是这样的:
mockHouses = (List) request.getAttribute("mockHouses");System.out.println(mockHouses);%>
共找到你感兴趣的房源 条
">