JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能。

JSTL支持通用的、结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签。 除了这些,它还提供了一个框架来使用集成JSTL的自定义标签。

在使用JSTL的同时,我想过一个问题,为什么JSTL能实现的功能,Java也能做,可能对于开发人员来说,更熟悉java语言。

经查阅资料,有人说是因为避免在Jsp语言中html和java语言混乱,导致开发效率低,页面不易维护,可读性差。一般来说,应该尽可能避免在jsp页面中嵌入Java代码,而是使用JSTL和EL表达式来实现同样的功能。

核心标签

核心标签是最常用的JSTL标签。引用核心标签库的语法如下:

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

应用:数组、对象、LIst、Map和Date

 <%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="com.uplooking.controller.Student" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@ page import="java.util.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSTL</title>
</head>
<body>
<%
Student stu=new Student();
stu.setName("老王");
stu.setClazz(1);
pageContext.setAttribute("stu",stu);
Student stu1=new Student();
stu1.setName("老李");
stu1.setClazz(2);
pageContext.setAttribute("stu1",stu1);
Student stu2=new Student();
stu2.setName("老师");
stu2.setClazz(3);
pageContext.setAttribute("stu2",stu2);
%>
<!-- jstl -->
<!-- 判断后台传过来的数据是否为空 与if一样 -->
<c:if test="${stu1!=null }">
<h4>登陆成功${stu1.name}</h4>
</c:if> <c:if test="${stu3==null }">
<h4>登录失败,请返回<a href="index.jsp">首页</a></h4>
</c:if>
<hr><!--------------------------------List----------------------------------------!>
<%
List<Student> stus=new ArrayList();
stus.add(stu);
stus.add(stu1);
stus.add(stu2);
pageContext.setAttribute("stus", stus);
%>
<!-- items遍历需要的集合或者数组 var相当于一个临时变量-->
<c:forEach items="${stus}" var="stu">
${stu.name}&nbsp;
<c:choose>
<c:when test="${stu.clazz==1 }">
终极一班 <br>
</c:when>
<c:when test="${stu1.clazz==2 }">
牛x二班 <br>
</c:when>
<c:when test="${stu2.clazz==3 }">
活力三班 <br>
</c:when>
<c:otherwise>
厉害 <br>
</c:otherwise>
</c:choose>
</c:forEach>
<hr>
<!-- map的循环遍历 -->
<%
Map<String,Student> map=new HashMap();
map.put("10",stu);
map.put("20",stu1);
map.put("30",stu2);
pageContext.setAttribute("map", map);
%>
<!--begin代表从第几个元素开始(从0开始) varStatus自动排序(与分页有关)-->
<c:forEach items="${map}" var="stu" begin="1" varStatus="vars">
${vars.count} --- ${stu.key} --- ${stu.value.name} <br>
</c:forEach> <hr>
<!-- set标签用于设置变量值和对象属性。 -->
<c:set var="age" value="66"></c:set>
<c:if test="${age==66 }">
老年人
</c:if>
${age}
<!-- remove标签移除变量age -->
<c:remove var="age"/>
${age}
<!-- date时间转换 -->
<%pageContext.setAttribute("date",new Date()); %>
<fmt:formatDate value="${date}" pattern="yyyy-MM-dd HH:mm:ss"/><br>
<%pageContext.setAttribute("stringDate","2018-09-17 13:04:18"); %>
<fmt:parseDate value="${stringDate}" pattern="yyyy-MM-dd HH:mm:ss"/><br> <!-- 百分 比转换 -->
<fmt:formatNumber type="percent" value="0.88"></fmt:formatNumber>
</body>
</html>

执行结果:

JSP 标准标签库JSTL的更多相关文章

  1. JSP 标准标签库(JSTL)

    JSP 标准标签库(JSTL) JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签, ...

  2. JSP标准标签库(JSTL)--JSTL简介与安装

    对于MVC设计模式来讲,我们一直强调,在一个JSP钟scriptlet代码越少越好,但是只靠以前的概念很难实现,因为标签的开发特别麻烦,所以为了简化标签,也为了让标签更具备一些通用性,所以一般在开发中 ...

  3. JSP标准标签库JSTL

    1.什么是JSTL? JSP标准标签库(JSP Standard Tag Library) 2.JSTL标准标签库中的常用标签 JSTL是JSP页面的标签库,实质上是一段Java代码.我们常用的是它的 ...

  4. jsp标准标签库——jstl

    JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签. 除了这些,它还提供 ...

  5. JSP标准标签库(JSTL)--XML标签库 x

    ³在开发中XML解析的操作是非常烦琐的,幸运的是在JSTL中专门提供了用于XML解析的操作,这样用户就可以不用费力的去研究SAX或DOM等操作的使用,就可以轻松的进行XML文件的解析处理.  XML标 ...

  6. JSP标准标签库(JSTL)--SQL标签库 sql

    了解即可.SQL标签库 No. 功能分类 标签名称 描述 1 数据源标签 <sql:setDataSource> 设置要使用的数据源名称 2 数据库操作标签 <sql:query&g ...

  7. JSP标准标签库(JSTL)--核心标签库 c

    核心标签库是JSTL中最重要的部分,可以完成输出,判断,迭代等操作 功能分类: 1. 基本标签: <c:out>:输出属性内容 <c:set>:设置属性内容 <c:rem ...

  8. JSP标准标签库(JSTL)--国际化标签库 fmt

    JSTL中使用fmt.tld作为格式化标签库的定义文件 No. 功能分类 标签名称 描述 1 国际化标签 <fmt:setLocale> 设置一个全局的地区代码 2 <fmt:req ...

  9. JSP标准标签库(JSTL)--函数标签库 fn

    和String的方法类似,就是对String的一种封装. No. 函数标签名称 描述 1 ${fn:contains()} 查询某字符串是否存在,区分大小写 2 ${fn:containsIgnore ...

随机推荐

  1. elasticsearch开机启动脚本

    最近搭建了一个elasticsearch服务,其中机器重启而ES服务没有重启是问题,就有下面的脚本 #!/bin/sh #chkconfig: #description: es export JAVA ...

  2. 关于element组件中分页的一些个人思路

    最近在用element,用到了它的分页这个组件,我这边的情况是,我前端请求数据,数据大概有20个的样子,把数据存在data的一个数组里面,用一个v-for循环遍历数组内容,并用div装起来,这样20个 ...

  3. 无序数组求第k大/第k小的数

    根据http://www.cnblogs.com/zhjp11/archive/2010/02/26/1674227.html 博客中所总结的7种解法,我挑了其中的解法3和解法6进行了实现. 解法3: ...

  4. react中对于context的理解

    一.context旧版的基本使用 1.context的理解 当不想在组件树中通过逐层传递props或state的方式来传递数据时,可使用context来实现跨层级的组件数据传递. 2.context的 ...

  5. mySQL简单操作(三)

    1.事务 (1)ACID 原子性(不可分割性)automicity 一致性 consistency 隔离性 isolation 持久性 durability (2)事务控制语句 begin/start ...

  6. office 2016 官方原版 (含Visio Project 等全套 )下载地址 (不含破解,非网盘下载)不用登录

    原文地址:https://www.heidoc.net/joomla/technology-science/microsoft/8-office-2016-direct-download-links ...

  7. C# RSA加解密与验签,AES加解密,以及与JAVA平台的密文加解密

    前言: RSA算法是利用公钥与密钥对数据进行加密验证的一种算法.一般是拿私钥对数据进行签名,公钥发给友商,将数据及签名一同发给友商,友商利用公钥对签名进行验证.也可以使用公钥对数据加密,然后用私钥对数 ...

  8. 使用synchronized同步,经典银行账户问题

    1.新建Account类,使用synchronized同步增加和减少金额方法. package com.xkzhangsan.synchronizedpack.bank; public class A ...

  9. MySQL表结构更新规范

    以下以新增字段为例,修改.删除.新增表的操作类似: 步骤: 1.PDM(中文名称为产品数据管理(Product Data Management))增加字段,并注明新增字段的注释 2.数据库编写sql语 ...

  10. linux 安装oracle

    报错1:报display相关错误su - oracleDISPLAY=redhat64-2:1 --此处为远程会话地址(可以写localhost或IP均可)export DISPLAYcd /home ...