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