浅谈JSP之JSTL

网友投稿 863 2022-05-30

简介

JSTL的英文全称是JavaServer Pages Standard Tag Library,中文全称是JSP标准标识库。JSTL技术标准是由JCP(lava Community Process)组织的JSR052专家组发布,Apache组织将其列入Jakarta项目,Sun公司将JSTL的程序包加入互联网服务开发工具包内(Web Services Developer Pack(WSDP)),作为JSP技术应用的一个标准。

JSTL标签是基于JSP页面的,这些标签可以插入在JSP代码中,本质上JSTL也是提前定义好的一组标签,这些标签封装了不同的功能,在页面上调用标签时,就等于调用了封装起来的功能。JSTL的目标是简化JSP页面的设计。对于页面设计人员来说,使用脚本语言操作动态数据是比较困难的,而采用标签和表达式语言则相对容易,JSTL的使用为页面设计人员和程序开发人员的分工协作提供了便利。

JSTL标识库的作用是减少JSP文件的Java代码,使Java代码与HTML代码分离,所以JSTL标识库符合MVC设计理念。MVC设计理念的优势是将动作控制、数据处理、结果显示三者分离。

主要组成

JSTL包含了和以下操作相关的标签:

1、核心标签:核心标签库是整个JSTL中最常用的部分,主要由以下几部分组成:基本输入输出、流程控制、迭代操作和URL操作。负责Web应用的常见工作,如:循环、表达式赋值、基本输入输出等。

2、I18N格式标签库:用来格式化显示数据的工作如:对不同区域的日期格式化等。

3、XML标签库:用来访问XML文件的工作,支持JSP对XML文档的处理。

4、数据库标签库:SQL标签库包括了大部分访问数据库的逻辑操作,包括查询、更新、事务处理、设置数据源等。可以做访问数据库的工作。

5、函数标签库:用来读取已经定义的某个函数。

优点

1、简化了JSP和Web应用程序的开发。

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

3、允许JSP设计工具与Web应用程序开发的进一步集成。相信不久就会有支持JSTL的IDE开发工具出现。

4、以一种统一的方式减少了JSP中的Scriptlets代码数量,可以达到程序中没有任何Scriptlest代码。

JSTL封装了JSP开发中的常用功能。比如说,在没有JSTL时,通过Scriptlets来迭代输出某个List(Set),有了JSTL,就可以使用它的一系列的Tag进行迭代输出。由于JSTL是JSP2.0规范的一部分,所以最新的Web容器都会支持它。

使用条件

在JSP中使用JSTL标签需要具备如下两个条件。

条件一:要在JSP页面中使用JSTL标签,需使用taglib指令引用标签库。

条件二:要在JSP中使用JSTL标签,还需要下载安装JSTL实现(Implementation)。

JSTL1.2实现的-为:https:jstl.dev.java.net,下载文件为jstl-impl-1.2.jar,将该文件复制到Web应用程序的WEB-INFlib文件夹中即可使用JSTL。

JSTL1.0实现的-为:http://www.apache.org/dist/jakarta/taglibs/standard/,Windows用户下载jakarta-taglibs-standard-current.zip。下载后解压,在lib文件夹中有两个文件:

·jstl.jar;

·standard.jar.

将这两个文件复制到Web应用程序的WEB-INFlib文件夹中即可使用JSTL 。

一般来说,引入格式如下:

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

我这里使用的是老版本的jstl1.0,下面让我们使用jstl的几个核心标签来进行具体的演示:

核心标签

c:out

标签用来显示一个表达式的结果,与<%= %>作用相似,它们的区别就是标签可以直接通过"."操作符来访问属性。

参数:value:要输出的内容值  default:输出的默认值 escapeXml:是否忽略xml特殊字符

注意:标签会自动忽略XML标记字符,所以它们不会被当做标签来处理。

下面写个小例子来说明下:

浅谈JSP之JSTL



<%-- 如果value的值为空,显示默认值里的内容--%>

看着上面代码,不妨在大脑里构思一下结果,第一个会输出value 的所有值,第二个因为escapexml默认为true,所以忽略了a标签,不会进行转义,第三个会转义a标签,第四个因为value的值用el表达式绑定的是null值,所以默认输出的是default的值

run一下,看看效果:

c:set

标签用于设置变量值和对象属性。

标签就是行为标签的孪生兄弟。

这个标签之所以很有用呢,是因为它会计算表达式的值,然后使用计算结果来设置 JavaBean 对象或 java.util.Map 对象的值。

语法格式:

参数含义:scope的默认值为page

注意:如果指定了target属性,那么property属性也需要被指定。

举例:

先引入JSTL标签库,引入了一个javabean对象Person

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

public class Person { private String username; private int age; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }

将数据保存到page域中

从page域中获取数据:${username}

<%-- pageScope.username--%>

将数据保存到request域中

从request域中获取数据:${age}


将数据保存到seesion域中

从seesion域中获取数据:${address}


将数据保存到application域中

从application域中获取数据:${sex}

${username} ${age} ${sex} ${address}


将数据保存到JavaBean对象中

从JavaBean对象中获取数据:${person.username}

<% Map map =new HashMap(); request.setAttribute("mapkey",map); %>

从map对象里获取数据:${mapkey.data}

这里我示例了四个范围:page,request,seesion,application和javabean、map,通过c:set保存值,然后通过el表达式取值

c:choose和c:when、c:otherwise

标签与Java switch语句的功能一样,用于在众多选项中做出选择,本身只当做的父标签。

switch语句中有case,而标签中对应有,switch语句中有default,而标签中有

c:if

标签判断表达式的值,如果表达式的值为 true 则执行其主体内容。

...

scope的默认值为page

举例:判断输入框是否为admin ,是就输出欢迎登录


if条件判断结果:${result}

c:foreach

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

语法:

<% List list =new ArrayList<>(); list.add("element1"); list.add("element2"); list.add("element3"); list.add("element4"); list.add("element5"); request.setAttribute("list",list); %>

不指定begin、end遍历集合
指定begin、end、step

以上关于JSTL的常用核心标签基础就介绍到这里了

总结:

这里从JSTL的简介、组成、特点、使用条件和常用核心标签进行一一举例介绍,如有不足之处,欢迎指正!

感恩能与大家在华为云遇见!希望能与大家一起在华为云社区共同成长。

JSP

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:ABAP Code Inspector那些隐藏的功能,您都知道吗?
下一篇:如何快速成长为不可或缺的技术人才?
相关文章