JSP 标准标签库JSTL
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}
<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的更多相关文章
- JSP 标准标签库(JSTL)
JSP 标准标签库(JSTL) JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签, ...
- JSP标准标签库(JSTL)--JSTL简介与安装
对于MVC设计模式来讲,我们一直强调,在一个JSP钟scriptlet代码越少越好,但是只靠以前的概念很难实现,因为标签的开发特别麻烦,所以为了简化标签,也为了让标签更具备一些通用性,所以一般在开发中 ...
- JSP标准标签库JSTL
1.什么是JSTL? JSP标准标签库(JSP Standard Tag Library) 2.JSTL标准标签库中的常用标签 JSTL是JSP页面的标签库,实质上是一段Java代码.我们常用的是它的 ...
- jsp标准标签库——jstl
JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签. 除了这些,它还提供 ...
- JSP标准标签库(JSTL)--XML标签库 x
³在开发中XML解析的操作是非常烦琐的,幸运的是在JSTL中专门提供了用于XML解析的操作,这样用户就可以不用费力的去研究SAX或DOM等操作的使用,就可以轻松的进行XML文件的解析处理. XML标 ...
- JSP标准标签库(JSTL)--SQL标签库 sql
了解即可.SQL标签库 No. 功能分类 标签名称 描述 1 数据源标签 <sql:setDataSource> 设置要使用的数据源名称 2 数据库操作标签 <sql:query&g ...
- JSP标准标签库(JSTL)--核心标签库 c
核心标签库是JSTL中最重要的部分,可以完成输出,判断,迭代等操作 功能分类: 1. 基本标签: <c:out>:输出属性内容 <c:set>:设置属性内容 <c:rem ...
- JSP标准标签库(JSTL)--国际化标签库 fmt
JSTL中使用fmt.tld作为格式化标签库的定义文件 No. 功能分类 标签名称 描述 1 国际化标签 <fmt:setLocale> 设置一个全局的地区代码 2 <fmt:req ...
- JSP标准标签库(JSTL)--函数标签库 fn
和String的方法类似,就是对String的一种封装. No. 函数标签名称 描述 1 ${fn:contains()} 查询某字符串是否存在,区分大小写 2 ${fn:containsIgnore ...
随机推荐
- Python中__init__()和self的有啥用
这篇博客让我一下子就理解了,https://www.cnblogs.com/illusion1010/p/9527034.html,感谢博主 由于类可以起到模板的作用,因此,可以在创建实例的时候,把一 ...
- AbstractMethodError:
AbstractMethodError: This java.lang.AbstractMethodError is usually thrown when we try to invoke the ...
- 遍历tr通过name获取对应值用作判断或者赋值
$("#table tr:gt(0)").each(function(i){ var bidPrice = $("input[name='bidPrice2s']&quo ...
- org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'catchFromPBomService': Cannot create inner bean '(inner bean)#302efb82' of type [com.thinkgem.jeesite.modules.fd
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'catchFromPBo ...
- 用Flow编写更好的js代码
关于本文: 原文地址 翻译地址 译者:野草 本文发表于前端早读课[第897期] 你是否经常在debug那些简单可避免的bug?可能你给函数传参的时候搞错了参数的顺序,或者本来应该传个Number类型的 ...
- linux执行jmeter脚本解决响应数据为空
Linux服务器用命令执行了jmeter脚本,在本地查看结果时发现结果树种的“请求.响应数据”都显示为空,有错误日志中也看不出所以然,请看演示! 1 ,先执行脚本:执行成功(...end of run ...
- vue - 列表显示(列互相影响,全选控制,更新数据)
要实现的效果为:全选,且列A列B互相影响,列B勾选则列A一定勾选,列A取消勾选,则相应列B取消勾选 数组 vue中列表渲染有些不是相应式的 var list=[ { a:'aaaa', b:'ddd' ...
- centos 7 rabbitmq 3.7.12 erlang 20.3源码安装
1.下载erlang 官网地址 http://www.erlang.org/download 挑选合适的版本 然后 建议20.3运行命令 wget http://erlang.org/download ...
- [c/c++] programming之路(29)、阶段答疑
一.指针不等于地址 指针不仅有地址,还有类型,是一个存储了地址的变量,可以改变指向:而地址是一个常量 #include<stdio.h> #include<stdlib.h> ...
- Android中碎片的添加问题
碎片在Android中的应用是十分广泛的,它就像是嵌在活动中的另一个活动就像是一个容器包含了另一个容器,那么到底该怎么添加碎片呢?主要有两种方法,一种是在该碎片所在的xml文档中使用Android:n ...