博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用JSTL
阅读量:4089 次
发布时间:2019-05-25

本文共 1973 字,大约阅读时间需要 6 分钟。

 由发表在

在Servlet中输出HTML内容是非常麻烦的;在JSP中嵌入大量的代码也同样不是什么好事。在学习了MVC架构后,Servlet/JSP终于可以各司其职——Servlet处理HTTP请求并访问业务逻辑代码,在JSP中则使用表达式求值并显示。但是,对于一些场景:

  1. 依据某个条件决定显示的HTML内容——导航栏根据用户是否登录的状态显示不同的内容
  2. 循环显示一段HTML内容——博客列表中每一个条目的文章

这都必须在JSP中嵌入代码才可以使得页面呈现出想要的结果——因为HTML本身并没有<if><for>这样的标签来完成动态生成网页的任务。

所幸的是,Java EE提供了这样的扩展标签库——JSTL,它不仅能提供条件判断、循环等常用实现程序逻辑的标签,还提供很多扩充标签让开发者能够更加方便的实现业务功能。

使用JSTL标签

安装JSTL标签库

首先需要下载JSTL库,在中选择javax.servlet.jsp.jstl-1.2.1.jar。下载后将其复制到Eclipse项目中WEB-INF/lib文件夹下:

这样相当于Web应用的类路径上添加了JSTL的类库依赖,同时Eclipse会自动将它添加到Web App Libraries,这样在IDE中编写JSP文件时可以对JSTL语法进行自动检查以及自动完成。

第一个JSTL程序

JSTL是基于JSP的扩展标签库,在使用它之前我们必须在JSP文件头部引入它的定义:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

这里仅仅引入JSTL中的核心标签库(Core),它包含了条件判断、循环处理、属性存取、URL处理以及错误处理等标签。Core是JSTL最常用的标签库,除此之外,JSTL还包含了格式化标签库、SQL标签库、XML标签库、常用函数标签库等,在接下来的学习中将会一一接触到。

是核心标签库的URL,prefix="c"表示通过c前缀来使用JSTL标签,例如<c:out><c:forEach>

下面是一个简单的使用JSTL标签库的JSP程序:

<%  String[] cities = {
"Beijing", "Shanghai", "Guangzhou"}; pageContext.setAttribute("cities", cities);//这里是测试数据,一般来说需要在Servlet中将数据传入JSP%>
${city}

上述代码通过<c:forEach>标签对上下文中的cities变量(由items属性定义)进行遍历,循环变量为city(由属性var定义,可以任意取名),标签的内容则会被循环输出。

常用的JSTL标签

JSTL核心标签库中还包含了很多有用的功能:

<c:set>

设置变量的值,它会计算表达式的值然后设置相应的变量:

<c:out>

用来显示一个表达式的结果,与<%= %>作用相似。不同之处在于,<c:out>标签可以直接通过.来访问对象的属性:

 

<c:if>

<c:if>标签判断表达式的值,如果表达式的值为真则执行其主体内容。

My salary is:

<c:choose>

<c:choose>标签与Java switch语句的功能一样,用于在众多选项中做出选择。switch语句中有case,而<c:choose>标签中对应有<c:when>,switch语句中有default,而<c:choose>标签中有<c:otherwise>

Your salary is :

Salary is very low to survive.
Salary is very good.
No comment sir...

JSTL实例

使用<c:forEach>标签显示首页用户列表

相当于对JSP中for循环的改写,然后通过.操作符访问属性,例如user.avataruser.title

${user.title}

${user.description}

访问 »

更多文章请访问
你可能感兴趣的文章
Python 趣味打怪:147 段简单代码助你从入门到大师
查看>>
按我说的来,让 VS Code 好用 10 倍 | VS Code 新手指南
查看>>
恕我直言,有了这款 IDEA 插件,你可能只需要写 30% 的代码...
查看>>
这几个冷门却实用的 Python 库,我爱了!
查看>>
太赞了,IDEA 2020 要本土化,真的是全中文了!
查看>>
面试官,别问我 HTTP 了!看这 30 张图就行!
查看>>
一场地狱级的 MySQL 索引面试!
查看>>
太赞了,微软正式推出 Python 零基础教程!
查看>>
骚操作:Uber 开源 "食人鱼" 工具,专吃落后代码!
查看>>
超酷炫!教你如何用 Python 实现动态可视化交互大屏图...
查看>>
数据惊人!揭秘网络黑色产业链到底有多赚钱...
查看>>
推荐一位 Python 大佬,全网 26 万粉丝,原创 300 多篇干货!
查看>>
百度重磅开源!这款高效率 AI 开发者工具,我爱了...
查看>>
WTF?GitHub 疑似遭受大范围中间人攻击?!
查看>>
天秀!只用 280 字,把一条推特长度的代码玩出花...
查看>>
天秀!GitHub 硬核项目:动漫生成器让照片秒变手绘日漫风!!!
查看>>
面试了 15 位来自 985/211 高校的 2020 届研究生,我熬夜赶出了这篇文章
查看>>
连苹果都在用的开源库:core-js 作者被判入狱 18 个月!
查看>>
没用过这些 IDEA 插件?怪不得你写代码头疼...
查看>>
这款超级搜索神器,我爱了!
查看>>