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}
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>
执行结果:


浙公网安备 33010602011771号