[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.导包
基础示例:
代码语言:javascript复制<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
// _prefix 只是一个别名_
<%@ 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) 变量声明
代码语言:javascript复制<p>1) 变量和作用域声明: scope默认是pageContext </p>
<c:set var="name" value="WeiyiGeek" scope="session"></c:set>
输出其值:${sessionScope.name}
2) 条件判断
代码语言:javascript复制<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) 循环迭代
代码语言:javascript复制<!--
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获取当前登录人名称与试卷创建人名称是否一致:
代码语言:javascript复制<!-- 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.jstl基础语法
注意事项:
- 1.jstl标签别名是在jsp指令 taglib 中进行设置的prefix=”别名”,即
<别名:set var="变量名" value="值"></别名:set>
- 2.jstl在定义变量存在的哪里时候默认是
page
注意这里不是pageContext;