[TOC]

0x00 简述

什么是JSTL?它有什么作用?

1.答:JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由 apache 的 jakarta 小组来维护的。
2.答:它可以简化JSP代码编写提供比EL表达式更强大的逻辑处理功能;

如何使用JSTL?

  1. 导入JSTL 支持jar文件 jstl.jar 和 standard.jar
  2. 在jsp文件页面上使用 taglib 来引入标签库,选择核心代码标签库:
WeiyiGeek.导包

WeiyiGeek.导包

基础示例:

1
2
3
4
<%@ 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) 变量声明

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
<!-- 
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.jstl基础语法

WeiyiGeek.jstl基础语法

注意事项:

  • 1.jstl标签别名是在jsp指令 taglib 中进行设置的prefix=”别名”,即<别名:set var="变量名" value="值"></别名:set>
  • 2.jstl在定义变量存在的哪里时候默认是page注意这里不是pageContext;