JavaEE之JSTL标签库

温馨提示:本文阅读需要8分钟,建议收藏后阅读!


EL表达式很厉害对不对

今天我们来一个更厉害的JSTL


“为什么说更厉害”

“看完你就知道了”


什么是JSTL

JSP 标准标签库(JSTL : jsp standard tag library)是一个 jsp 标签的集合,它封装了 JSP 应用的通用核心功能,实现 JSP 页面中的逻辑处理。


JSTL的优点

(1) 制作网页时可以使美工像处理HTML标签一样对待JSTL标签,增加了网页的易读性。

(2) 容易实现重用,美工人员更容易学习和掌握。

(3) 容易实现分层的思想。

 

JSTL的安装与测试


我们可以从 Apache 的标准标签库(Taglibs)中下载的编译好的jar包。下载地址为:http://tomcat.apache.org/taglibs/standard/


 

 

 

 


下载的文件有 taglibs-standard-impl-1.2.5.jar、taglibs-standard-spec-1.2.5.jar、taglibs-standard-jstlel-1.2.5.jar 和 taglibs-standard-compat-1.2.5.jar 四个。taglibs-standard-impl-1.2.5.jar 和 taglibs-standard-spec-1.2.5.jar 两个文件是必须的,将这两个文件拷贝到Web项目的/WEB-INF/lib/下JSTL就算安装完成了。

  

创建第一个JSTL的Java Web应用


 


 

根据JSTL标签所提供的功能,可以将其分为5个类别:核心标签、XML 标签、格式化标签。、SQL 标签和函数标签。


我们主要是介绍核心标签,因为其他的四个标签现在基本都不用了,想了解的小伙伴可以自行去了解一下。


在使用这些标签库之前,需要使用 taglib 指令导入所需要使用的 JSTL 标签库。


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


其中,prefix 属性必须为相应标签库的 TLD 文件中的 <uri> 元素的值,taglib指令的 prefix 属性可以自己随意指定,但最好是采用下表中的建议前缀。

 

  

核心标签库

提供几乎所有 Web 应用都要用到的基本功能的标签集合,包括通用标签、条件处理标签、循环处理标签、URL处理标签等。如:用于输出一个变量内容的<c:out> 标签、用于条件判断的 <c:if> 标签、用于迭代循环的 <c:forEach> 标签。 

JSTL核心标签表


通用标签


通用标签包括4个标签—<c:out>、<c:set>、<c:remove>和<c:catch>,是JSP页面常用功能的标签。


1) <c:out>标签

<c:out> 标签用于显示一个表达式的结果,与 JSP 表达式 <%= %> 和 EL 表达式的作用相似。


  


转义字符

  


 


转义字符和<c:out>一起演示了,我真机智


 

2) <c:set>标签

<c:set>标签非常有用,它可以计算表达式的值,然后使用计算结果来设置JavaBean对象或java.util.Map对象的值。


 




<c:set> 标签的目标有两种:var和target。

使用 var 是为了设置属性变量,使用 target 是为了设置 Bean 属性或 Map 的值,设置给定 Bean 或 Map 的 Property/Key 对应的值。


3) <c:remove>标签

<c:remove> 标签用于删除一个变量。


 




我们的代码是写在一个页面内的,上面我们获取到 var 的值是“页面内有效”现在我们 <c:remove> 之后,再用<c:out>输出“var”就是默认值“不存在”了,证明<c:remove>标签起到效果了!


4) <c:catch>标签

<c:catch> 标签主要用于处理产生错误的异常状况,可以储存错误信息。<c:catch> 标签很像 Java 语言中的 try/catch 块,不同的地方是 <c:catch> 标签同时具有 try 和 catch 的作用,没有 try 标签。


 


我们先来制造一个异常




现在我们来把这个异常 catch 掉,这样在运行的时候,程序就不会报错了。顺便输出一下,报错信息。



看输出程序出错的地方了吧!


条件处理


JSTL 核心标签库中有4个条件标签—<c:if>、<c:choose>、<c:when>和<c:otherwise>。这些标签可以用于根据数据来动态生成页面内容。


1) <c:if>标签

<c:if>标签是简单而常用的条件标签,它判断test属性的表达式的值,如果表达式的值为真则执行标签体的语句。


 

这个上面演示了这里就不演示了


2) <c:choose> <c:when> 和 <c:otherwise> 标签

JSTL 提供 <c:choose> 标签来处理多个可选条件的情形。<c:choose> 标签与Java 的 switch 语句功能一样,用于在多个选项中做出选择。switch 语句中有case,而 <c:choose> 标签中对应有 <c:when>,switch 语句中有 default,而 <c:choose >标签中有 <c:otherwise>。

<c:choose> 和 <c:otherwise> 标签都没有属性。

<c:when>标签只有一个属性test。


  


代码演示:


这段代码获取当前的时间,然后进行判断,输出问好语句!


小伙伴们,下午好!


循环处理


核心标签有两个标签用于循环处理—— <c:forEach >和 <c:forTokens>,其中,<c:forEach> 标签用于处理数据,<c:forTokens> 标签用于处理字符串。


1) <c:forEach>标签

<c:forEach>标签是更加通用的标签,因为它迭代一个集合中的对象。


 


<c:forEach>标签还可以使用varStatus属性,该属性新建一个变量


创建一个Javabean


剩下的get()、set()方法就不截了


用一个list列表装起来


写一个监听器


当程序启动时,把学生信息传进去。



 

2) <c:forTokens>标签

<c:forTokens>标签用于处理指定分隔符分隔的字符串中的各个子串。

<c:forTokens>标签的属性与<c:forEach>标签相似,但多出来一个 delims 属性,用于指定分隔符。


 


 



上面的一行是我们的原数据

利用 “,”号进行分割然后输出

就变成下面这样


还有一个Status属性



页面效果:


URL处理


JSTL核心标签包含3个处理URL和访问Web资源的标签,这3个标签是<c:import>、<c:redirect>和<c:url>。


1) <c:import>标签

<c:import>标签提供了所有<jsp:include>行为标签所具有的功能,但功能更为强大。

 




这样就可以导入别人的网站了! 


2) <c:redirect>标签

<c:redirect>标签通过自动重写URL来将浏览器重定向至一个新的URL,它需要提供目标URL


 

 

3) <c:url>标签

<c:url>标签将URL格式化为一个字符串,然后存储在一个变量中。这个标签在需要的时候会自动采用URL重写。var属性用于存储格式化后的URL。

 

 

 

后面这两个

伙伴们自己琢磨一下吧!


那么再见了

么么哒! 




有任何问题都可以在文章留言,娜姐都看着的呢!

合作,投稿,转载,版权问题请联系 李娜:Lina_Java


娜姐带你用 Eclipse 写一个 Servlet

【福利合集】JavaSE 高阶篇文章汇总

为什么有些 专业程序员 做出的软件 不被认可?

程序员就是这样聊天把女朋友聊没的。


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,440评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,814评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,427评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,710评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,625评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,014评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,511评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,162评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,311评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,262评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,278评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,989评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,583评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,664评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,904评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,274评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,856评论 2 339

推荐阅读更多精彩内容