JSTL全称为 JSP Standard Tag Library 即JSP标准标签库
JSTL作为最基本的标签库,提供了一系列的JSP标签,实现了基本的功能:集合的遍历、数据的输出、字符串的处理、数据的格式化等等!

1. 为什么使用

EL表达式可以很方便地引用一些JavaBean以及其属性但是仍然不够完美,它不能遍历集合,做逻辑的控制。
Scriptlet的可读性,维护性,重用性都十分差!JSTL与HTML代码十分类似,遵循着XML标签语法,使用JSTL让JSP页面显得整洁,可读性非常好,重用性非常高,可以完成复杂的功能!
在JSP中不推荐使用scriptlet输出,推荐使用JSP标签

2. 使用JSTL标签库步骤

  • 导入jstl相关jar包
  • 引入标签库:taglib指令:<%@ taglib %>
  • 使用标签

    3. Core标签库

    core标签库是JSTL的核心标签库,实现了最基本的功能:流程控制、迭代输出等操作
    core标签库的前缀一般是c
    常用的三个JSTL标签

    3.1 c:if

    属性:
    test 必须属性,接受boolean表达式
    如果表达式为true,则显示if标签体内容,如果为false,则不显示标签体内容

  • 注意:c:if 标签没有else情况,想要else情况,则可以在定义一个c:if标签

    1. <%--如果带过来的名字是admin,那么可以登陆--%>
    2. <c:if test="${param.name=='admin'}">
    3. 用户名:<input type="text" name="username"><br>
    4. 密码:<input type="password" name="password"><br>
    5. <input type="submit" value="登陆">
    6. </c:if>
    7. <%--如果带过来的名字是admin888,那么就是注册--%>
    8. <c:if test="${param.name=='admin888'}">
    9. 用户名:<input type="text" name="username"><br>
    10. 密码:<input type="password" name="password"><br>
    11. <input type="submit" value="注册">
    12. </c:if>

    3.2 c:choose

    它相当于java代码的switch语句
    使用choose标签声明,相当于switch声明
    使用when标签做判断,相当于case
    使用otherwise标签做其他情况的声明,相当于default

    1. <c:choose>
    2. <c:when test="${param.name=='admin'}">
    3. 欢迎管理员
    4. </c:when>
    5. <c:when test="${param.name=='user'}">
    6. 欢迎用户
    7. </c:when>
    8. <c:otherwise>
    9. 识别不出你是谁
    10. </c:otherwise>
    11. </c:choose>

    3.3 c:forEach

    forEach为循环标签,相当于Java中的while和for
    之前我们在使用EL表达式获取到集合的数据,遍历集合都是用scriptlet代码循环,现在我们学了forEach标签就可以舍弃scriptlet代码
    向Session中设置属性,属性的类型是List集合
    向Session中设置属性,属性的类型是List集合
    遍历session属性中的List集合,items:即将要迭代的集合。var:当前迭代到的元素 ```html <% List list = new ArrayList<>(); list.add(“admin”); list.add(“zhangsan”); list.add(“wanwu”);

    session.setAttribute(“list”, list); %>

===================================================== ${list}

  1. Map对象有稍微地不一样保存的不是每个迭代的对象,而是Map.Entry
  2. ```html
  3. <%
  4. Map map = new HashMap();
  5. map.put("1", "zhongfucheng");
  6. map.put("2", "xiaohong");
  7. map.put("3", "xiaoming");
  8. session.setAttribute("map",map);
  9. %>
  10. <c:forEach var="me" items="${map}" >
  11. ${me.key} ${me.value}<br>
  12. </c:forEach>