[TOC]
0x00 简述 什么是JSTL?它有什么作用?
1.答:JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由 apache 的 jakarta 小组来维护的。 2.答:它可以简化JSP代码编写提供比EL表达式更强大的逻辑处理功能;
如何使用JSTL?
导入JSTL 支持jar文件 jstl.jar 和 standard.jar
在jsp文件页面上使用 taglib 来引入标签库,选择核心代码标签库:
weiyigeek.top-导包
基础示例:1 2 3 4 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
注意事项:
在选择引入的标签库时JSTL版本应该选择 1.1 Core library及其以上,因为1.0版本不支持EL表达式;
0x01 基本用法 描述:主要进行记录JSTL基本的一些语法及其用法,与微信的小程序中的wxml内置标签有点像;但是需要注意标签c就是前面prefix设置的别名一一对应的;
1) 变量声明 1 2 3 <p>1) 变量和作用域声明: scope默认是pageContext </p> <c:set var="name" value="WeiyiGeek" scope="session"></c:set> 输出其值:${sessionScope.name}
2) 条件判断 1 2 3 4 5 6 7 8 9 10 <p>2) 条件判断:获取表达式返回的值并且存记录在flag变量存储在Session里</p> <c:set var="age" value="18"></c:set> <c:if test="${ age > 26 }" var ="flag" scope="session" > <b>年龄大于26岁</b> </c:if> <c:if test="${ age <= 26}" var ="flag1" scope="page" > <b>年龄小于等于26岁</b> </c:if> <p>flag:${flag}</p> <P>flag1:${flag1}</P>
3) 循环迭代 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 <!-- forEach方式关键参数说明: - Step 步长 - items 表面需要遍历的对象注意必须写el表达式 - 导入class 文件时候需要进行导包 <%@page import ="java.util.ArrayList" %><%@page import ="java.util.List" %> --> <p>forEach方式1:数字循环</p> <c:forEach begin="1" end="10" var ="i" step="1" > <span>${i} </span> </c:forEach> <P>forEach方式2:自定义一个Persion类注意itemn必须采用EL标签</P> <% List list = new ArrayList(); list.add(new Person("WeiyiGeek" ,21 )); list.add(new Person("张伟" ,21 )); list.add(new Person("刘安心" ,21 )); pageContext.setAttribute("list" , list); %> <c:forEach var ="person" items="${list}" > <p><b>姓名:</b> ${person.name}, <b>年龄:</b> ${person.age} </p> </c:forEach>
例如:通过bsp获取当前登录人名称与试卷创建人名称是否一致:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 <!-- when方式 --> <% String path = request.getContextPath(); String userName = BspUtil.getInstance().getLoginUserName(); pageContext.setAttribute("userName" ,userName); %> <c:when test="${question.creator == userName}" > <button class ="btn btn-danger" id="delete-question-btn" > <i class="fa fa-trash-o"></i> 删除该题 </button> <button class ="btn btn-info" onclick="javascript:window.close();" > <i class="fa fa-times"></i> 关闭页面 </button> </c:when>
执行结果:
weiyigeek.top-jstl基础语法
注意事项:
1.jstl标签别名是在jsp指令 taglib 中进行设置的prefix=”别名”,即<别名:set var="变量名" value="值"></别名:set>
2.jstl在定义变量存在的哪里时候默认是page
注意这里不是pageContext;