JSP开发之JSTL介绍和使用

时间:2022-07-28
本文章向大家介绍JSP开发之JSTL介绍和使用,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

[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.导包

基础示例:

<%@ 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) 变量声明

<p>1) 变量和作用域声明: scope默认是pageContext  </p>
<c:set var="name" value="WeiyiGeek" scope="session"></c:set>
输出其值:${sessionScope.name}

2) 条件判断

<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) 循环迭代

<!-- 
    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获取当前登录人名称与试卷创建人名称是否一致:

<!--  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;