JSTL的简介和使用

1 JSTL

1.1 JSTL的简介

JSTL(JSP Standard Tag Library)即JSP标准标签库

EL用于替换掉JSP页面中的表达式脚本,JSTL用于替换掉JSP页面中的代码脚本
EL结合JSTL使用,可以使JSP页面更加简洁

JSTL的组成:

1,核心标签库	c
2,格式化		fmt
3,函数			fn
4,数据库		sql
5,XML			x

这里只使用核心标签库

使用JSTL之前:

1,导入JSTL需要的相关依赖
		<dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

2,在JSP页面使用taglib指令引入核心标签库
<%@taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>

1.2 JSTL的使用

JSTL提供了许多标签用来代替Java的某些语法

1.2.1 使用<c:set>存储数据到域对象

<c:set scope="xx" var="yy" value="zz"/>
	scope属性: 指定的域对象(page,request,session,application)
	var属性: 被存储对象的键名
	value属性: 被存储的对象

使用示例:

    <%-- 使用JSTL存储数据到域对象 --%>
    <c:set scope="request" var="key" value="value"/>
    ${requestScope.get("key")}

输出:
在这里插入图片描述

1.2.2 使用<c:if>作为判断语句

<c:if test="${表达式}">
	待执行语句
</c:if>
	test属性: EL条件表达式,表达式返回值为true则执行JSTL中的语句

使用示例:

    <%-- 使用JSTL完成判断语句 --%>
    <c:if test="${22 == 22}">
        ${pageContext.request.method}
    </c:if>

输出:
在这里插入图片描述

可以使用choose,when,otherwise组合完成多重判断的功能

<c:choose>
    <c:when test="${表达式1}">
        待执行语句
    </c:when>

    <c:when test="${表达式2}">
        待执行语句
    </c:when>

    <c:otherwise>
        待执行语句
    </c:otherwise>
</c:choose>

choose标签: 多路判断的开始
when: 某种独立的判断情况
otherwise: 其它情况

1.2.3 使用<c:forEach>作为循环语句

普通循环:

<c:forEach begin="1" end="10" var="i" step="2">
        ${i}
</c:forEach>

begin属性: 开始索引
end属性: 结束索引
var属性: 循环变量
step属性: 步长

遍历数组/列表:

<%
    List<String> myList = new ArrayList<>();
    myList.add("a");
    myList.add("b");
    myList.add("c");

    request.setAttribute("list", myList);
%>

<c:forEach items="${ requestScope.get('list') }" var="item">
    ${item}
</c:forEach>

items属性: 待遍历的集合,必须要使用EL取得

遍历Map:

<%
	  Map<String, String> myMap = new HashMap<>();
	  myMap.put("key1", "value1");
	  myMap.put("key2", "value2");
	  myMap.put("key3", "value3");
	
	  request.setAttribute("map", myMap);
%>

<c:forEach items="${ requestScope.get('map').keySet() }" var="item">
    ${requestScope.get('map').get(item)}
</c:forEach>

输出:
在这里插入图片描述
<c: forEach>中的status属性:
status是一个对象,可以调用一些方法来获取更多的信息:

	status.current     当前对象
	status.index       获取索引从0开始
	status.count       当前数据是集合的第几个元素
	status.first       是否是集合中第一个元素
	status.last        是否是集合中最后一个元素
	status.begin       获取开始索引
	status.end         获取结束索引
	status.step        获取步长

使用示例:

<table border="1">
    <c:forEach items="${ requestScope.myList }" var="item" varStatus="status">
        <tr>
            <td>
                    ${item} ${status.current} ${status.index} ${status.count}
            </td>

            <td>
                ${status.first} ${status.last}
            </td>

            <td>
                ${status.begin} ${status.end} ${status.step}
            </td>
        </tr>
    </c:forEach>
</table>

输出:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值