JSTL标签工具类的简单介绍

本篇供个人学习使用,有问题欢迎讨论
内含EL表达式,不了解的可移步EL表达式的简单使用

JSTL标签工具类

一、介绍

1、Jsp standrad Tag Lib

​ JSP中标准的标签工具类库

2、是SUN公司提供
3、组成

(1)核心标签:【Java】在【jsp】上对基本功能进行封装【if、while】
(1)sql标签:【JDBC】在【JSP】上使用功能
(3)xml标签:【DOM4J】在【JSP】使用功能
(4)Format标签:【JSP】文件格式转换

二、配置

1、导入依赖jar包

JSTL的jar包下载地址直通车
只需下载箭头所指的jar包即可,导包可参考IDEA的JDBC代码配置驱动
在这里插入图片描述

2、在JSP文件引入JSTL中core包依赖约束
<%@ taglib uri="http://java.sun.com/jsp/jst1/core" prefix="C" %>

在这里插入图片描述

三、标签使用

1、<c:set>
(1)作用

在【JSP文件】上设置域对象中的共享数据

(2)使用
<c:set scope="session" var="key" value="10"/>
(3)代替
<%
	session.setAttribute("key","10");
%>
(4)属性
  • scope:指定操作的域对象别名(application/ session/ request/page)
  • var:声明域对象中关键字
  • value:存入的共享数据
(5)举例
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<c:set scope="application" var="id" value="10"></c:set>
<c:set scope="session" var="name" value="jack" />
<c:set scope="request" var="age" value="22" />
<c:set scope="page" var="home" value="武汉" />

学员编号:${applicationScope.id}<br>
学员姓名:${sessionScope.name}<br>
学员年龄:${requestScope.age}<br>
学员籍贯:${pageScope.home}

在这里插入图片描述

(6)set标签与EL表达式联合使用
<!--设置用户今年年龄-->
<c:set scope="request" var="age" value="20" />
<!--设置用户两年之后年龄-->
<c:set scope="request" var="age" value="${requestScope.age + 2}" />
用户两年之后年龄:${age}

注意:这里会先执行【EL表达式】,再把执行过后的内容写入到【value】值中,最后执行【set标签】
在这里插入图片描述

2、<c:if>
(1)作用

在【JSP文件】上控制哪些内容可以写入到响应体

(2)使用
<c:if test="通过EL表达式进行判断">
    内容
</c:if>
(3)例子
<c:set scope="session" var="age" value="17" />
<c:if test="${age ge 18}">
    <font color="red">欢迎光临</font>
</c:if>
<c:if test="${age lt 18}">
    <font color="red">孩子,过几年再来吧</font>
</c:if>

在这里插入图片描述

3、<c:choose>
(1)作用

在【JSP文件】上实现多分支选择判断,决定哪一个内容能写入到响应体

(2)使用
<c:choose>
    <c:when test="EL表达式进行判断">内容1</c:when>
    <c:when test="EL表达式进行判断">内容2</c:when>
	<c:otherwise>内容3</c:otherwise>
</c:choose>
(3)例子
<c:set scope="page" var="sal" value="15000" />
<c:choose>
    <c:when test="${sal ge 50000}">高工资</c:when>
    <c:when test="${sal ge 20000}">正常工资</c:when>
    <c:when test="${sal ge 10000}">低工资</c:when>
    <c:otherwise>不正常工资</c:otherwise>
</c:choose>

在这里插入图片描述

3、<c: forEach>
(1)作用

​ 循环遍历

(2)第一种使用方式(普通for循环)
<c:forEach var="声明循环变量名称" begin="初始化循环变量" end="循环变量可以接收的最大值”
	step="循环变量递增值或者递减值">
</c:forEach>

注意: step属性可以不写,默认每次递增加一;循环变量被保存在【pageContext】

  • 例子
<select>
    <c:forEach var="i" begin="1" end="5" step="1">
        <option>第${pageScope.i}页</option>
    </c:forEach>
</select>

在这里插入图片描述

(3)第二种使用方式(遍历List集合)
<c:forEach items="通过EL表达式获得域对象集合" var="声明循环变量">
	${循环变量.对象属性名}
</c:forEach>
  • 例子

Student(实体类)

package com.university.entity;

public class Student {
    private Integer id;
    private String name;

    public Student() {
    }

    public Student(Integer id, String name) {
        this.id = id;
        this.name = name;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

OneServlet

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    Student student = new Student(12,"mike");
    Student student1 = new Student(14,"jack");
    List list = new ArrayList();
    list.add(student);
    list.add(student1);
    request.setAttribute("key",list);
    request.getRequestDispatcher("/index_1.jsp").forward(request,response);
}

index_1.jsp

<table border="2">
        <tr>
            <td>学员编号</td>
            <td>学员姓名</td>
        </tr>
        <c:forEach items="${key}" var="stu">
            <tr>
                <td>${stu.id}</td>
                <td>${stu.name}</td>
            </tr>
        </c:forEach>
    </table>

在这里插入图片描述

(4)遍历map集合

OneServlet

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    Student student = new Student(12,"mike");
    Student student1 = new Student(14,"jack");
    List list = new ArrayList();
    list.add(student);
    list.add(student1);
    Map map = new HashMap();
    map.put("一班学员",student);
    map.put("二班学员",student1);
    request.setAttribute("key",list);
    request.getRequestDispatcher("/index_1.jsp").forward(request,response);
}

index_1.jsp

<h1>遍历map集合</h1>
    <table border="2">
        <tr>
            <td>班级名称</td>
            <td>学员编号</td>
            <td>学员姓名</td>
        </tr>
        <!--遍历map集合时,每次从map集合得到一个【键值对】,【键值对】交给循环变量
        循环变量.key获得【键值对】中关键字名字:班级名称
        循环变量.value获得【键值对】中内容:student对象-->
        <c:forEach items="${mapKey}" var="key_value">
            <tr>
                <td>${key_value.key}</td>
                <td>${key_value.value.id}</td>
                <td>${key_value.value.name}</td>
            </tr>
        </c:forEach>
    </table>

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值