zoukankan      html  css  js  c++  java
  • JSTL标签库笔记

    1. 概述

    JSTL(Jsp Standard Tag Library)即JSP标准标签库,只能运行在支持JSP1.2↑和Servlet2.3↑规范的容器上。

    通常情况下我们在编写JSP页面的时候,在JSP页面中不应该存在任何一行Java代码,而应该尽量使用标签。

    JSTL由四个定制标记库组成:core、format、xml、sql

    2. JSTL详细介绍及使用

    2.1 JSTL库安装

    要使用JSTL首先需要引入Maven的依赖:

    <dependency>
    	<groupId>jstl</groupId>
    	<artifactId>jstl</artifactId>
    	<version>1.2</version>
    </dependency>

    然后在要使用JSTL标签的JSP文件中使用taglib引入标签库:

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

    2.2 core标签库

    core库提供一些基本的流程操作标签,是最频繁使用的,主要是一些流程的判断操作和url的处理。

    引入core标签库:

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

    <c:if>

    应该是最常用到的标签了,用来做两个分支的判断,与Java中的if作用一致,通常情况下会在test中使用EL表达式作为条件表达式,返回一个布尔值给test,用法如下:

    <c:if test="${foo}">
    	...
    </c:if>
    

    <c:choose>/<c:when>/<c:otherwise>

    用来做多个条件的分支判断,choose相当于switch,when相当于case,otherwise相当于default。

    用法如下:

    <c:choose>
    
    	<c:when test="...">
    		...
    	</c:when>
    
    	<c:when test="...">
    		...
    	</c:when>
    
    	<c:when test="...">
    		...
    	</c:when>
    
    	<c:otherwise>
    		...
    	</c:otherwise>
    
    </c:choose>

    循环控制语句

    <c:forEach>

    一般有两种用法,一种是用来遍历一个集合对象,或者用来做递增基数:

    遍历对象的例子:

    <c:forEach items="${page.list}" var="item">
    	<tr>
    		<td>
    			<a target="_blank" href="<c:url value="/common/companyDetailsEntry?id=${item.id}"/>" class="job-name">${item.brifName}</a>
    		</td>
    		<td>
    			<span class="company-name">${item.person_scale_low}~${item.person_scale_high}人</span>
    		</td>
    		<td><%-- ${item.jobCount} --%></td>
    		<td>${item.brifDescContent}</td>
    		<td>
    			<div class="btn-group">
    				<a target="_blank" href="<c:url value="/companyHr/editCompanyEntry?id=${item.id}"/>" class="btn btn-success btn-sm" id="editBtn">编辑</a>
    				<button type="button" class="btn btn-success btn-sm" name="delBtn" data-location="<c:url value="/companyHr/deleteCompany?id=${item.id}&pageNumber=${page.pageNumber }"/>">删除</button>
    			</div>
    		</td>
    	</tr>
    </c:forEach>

    递增的例子:

    <c:forEach begin="1" end="${page.totalPage<5 ? page.totalPage : 5 }" var="index">
    	<li <c:if test="${page.pageNumber==index }">class="active"</c:if>>
    		<a href="<c:url value="/companyHr/myCompanyEntry?pageNumber=${index }"/>">${index }</a>
    	</li>
    </c:forEach>

    <c:forTokens>

    <c:catch>

    用于捕捉程序可能产生的错误

    <c:url>

    一般用来生成url,可以将URL格式化为一个字符串,然后存储在一个变量中。在写一个地址的时候通常不会直接写上而是会使用<c:url>再包一层,比如下面这种:

    <a href="<c:url value="/indexEntry"/>">首页</a>

    <c:out>

    用于在JSP中显示数据,类似<%=foo %>

    <c:set>

    用于声明一个变量

    <c:remove>用于删除一个变量

    <c:import>

    检索一个绝对或者相对URL,用来将内容暴露给页面

    <c:redirect> / <c:param>

    <c:redirect>用来重定向到一个新的页面

    <c:param>用来向包含或重定向的页面传递参数

    2.3 format标签库

    format库用来格式化数据,主要是用来格式化并输出文本、日期、时间、数字。

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

    <fmt:formatNumber>使用指定的格式或者精度格式化数字

    <fmt:parseNumer>解析一个表示数字或者货币或者百分比的字符串。

    <fmt:formatDate>使用指定的风格或者模板格式化日期和时间

    <fmt:parseDate>将字符串格式化为日期时间

    <fmt:bundle>绑定资源

    <fmt:setBundle>绑定资源

    <fmt:setLocal>指定地区

    <fmt:timeZone>指定时区

    <fmt:setTimeZone>指定时区

    <fmt:message>显示资源配置文件

    <fmt:requestEncoding>设置request的字符编码

    2.4 xml标签库

    主要用来进行XML文档操作,现在已经很少使用到了,不再详述。

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

    2.5 sql标签库

    sql库用来查询关系数据库的操作,现在已经很少被使用到了,不再详述。

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

    2.6 functions标签库

    主要是提供了一些对字符串进行操作的函数,但是并不是特别常用,因为对于字符串类型的处理使用EL的${foo.toUpperCase() }之类的形式调用String的方法来得更为方便一些。

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

    <fn:contains>检查输入的字符串是否包括指定的子串

    <fn:containsIgnoreCase>检测输入的字符串是否包括指定的子串,大小写不敏感

    <fn:endsWith>测试输入的字符串是否以指定的后缀结尾

    <fn:escapeXml>跳过可以作为XML标记的字符

    <fn:indexOf>返回子串在父字符串中的位置

    <fn:join>将数组中的字符串合成一个字符串然后输出

    <fn:length>返回字符串的长度

    <fn:replace>将字符串中指定的部分替换为另一部分

    <fn:split>将字符串使用指定的分隔符分割后组成一个字符串数组

    <fn:startsWith>测试字符串是否以指定的字符串前缀开始

    <fn:substring>返回字符串的子集

    <fn:substringAfter>返回在某个子串位置之后的字符串

    <fn:substringBefore>返回在某个子串位置之前的字符串

    <fn:toLowerCase>将字符串中的字符都转为小写

    <fn:toUpperCase>将字符串中的字符都转为大写

    <fn:trim>移除两端的空白符

    3. 实现代码原理剖析

    4. 自定义标签库

    5. 总结

    .

  • 相关阅读:
    sqlachemy查询对象转化成字典/json使用
    pandas DF去重
    flask request和response
    flask路由要点
    flask项目结构
    __init__.py在导包中起到的作用
    git 查看修改账号密码
    02.flask-script
    vue点击父组件里面的列表动态传值到子组件
    安卓手机点击背景图会出现预览的情况
  • 原文地址:https://www.cnblogs.com/cc11001100/p/6875303.html
Copyright © 2011-2022 走看看