JSTL详解

JSTL定义:

JSP standard Tag Library,
JSP标准标签库,JSP为开发者提供的一系列标签,使用这些标签可以完成一些逻辑处理,比如循环遍历集合,让代码更加简洁,不再出现JSP脚本穿插的情况。

实际开发中EL和JSTL结合起来使用,JSTL侧重于逻辑处理,EL负责展示。

JSTL的使用

1.需要导入jar包(jstl.jar, standard.jar)

配置moven

moven导包网站里找到所需要的包,复制下代码,然后copy到pom.xml中

在这里插入图片描述

   <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>

2.在JSP页面开始的地方导入JSTL标签库

//prefix可以随便设置,jstl默认写c
<% @taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

3.在需要的地方使用

<c:forEach items="${list}" var="user" varStatus="status">
            <tr>
                <td>${user.id }</td>
                <td>${user.name }</td>
                <td>${user.score }</td>
                <td>${user.address.value }</td>
            </tr>
        </c:forEach>

JSTP优点:

1.提供了统一标签

2.可以用于编写各种动态功能

★核心标签库常用标签

set:向域对象中添加数据

<c:set var="name" value="tom"></c:set>

相当于request.setAttribute(key,value);(默认存pageContext)
out:输出域对象中的数据(default属性,获取不到值时候的定义)

<c:out value="${name}" default="未定义"></c:out>

remove:删除域对象中的数据

 <c:remove var="name" scope="page"></c:remove>

catch:捕获异常

<c:catch var="error">
<%
    int a = 10/0;
%>
</c:catch>
${error}

输出 java.lang.ArithmeticException: / by zero

条件标签:if,choose

if

<c:set var="num1" value="1"> </c:set>
<c:set var="num2" value="2"> </c:set>
<c:if test="${num1>num2}">ok</c:if>
<c:if test="${num1<num2}">fail</c:if>

choose

<!-- 相当于if else -->
<c:choose>
    <c:when test="${num1>num2}">ok</c:when>
    <c:otherwise>fail</c:otherwise>
</c:choose>

迭代标签:for each

<c:forEach items="${list}" var="str" varStatus="sta">
    <!-- 给标签附一个 varStatus 就可以用el取他的各项值 -->
    <!-- 取下标 -->
    ${sta.index}-${str}
    <br/>
</c:forEach>
<hr/>
<c:forEach items="${list}" var="str" varStatus="sta">
<!-- count可以用来排序(count从1开始,index从0开始) -->
${sta.count}、${str}<br/>
</c:forEach>

格式化标签库常用标签

1、引入

<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

formatDate:规范日期
formatNumber:规范数字

<%
        request.setAttribute("date",new Date());
    %>
    <!-- 月份用大写为了跟分钟区分 -->
    <!-- 大写H是24小时制,小写h是12小时制 -->
    <fmt:formatDate value="${date}" pattern="yyyy-MM-dd HH:mm:ss"></fmt:formatDate><br/>
    <!-- maxIntegerDigits小数点后往左,maxFractionDigits小数点后往右 -->
    <fmt:formatNumber value="13214222.22222222" maxIntegerDigits="2" maxFractionDigits="3"></fmt:formatNumber>

函数标签库常用标签

1.引入

<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>

详情如下:

<%
        request.setAttribute("info","java,C");
%>
    <!-- fn标签的写法和上边的都不一样 -->
    
    <!-- contains是判断是否存在 -->
    ${fn:contains(info,"Python")}<br/>
    <!-- startsWith判断是否以...开头 -->
    ${fn:startsWith(info, "java")}<br/>
    <!-- endsWith判断以...结尾 -->
    ${fn:endsWith(info, "C")}<br/>
    <!-- indexOf判断...在哪个位置(0开头,逗号也算) -->
    ${fn:indexOf(info, ",")}<br/>
    <!-- replace将...替换成... -->
    ${fn:replace(info, "C", "Python")}<br/>
    <!-- substring截取,两个参数都是下标 -->
    ${fn:substring(info, 2, 4)}<br/>
    <!-- split以逗号分开 -->
    ${fn: split(info, ",")[0]}-${fn: split(info, ",")[1]}

综合以上的代码,展示JSTL的运用:

	<c:set var="name" value="tom"></c:set>
    <c:out value="${name}" default="未定义"></c:out>
    <hr/>
    <c:remove var="name" scope="page"></c:remove>
    <c:out value="${name}" default="未定义"></c:out>
    <hr/>
    <c:catch var="error">
    <!-- 此处故意写一个错误展示catch -->
    <%
        int a = 10/0;
    %>
    </c:catch>
    ${error}

输出结果:

其中第一行set将tom传入,

第二行用out将name的值展示,

第三行将name清除

第四行没了name值,out展示出来变成了未定义

接下来用catch标签将可能会出错的代码包裹起来,输出错误

tom

未定义

java.lang.ArithmeticException: / by zero

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值