JSP 标准标签库JSTL

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

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

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

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

核心标签

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

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

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

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3     <%@ page import="com.uplooking.controller.Student" %>
 4     <%@ taglib uri="http://java.sun.com/jsp/jstl/core"  prefix="c"%>
 5     <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"  prefix="fmt"%>
 6     <%@ page import="java.util.*" %>
 7 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 8 <html>
 9 <head>
10 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
11 <title>JSTL</title>
12 </head>
13 <body>
14         <%
15             Student stu=new Student();
16             stu.setName("老王");
17             stu.setClazz(1);
18             pageContext.setAttribute("stu",stu);
19             Student stu1=new Student();
20             stu1.setName("老李");
21             stu1.setClazz(2);
22             pageContext.setAttribute("stu1",stu1);
23             Student stu2=new Student();
24             stu2.setName("老师");
25             stu2.setClazz(3);
26             pageContext.setAttribute("stu2",stu2);
27        %>
28         <!-- jstl -->
29         <!-- 判断后台传过来的数据是否为空  与if一样 -->
30         <c:if test="${stu1!=null }">
31             <h4>登陆成功${stu1.name}</h4>
32         </c:if>
33         
34         <c:if test="${stu3==null }">
35             <h4>登录失败,请返回<a href="index.jsp">首页</a></h4>
36         </c:if>
37         <hr><!--------------------------------List----------------------------------------!>
38         <%
39             List<Student> stus=new ArrayList();
40             stus.add(stu);
41             stus.add(stu1); 
42             stus.add(stu2);
43             pageContext.setAttribute("stus", stus);
44         %>
45          <!-- items遍历需要的集合或者数组 var相当于一个临时变量-->
46         <c:forEach items="${stus}"  var="stu"> 
47             ${stu.name}&nbsp;
48             <c:choose>
49                 <c:when test="${stu.clazz==1 }">
50                     终极一班 <br>
51                 </c:when>
52                 <c:when test="${stu1.clazz==2 }">
53                     牛x二班 <br>
54                 </c:when>
55                 <c:when test="${stu2.clazz==3 }">
56                     活力三班 <br>
57                 </c:when>
58                 <c:otherwise>
59                     厉害 <br>
60                 </c:otherwise>
61             </c:choose>
62         </c:forEach>
63         <hr>
64         <!-- map的循环遍历 -->
65         <%
66             Map<String,Student> map=new HashMap();
67             map.put("10",stu);
68             map.put("20",stu1);
69             map.put("30",stu2);
70             pageContext.setAttribute("map", map);
71         %>
72         <!--begin代表从第几个元素开始(从0开始)  varStatus自动排序(与分页有关)-->
73         <c:forEach items="${map}" var="stu"  begin="1"  varStatus="vars">
74             ${vars.count} --- ${stu.key} --- ${stu.value.name} <br>
75         </c:forEach>
76         
77         <hr>
78         <!-- set标签用于设置变量值和对象属性。 -->
79         <c:set var="age"  value="66"></c:set>
80         <c:if test="${age==66 }">
81             老年人
82         </c:if>
83             ${age}
84         <!-- remove标签移除变量age -->
85             <c:remove var="age"/>
86             ${age}
87         <!-- date时间转换 -->
88             <%pageContext.setAttribute("date",new Date()); %>
89             <fmt:formatDate value="${date}"  pattern="yyyy-MM-dd  HH:mm:ss"/><br>
90             <%pageContext.setAttribute("stringDate","2018-09-17  13:04:18"); %>
91             <fmt:parseDate value="${stringDate}"  pattern="yyyy-MM-dd  HH:mm:ss"/><br>
92         
93         <!-- 百分  比转换 -->
94         <fmt:formatNumber type="percent"  value="0.88"></fmt:formatNumber>
95 </body>
96 </html>

执行结果:

原文地址:https://www.cnblogs.com/echola/p/9657269.html