JSTL标签库学习笔记

JSTL概述

apache的东西,依赖于EL

使用jstl需要导入jstl.jar包

标签库

  • core 核心标签库
  • fmt 格式化标签库
  • sql 数据库标签库,过时
  • xml xml标签库,过时

JSTL标签库

四大标签库

  • core 核心库
  • fmt 格式化标签库
  • sql 数据库标签库,过时
  • xml xml标签库,过时

导入标签库

使用taglib命令

除了jsp的动作标签外,使用其他的第三方的标签库都需要导包

在jsp页面内导标签库

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

prefix 指定标签的前缀,这个前缀可以随便给值,但是大家都会在使用core标签是指定前缀为 c
uri 指定 标签库的uri ,他不一定是真实存在的网址

core标签库的常用标签

core –> c标签

out和set

remove

url

if

choose

forEach

out

* <c:out value="aaa"/> 
* 输出字符串aaa
* <c:out value="${aaa}"/>
* 输出域属性aaa,其中与${aaa}相同
* <c:out value="${aaa}" default="xxx"/>
* 如果${aaa}不存在,那么输出xxx字符串如果${aaa}中包含特殊字符,那么转义它。这可以防止javascript攻击,添加escapeXml 之后就不能防止script攻击

例如:
    <%
        request.setAttribute("xxx", "<script>alert('12345');</script>");
    %>
  <c:out value="${xxx }" escapeXml="false"/>

set

创建域的属性

<c:set var="a" value="hello" />
* 在pageContext中添加name为a,value为hello的数据
<c:set var="b" value="hello" scope="session" />
* 在session中添加name为b,value为hello的数据,变量值可以为el表达式
* scope:域,默认为page,可选值为,page,request,session,application

remove

<c:remove var="a" />
* 删除所有域中的name为a的数据
* var: 变量名
* scope: 如果不给出scope,表示删除所有域中该名称变量,如果指定了,就只删除该域的变量

url

* value: 指定一个路径,他会在路径前面自动添加项目名。
    * <c:url value="/index.jsp" /> 他会输出/Test/index.jsp
*子标签:<c:param>,用来给url后面添加参数,例如:
    <c:url value="/index.jsp" >
        <c:param name="username" value="zhangsan" /><!--可以对参数进行url编码!!-->
    </c:url>
    //结果为:/Test/index.jsp?username=%ED%2c%d 
* 指定变量名,一旦添加了这个属性,那么url标签就不会再输出到页面,而是把生成的url保存到域中
* scope: 他与var一起使用,用来保存url。

if

if : 对应Java中的if语句
    <c:if test="布尔类型">..</c:if>

choose

 <c:choose>
    <c:when test="${条件1}">a</c:when>
    <c:when test="${条件2}">b</c:when>
    <c:when test="${条件3}">c</c:when>
    <c:otherwise>d</c:otherwise> //default
 </c:choose>

forEach

可以用来循环遍历数组,集合
还可以用来计数

//计数
<c:forEach var="i" begin="1" end = "10">
    ${i}<br>
</c:forEach>
属性介绍:
* var 循环变量
* begin 设置循环变量初始值
* end 设置循环变量结束值
* step 设置步长,等同于 i++或者是i += 2,默认为1
用来输出数组和集合
  <%
    String[] strs = {"one", "two", "three", "four", "five"};
    request.setAttribute("strs", strs);
   %>

  <c:forEach items="${requestScope.strs }" var ="str">
      ${str } 
  </c:forEach>

等同于增强for
for(String str:strs){
    ...
}

属性:
* items: 指定要循环的对象,他可以是一个数组,或者是一个集合
* var: 把数组和集合中的每一个元素赋值个var指定的变量。
**注意:items中不能有空格,否则这个错误很难发现,既不能写为 items="${param.name } " **
**引号内是不能够有空格,el表达式中可有**
循环状态
可以使用varStatus来创建循环状态变量
属性:
* count 循环元素的个数
* index 循环元素的下标
* first 是否为第一个元素
* last 是否为最后一个元素
* current 当前元素
<c:forEach items="${requestScope.strs }"   var ="str" varStatus="vs">
    ${vs.index }${vs.count }${vs.first }${vs.last }${vs.current} ${str } 
    <br>
  </c:forEach>

fmt标签库常用标签

格式化时间

 <%
    Date date = new Date();
    pageContext.setAttribute("date", date);
 %>
    <fmt:formatDate value="${date }" pattern="yyyy-MM-dd HH:mm:ss"/>
属性介绍
* value 指定一个Date类型的变量
* pattern 用来指定输出的模板!例如:yyyy-MM-dd HH:mm:ss
<fmt:formatNumber value="${num }" pattern="0.000" />
// 取舍是四舍五入,不够为补 0
<fmt:formatNumber value="${num }" pattern="#.###" />
// 取舍时四舍五入, 不够不补位 0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值