JSTL标签库

jstl
依赖el 需要导入jstl-impl.jar
主要掌握:core 和 fmt

导入标签库:

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

core 标签

  < c:out  value="aaa" default="bbb" escapeXml="true"></c:out>

value 表示输出的值 如果value为null 则输出default里的
escapeXml 转译防止参数里带有脚本等
例如:

 <c:out  value="<script>alert('hello')</script>" default="bbb" escapeXml="true"></c:out>

其他core标签的方法演示

 <c:set var="username" value="ashin" scope="request"></c:set>
 类似于:
 request.setAttribute("username","ashin");

remove 方法类似 删除域中的对象 如果没有指定哪个域就删除所有域中的

<c:url value="/index.jsp"> 
    <c:param name="name" value="ashin" />  子标签
</c:url>
指定一个路径  会在路径前自动添加项目名
结果为: /MyTag/index.jsp 
与${pagecontext.request.contextPath} 类似,更为简单
url 还有 var 和 scope 属性 结合起来使用把url保存在域中
 <c:if test="false">aaaa</c:if>
 test 里的参数是true时执行标签体内容 相反则不执行
<c:choose > 类似java的 if/else if / else 
    <c:when test=""></c:when>
    <c:when test=""></c:when>
    <c:otherwise></c:otherwise>
  </c:choose>
  <c:forEach  var="i" begin="1" end="10" step="2">
    ${i }     //定义变量i 从1开始 到 10 结束 步长为2 包括头尾 1,10
  </c:forEach>

遍历数组:

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

循环状态
index 循环元素下标
count 循环元素个数
first 是否是第一个元素
last 是否是最后一个元素
current 当前元素

fmt库
它是格式化库
例子中el表达式的值自行传递

<f:formatDate value="${date }" pattern="yyyy-MM-dd HH:mm:ss"/>
<f:formatNumber value="${num }" pattern="0.00"/>
<f:formatNumber value="${num }" pattern="#.##"/>
上面一个如果小数点后面的最后位是0不保留 下面的保留

自定义标签
1.先创建一个标签类 继承SimpleTagSupport 也可以实现SimpleTag接口

SimpleTagSupport 本身实现了 SimpleTag接口 继承它就只需要重写需要的方法即可 它把tomcat 传递的数据都保存起来了 还提供了get 方法供子类调用
dotag()每次执行标签都会被调用

2.创建一个tld文件里面的配置可以参考core 和fmt 的 c.td f.td

tld文件一般放在web-inf 目录下 这样客户端就访问不到
    mytag1是标签名 
    ta-class:写出指定的标签类
    <body-content>基本只用两个选项empty(无标签体) 或者scriptless(只能是el表达式,也可以是其他标签)
 <tag>
  <name>myTag1</name>
    <tag-class>com.ashin.tag.MyTag1</tag-class>
    <body-content>empty</body-content>
  </tag>
获得一个当前页面的输出流 ,把标签体里的内容输出到页面
该代码应该在doTag()里
Writer out = this.getJspContext().getOut();
this.getJspBody().invoke(out);

在doTag() 里写 throw new SkipPageException()
在jsp页面调用标签时就不会输出后面的标签了

定义标签的属性

给标签类添加属性 只要有set方法就可以了

<attribute>
        <name>属性名</name>
</attribute>

第二篇 感觉知识点还是很难记住写博客当复习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值