当前位置:   article > 正文

JSTL的简介和使用_javax.servlet jstl

javax.servlet 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

这里只使用核心标签库
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

使用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
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

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属性: 被存储的对象
  • 1
  • 2
  • 3
  • 4

使用示例:

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

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

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

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

使用示例:

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

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

可以使用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
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

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

普通循环:

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

begin属性: 开始索引
end属性: 结束索引
var属性: 循环变量
step属性: 步长
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

遍历数组/列表:

<%
    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取得
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

遍历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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

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

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

使用示例:

<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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/140069
推荐阅读
相关标签
  

闽ICP备14008679号