jstl标签

什么是jstl

jstl是Apache对EL表达式的扩展,jstl是标签语言,使用起来很方便,但是它不是内置标签,需要导入jar包
- 导入 jstl 。jar 包

jstl 标签库

  • core :核心标签库,也叫c标签
  • fmt:格式话标签
  • sql :数据库标签库,过时了
  • xml: xml标签库,过时了

使用jsp指令 导入标签库

  • 导入jar 包jstl.jar
  • 在需要实用的jsp页面导入标签库
  • 格式:<%@ taglib prefix=”c” uri=”http://java.sun.com/jsp/jstl/core”%>
    • prefix 表示前缀
    • uri 不一定是真实存在的地址,但是可以让jsp找到jstl标签库的描述文件

jstl 核心标签库 (core)

  • out
    • value:可以是字符串,也可以是EL表达式
    • default:当要输出的内容是null时,会输出default的值
    • escapeXml:默认值的true,表示转义
    • 实例:这里写图片描述
  • set
    • var:变量名
    • value:变量值,可以值EL表达式
    • scope:域,默认是pageContext,可以指定;request,session,application
    • 实例:这里写图片描述
      这里写图片描述
  • remove 标签
    • 这里写图片描述
    • var 变量名
    • scope: 如果不指定scope,那么默认删除所有域中的这个属性
    • 实例:这里写图片描述
  • url 标签

    • 这里写图片描述
    • value 指定一个路径,会自动在路径前添加项目路径
    • 子标签c:param>用来给路径添加 参数
      • c:url value=”/a.jsp”>c:url>
    • ccope 指定要保存的域
    • var 变量名,将这个变量名保存到指定的域中
    • 练习url标签的 三个属性:这里写图片描述
    • 练习url标签的子标签添加参数这里写图片描述
    • ==jsp页面获取项目路径的方法==
      • 使用EL表达式 ${pageContext.request.ContextPath }/a.jsp
      • url标签方式
      • 如果需要大量的使用,建议使用url标签
  • if 标签

    • if标签的test必须是一个boolean类型的值,如果test内容是true,那么执行if标签的内容,如果是false那么不执行
    • 练习if标签:这里写图片描述
  • choose 标签
    • 这里写图片描述
    • choose 标签对应Java中的 if/else if/else结构,when标签的test 为true时,会执行这个when标签的内容,当所有的when都不成立的时候,那么就会执行otherwise 的内容
  • foreach 循环
    • 计数方式的循环
      • var 循环变量
      • begin 开始的变量值
      • end 结束的变量值
      • step 设置步子长度,每次增加的幅度
      • 这里写图片描述
      • -
    • 遍历数组和集合
      • items 表示需要的循环额对象
      • var 表示每次循环的值的变量
      • 这里写图片描述
      • 这里写图片描述
  • 如果指定了 forEach循环的属性varstatus 如果指定了循环状态变量,那么就可以使用循环状态的几个属性
    • count 表示当前 循环的次数
    • index 表示当前 循环的索引
    • first 表示判断是不是第一次循环
    • last 表示判断是不是最后一次循环
    • current 表示当前循环的值
    • 这里写图片描述
  • redirect 标签,重定向
    • url 要转到的资源地址,不需要添加项目名,这个标签内部做了优化,重定向可以不添加项目名
    • 例子:这里写图片描述

fmt标签库

  • 使用步骤
    • 导入jstl jar 包
    • 在需要使用的jsp页面使用taglib指令导入标签库
  • 格式化日期
    • value 传递一个Date 类型的变量
    • pattern 给定一个格式化的模板
    • 这里写图片描述
  • 格式化数字
    • value 给顶一个数字
    • pattern 给定一个数字格式化的模板
      • 0.000 这种模板会四舍五入,同时如果有多余的0,会补上
      • #.## 这种模板会四舍五入,同时有多余的0,不会补
      • 这里写图片描述

自定义jstl标签方式之实现SimpleTag接口(java ee文档)

我们在jsp页面使用的标签,就等于调用了对象的某个方法一样,,自定义标签就是自定义类
- 步骤
- 标签处理类
- 编写标签处理类的tld描述文件
- 定义标签处理类需要实现的接口介绍SimpleTag
- doTag()使用标签要执行的方法
- Tag getParent()获取 父标签
- 返回值是父接口的类型
- setJspBody(JspFragment jspBody)设置标签体
- setJspContext(JspContext pc) 获取jsp上下文对象
- 标签的生命周期:
- 当容器(Tomcat)第一次执行到某个标签时,会创建标签处理类的实例;
- 然后调用setJspContext(JspContext)方法,把当前JSP页面的pageContext对象传递给这个方法;
- 如果当前标签有父标签,那么使用父标签的标签处理类对象调用setParent(JspTag)方法;
- 如果标签有标签体,那么把标签体转换成JspFragment对象,然后调用setJspBody()方法;
- 每次执行标签时,都调用doTag()方法,它是标签处理方
- 定义的标签处理类 这里写图片描述
- 定义tld描述文件这里写图片描述
- 引入自定义标签库,使用标签这里写图片描述

自定义jstl标签之,继承SimpleTagSupport

  • SimpleTagSupport是SimpleTag的一个实现类
    • 内部封装了一些方法获取jspContext(可以自定义强转换为pageContext)
    • 我们只需要重写doTag方法
    • 和直接 实现SimpleTag接口相比,简单了很多
  • 定义标签处理类这里写图片描述
  • 标签tld描述文件和引入标签同上

自定义jstl标签体

  • 可以选择的值
    • ==empty== 标签体是空
    • jsp 标签体可以是Java脚本,EL表达式,jstl等,但是jsp2.0之后,不在使用
    • ==scriptless== 标签体不能是Java脚本,可以是EL表达式,字符串,jstl等
    • tagdependent:标签体内容不做运算,由标签处理类自行处理,无论标签体内容是EL、JSP、JSTL,都不会做运算。这个选项几乎没有人会使用!
  • 定义标签处理类这里写图片描述
  • 定义tld文件这里写图片描述
  • 引入,和使用这里写图片描述

执行了自定义标签体的内容后,不在执行jsp后续压面的内容

  • 在定义标签护理类的时候,在doTag方法内,需要添加 throw new SkipPageException ,抛出异常终止后续的页面显示这里写图片描述
  • 定义tld文件这里写图片描述
  • 导入和使用这里写图片描述

自定义标签属性

  • 在 标签处理类中,给定javaBean属性,至少要提供set方法这里写图片描述
  • 配置tld文件这里写图片描述
  • 引入标签,使用标签这里写图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值