JSTL介绍及使用

一、JSTL(JSP Standard Tag Library)简介

    > JSTL是JSP的标准标签库

    > JSTL为我们提供了一些常用的标签,供我们日常开发使用(if 、 if...else 、遍历 、 日期格式化)

    > 标签库
      - core :核心标签库
        - 最常用的一个标签库,也就是我们熟悉c标签。

      - fn :函数标签库
        - 函数标签库它需要结合EL表达式使用,主要定义了一些字符串操作的方法。

      - fmt :格式化标签库
        - 主要用来做日期、数字的格式化以及国际化
        - 20151019 2015/10/19 10/19/2015
        - 10000 10,000

      - sql : 数据库标签库
        - 主要用来在JSP中操作数据库的,已淘汰

      - xml : xml标签库
        - 主要用来在JSP操作解析XML文档,已淘汰

      > JSTL的使用
        使用JSTL需要先导入两个jar包
        taglibs-standard-impl-1.2.1.jar
        taglibs-standard-spec-1.2.1.jar

二、 核心标签库

    - 导入核心标签库
      <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

        - 核心标签库一般使用c作为前缀,所以我们也称核心标签库为c标签。

        - c标签是我们JSTL中最常用的一个标签库,它里边封装了很多开发中常用的功能。

    c:out
      作用:向页面中输入一个内容,一般要结合EL表达式使用!
      例子:<c:out value="" default="" escapeXml=""></c:out>
        属性:
          value : 要输出内容
          default : 当内容为空时显示的默认值
          escapeXml : 是否自动转义特殊字符,默认值为true 自动转义,一般不修改该属性

    c:set
      作用:向域中设置一个属性
      例子:<c:set var="name" value="孙悟空" scope="request"></c:set>
        属性:
          var :向域中存储的属性名
          value :向域中存储的属性值
          scope :向那个域中添加属性,四个可选值(page request session application),默认是page

    c:remove
      作用:移除域中的一个属性
      例子:<c:remove var="name" scope="session"/>
        属性:
          var :要移除的属性的名字
          scope :要移除的属性所在的域,四个可选值(page request session application)
            如果不设置该属性,则默认移除四个域中指定属性。

    c:if
      作用 :相当于java中if语句
      例子:
        <c:if test="${empty param.name }">
        <h3>您没有输入name属性!</h3>
        </c:if>
        属性:
          test :接收一个boolean类型的值
          如果test的值为true则标签体执行
          否则不执行标签体

    c:choose c:when c:otherwise
      作用:相当于if...else
      例子:
        <c:choose>
        <c:when test="${param.score == 100 }">
        <h3>恭喜您考了100分!</h3>
        </c:when>
        <c:otherwise>
        <h3>恭喜你,你不及格!</h3>
        </c:otherwise>
        </c:choose>
        属性:
          when标签中的test属性:
          接收一个boolean类型的值
          如果test的值为true则标签体执行
          否则不执行标签体

    注意:在choose标签中可以指定多个when标签,但是只有一个when会执行。
      当所有的when标签都不执行时,则otherwise标签执行。

    c:when和c:otherwise不能脱离c:choose使用。

    c:forEach
      作用:可以在页面中对集合进行遍历
      例子:
        <c:forEach items="${list}" var="hero">
        ${hero} <br />
        </c:forEach>

        <c:forEach items="${map }" var="user">
        ${user.key} --- ${user.value} <br />
        </c:forEach>
        属性:
          items:要遍历的集合
          var:对集合中的对象引用的名字

    注意:在遍历Map时,返回的是一组一组的键值对结构
        我们可以通过对象.key获取键,通过对象.value获取值

      作用:可以用来遍历一组数
      例子:
        <c:forEach begin="1" end="20" var="index" step="1">
        <a href=#>${index}</a>
        </c:forEach>
        属性:
          begin :开始的位置,注意begin不能小于0
          end :结束的位置
          var :引用的名字
          step :步长,每次自增的大小

    c:url
      作用:可以创建一个完整的绝对路径
      例子:
        <c:url value="/index.jsp">
        <c:param name="name" value="孙悟空"></c:param>
        <c:param name="age" value="18"></c:param>
        </c:url>
        属性:
          value:要设置的地址,注意该地址要以/开头,否则不会加上项目名
          在url标签中可以添加c:param标签,可以自动为地址拼接上请求参数。

    c:redirect
      作用:请求的重定向
      例子:
        <c:redirect url="/index.jsp">
        <c:param name="name" value="唐僧"></c:param>
        </c:redirect>
        属性:
    url:
      重定向到目标地址,注意该地址不要自己添加项目名。

      在redirect标签中可以添加c:param标签,可以自动为地址拼接上请求参数。

  注意:redirect标签会自动为我们设置项目名,不需要我们手动设置!

设置绝对路径的三种方式:

  1.<c:set var="ctx" value="${pageContext.request.contextPath }"></c:set>
    使用这种方式,可以通过${ctx}在页面中代替项目名

  2.使用<c:url value="/index.jsp"></c:url>
    使用url标签,它会自动为绝对路径加上项目名

  3.<base href="http://${pageContext.request.serverName
}:${pageContext.request.serverPort }${pageContext.request.contextPath
}/" />
    使用base标签可以为页面中所有的相对路径,加上项目名

三、 函数标签库

  作用:函数标签库需要配合EL表达式使用,它里面的方法都是一些字符串的操作

  引入函数标签库:<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

    例子:

      ${fn:contains("hello","He") } <br /> 判断前一个字符串是否包含后一个字符串

      ${fn:containsIgnoreCase("hello","He") } <br /> 判断前一个字符串是否包含后一个字符串,不区分大小写

      ${fn:endsWith("hello","alo") }<br /> 判断前一个字符串是否以后一个字符串结尾

  <!-- 自动将特殊字符转义 -->
      ${fn:escapeXml("<html></html>") }<br /> 自动将特殊字符进行转义

  <!-- fn:join用于将一个String数组转换一个字符串,第二个参数代表的连接符 -->
      ${fn:join(strs,",") }<br /> 将一个String数组,以指定字符串拼接为一个新的字符串

      ${fn:split("a,b,c,d,e",",")[2] }<br /> 将一个字符串,以指定字符拆分为一个字符数组

      ${fn:trim(" abcd ") }<br /> 去掉字符串的前后空格

  剩下方法参照 alt+/

JSTL介绍及使用的更多相关文章

  1. JSTL介绍

    JSTL介绍 一.介绍 JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标 ...

  2. java Web JSTL介绍及基本应用

    由于实际开发中我们一般不能在jsp页面上写java代码,而el表达式也做不了判断 循环之类的复杂操作,为了弥补这些缺点,所以就有了JSTL. 简介 JavaServer Pages Standard ...

  3. [原创]java WEB学习笔记43:jstl 介绍,core库详解:表达式操作,流程控制,迭代操作,url操作

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  4. 四种会话跟踪技术以及jstl介绍

    四种会话跟踪技术 page:代表与一个页面相关的对象和属性.一个页面由一个编译好的 Java servlet 类(可以带有任何的 include 指令,但是没有 include 动作)表示.这既包括 ...

  5. JSTL中的TLD配置和使用。

    一,JSTL介绍: JSTL标签库,是日常开发经常使用的,也是众多标签中性能最好的.把常用的内容,放在这里备份一份,随用随查.尽量做到不用查,就可以随手就可以写出来.这算是Java程序员的基本功吧,一 ...

  6. JSP简单介绍

    前言 知识点 1.JSP是什么   java  server   page,javaserver端页面技术.其主要作用在server端动态生成页面, 其组成java代码和html, 2.JSP的组成 ...

  7. JSTL标签库的基本教程之核心标签库(一)

    JSTL介绍 Java Server Pages Standard Tag Libray(JSTL):JSP标准标签库,它封装了JSP应用的通用核心功能.JSTL支持通用的.结构化的任务,比如迭代,条 ...

  8. 第75节:Java的中的JSP,EL和JSTL

    第75节:Java中的JSP,EL和JSTL 哭吧看不完的!!! Cookie和`Session 请求转发和重定向的区别: 地址不一样 请求次数也不一样 数据无法传递 4.跳转范围有限制 效率 请求转 ...

  9. jsp之jstl核心标签库

    JSTL核心标签库技术 1. JSTL介绍 在JSP页面中即可书写html,也可以书写Java代码,导致页面混乱,维护,修改,升级难度加大,于是国际上不同的公司在实际应用中,根据页面的需求将Java代 ...

随机推荐

  1. Fiddler的钩子hook导致电脑无法连上网络

    今天,电脑怎么都无法连上网络,重启了几次电脑也不行,网络环境是没有问题的,后来同事告诉我,Fiddler有一个BUG,就是Fiddler获取钩子之后没有释放掉,必须启动Fiddler,再关闭Fiddl ...

  2. 优秀UX设计师的八条黄金法则

    与用户保持亲密   成为成功的UX设计师最重要的先决条件之一就是与用户保持紧密的联系,以发现和了解他们的需求和爱好.理想情况下你应该让自己完全地成为产品用户,因为只有这样你才能理解背后的动机.“这样的 ...

  3. Winpython环境下mayavi配置

    Winpython环境下mayavi配置 在pythonxy中会直接有mayavi软件包,但是所附带的杂包实在太多.本人一直用的是window下的winpython或者linux下的anaconda来 ...

  4. 【Web】网站主如何更改网页标签的图标(favicon.ico)

    修改web项目的favicon图标,方式有两种:全局方式和局部方式 全局方式: 进入服务器\webapps\ROOT,然后用自己的favicon.ico替换服务器自带的favicon.ico图片 局部 ...

  5. 2018.09.29 bzoj3156: 防御准备(斜率优化dp)

    传送门 斜率dp经典题目. 然而算斜率的时候并没有注意到下标的平方会爆int于是咕咕*2. 这道题我用了两个数组来表示状态. f[i]f[i]f[i]表示最后i个位置倒数第i个放木偶的最优值. g[i ...

  6. python 文件合并和编号

    # -*- coding:utf-8 -*- import os import re p1=r"([0-9][0-9][AB])\.\w{3}$" pattern1=re.comp ...

  7. 让tableView的某行移动到tableView的某位置

    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:lineNumber inSection:0]; [lrcTableView selectR ...

  8. poj 2591 Set Definition

    题目 这道题是个水题,写博客上的人好像都不屑于写这这道题.但是我为什么还是觉得挺难的呢? 我也是看了别人的博客才过了的,感觉这种写法很新颖,这样就可以不用在排序了. 下面给出正解: #include& ...

  9. Wireshark数据包分析(一)——使用入门

    Wireshark简介: Wireshark是一款最流行和强大的开源数据包抓包与分析工具,没有之一.在SecTools安全社区里颇受欢迎,曾一度超越Metasploit.Nessus.Aircrack ...

  10. TCP/IP模型的一个简单解释

    TCP/IP模型是互联网的基础. 想要理解互联网,就必须理解这个模型.但是,它不好懂,我就从来没有搞懂过. 前几天,BetterExplained上有一篇文章,很通俗地解释了这个模型.我读后有一种恍然 ...