JSTL

  JSTL就是JSP标准标签库(JavaServer Pages Standard Tag Library, JSTL)是一个定制标签库的集合,用来解决像遍历Map或集合、条件测试、XML处理,甚至数据库访问和数据操作等常见的问题。

  (JSTL的使用需要有配置好两个jar包,分别是jstl.jar和standard.jar)

  JSTL库

  JSTL是标准标签库,但它是通过多个标签库来暴露其行为的。

区域

子函数

URI

前缀

核心

变量支持

http://java.sun.com/jsp/jstl/core

c

流控制

URL管理

其他

XML

核心

http://java.sun.com/jsp/jstl/xml

x

流控制

转换

国际化

语言区域

http://java.sun.com/jsp/jstl/fmt

fmt

消息格式化

数字和日期格式化

数据库

SQL

http://java.sun.com/jsp/jstl/sql

sql

函数

集合长度

http://java.sun.com/jsp/jstl/functions

fn

   在JSP页面中使用JSTL库,必须通过以下格式在JSP页面的开头作出声明:

  <%@ taglib uri="以上表格中对应的uri" prefix="以上表格中对应的前缀"%>

  (在开始进行学习JSTL之前需要掌握EL表达式的用法,可以参考Servlet和JSP之有关Servlet和JSP的梳理(二),但基本格式是"%{....}")

  常用核心标签介绍  ----->   <%@taglib uri=”http://java.sun.com/jsp/jstl/core  prefix=”c”%>

  JSTL的核心标签库标签共13个,从功能上可以分为4类:

表达式控制标签

out、set、remove、catch

流程控制标签

if、choose、when、otherwise

循环标签

forEach、for、Tokens

URL操作标签

import、url、redirect

  表达式控制标签详解之out

输出常量

  可在value属性中直接赋值。

<c:out value="this is our first JSTL demo"></c:out><br>

  ② 输出变量

   变量不存在时可配合default属性输出默认值,还可以通过escapeXml控制转义字符的输出方式。

<%String username = "zhangsan";request.setAttribute("username", username); %>
<c:out value="${username }"></c:out>
<c:out value="${name }" default="error"></c:out><br>
<c:out value="&gtout标签lt" escapeXml="false"></c:out><br>

  

   表达式控制标签详解之set

  ① 存值到scope中

可将值以变量形式存放在指定的范围中(2种方式)。

 

<c:set value="today" var="day" scope="session"></c:set>

<c:out value="${day }"></c:out>

<c:set var="age" scope="application">eleven</c:set>

<c:out value="${age }"></c:out>

  ② 存值到JavaBean的属性中

需要配合target属性指定对象并且通过property属性指定要赋值给对象中的哪个属性。

 <jsp:useBean id="person" class="com.imooc.test.Person"></jsp:useBean>

<c:set target="${person }" property="address" > Guangzhou</c:set>
<c:out value="${person.address }"></c:out>

  

  表达式控制标签详解之remove

  remove掉某个变量,var属性是必选,scope属性是可选。

<c:remove var="job" scope="session"></c:remove>

  

  

   表达式控制标签详解之catch

   catch标签中可以包含那些容易出错的JSTL标签(逻辑)。

  <c:catch var="error">
           <c:set target="aa" property="vv">dw</c:set>
</c:catch>
<c:out value="${error }"></c:out>

  

  流程控制标签详解之if

  同程序中的if作用相同,用来实现分支条件控制。

<c:if test=”” var=”” scope=””></c:if>

test属性用于存放判断的条件,一般使用EL表达式来编写,var指定名称用来存放判断的结果类型为true或false,scope用来存放var属性存放的范围。

<c:if test="${param.score>=90 }" var="result" scope="application">
<c:out value="恭喜,您的成绩是优秀"></c:out>
</c:if>

  流程控制标签详解之choose、when、otherwise

  通常这三个标签被放在一起配合使用,<c:choose>标签嵌套在<c:when>和<c:otherwise>标签的外面作为他们的父标签来使用,其中choose和when标签也可以一起组合使用。

通常有以下两种语法结构:

  用法一:3个标签同时使用。

<c:choose>
  <c:when test="${param.score>=90 && param.score<=100 }">
    <c:out value="优秀"></c:out>  </c:when>
  <c:otherwise>
     <c:out value="输入的数据不符合"></c:out>  </c:otherwise></c:choose>

  用法二:只使用choose标签和when标签。

<c:choose>
  <c:when test="${param.score==100 }">
    <c:out value="太棒了,你是第一名"></c:out>
  </c:when>
</c:choose>

  循环控制标签详解之forEach

 根据循环条件遍历集合(Collection)中的元素,var设定变量名用于存储从集合中取出元素(必须无默认值),items指定要遍历的集合(必须无默认值),begin、end用于指定遍历的起始位置和终止位置(有默认值), step指定循环的步长(有默认),varStatus通过index、count、first、last几个状态值,描述begin和end子集中的元素的状态。

  常用用法1------全部遍历。

<c:forEach var=”存储当前遍历元素的变量” items=”待遍历集合”>
   操作var变量表示的元素<br>
</c:forEach>

  常用用法2------部分遍历。

<c:forEach var=”存储当前遍历元素的变量” items=”待遍历集合”
   begin=”开始遍历元素的index值” end=”结束遍历的元素的index值”>
  操作var变量表示的元素<br>
</c:forEach>

  常用用法3------部分遍历中指定步长。

<c:forEach var=”存储当前遍历元素的变量” items=”待遍历集合”
    begin=”开始遍历元素的index值” end=”结束遍历的元素的index值” step=”部分遍历中每次遍历的间隔元素个数”>
  操作var变量表示的元素<br></c:forEach>

  常用用法4------部分遍历时输出元素的状态。

<c:forEach var=”存储当前遍历元素的变量” items=”待遍历集合” begin=”开始遍历元素的index值” end=”结束遍历的元素的index值”     step=”部分遍历中每次遍历的间隔元素个数” varStatus=”指定一个变量用来存储当前元素的状态值”>
  操作var变量表示的元素<br>
</c:forEach>

  以上的用法的例子如下:

 <c:forEach var="fruits" items="${fruits }" begin="1" end="3" step="2" varStatus="fru">
           <c:out value="${fruits }的四个属性值"></c:out><br>
           <c:out value="index属性:${fru.index }"></c:out><br>
           <c:out value="count属性:${fru.count }"></c:out><br>
           <c:out value="first属性:${fru.first }"></c:out><br>
           <c:out value="last属性:${fru.last}"></c:out><br>
</c:forEach>

  循环控制标签详解之forTokens

  用于浏览字符串,并根据指定的字符将字符串截取, items指定被迭代的字符串,delims指定使用的分隔符,var指定用来存放遍历到的成员,begin、end用于指定遍历的起始位置和终止位置(有默认值),step指定循环的步长(有默认),  varStatus通过index、count、first、last几个状态值,描述begin和end。

<c:forTokens items="010-2342413-123" delims="-" var="num">
           <c:out value="${num }"></c:out>
</c:forTokens>

  URL操作标签详解之import

  作用:

  1. 可以把其他静态或动态文件包含到本JSP页面。
  2. 同<jsp:include>的区别为:只能包含同一个web应用中的文件。而<c:import>可以包含其他web应用中的文件,甚至是网络上的资源。
  3. 格式如下,其中,url:被导入资源的URL路径, context:相同服务器下其他的web工程,必须以”/”开头(因为context引入的内容是webapps下的其他Web project,所以需要修改tomcat的发布路径和修改%TOMCAT_HOME%conf/context.xml的Context标签中的属性crossContext=”true”), var:以String类型存入别包含文件的内容,Scope:var变量的JSP范围, charEncoding:被导入文件的编码格式,varReader:以Reader类型存储被包含文件内容。
    <c:import url=”” context=“” var=”” scope=””charEncoding=”” varReader=””></c:import>  

  URL操作标签详解之redirect

  该标签用来实现请求的重定向,同时可以在url中加入指定的参数,url指定重定向的地址,可以是一个string类型的绝对地址或相对地址。,context用于导入其他web应用中的页面。

<c:redirect url="firstDemo.jsp">
    <c:param name="username">Lily</c:param>
    <c:param name="password">a</c:param>
</c:redirect>

  URL操作标签详解之url

  该标签用于动态生成一个String类型的URL,可以同<c:param>标签共同使用,也可以使用html的<a>标签实现超链接,value 表示url路径值,var 将url路径存储在变量中,scope var变量的范围。

  常用函数标签介绍 -------> <%@taglib uri=”http://java.sun.com/jsp/jstl/ffunctions prefix=”fn”%>

  基本的格式是:

${fn:functionName}

函数名

说明

语法

contains函数

contains函数用于测试一个字符串中是否包含指定的子字符串。如果字符串中包含该子字符串,则返回值True,否则返回False。

contains(String, substring)

containsIgnoreCase函数

containsIgnoreCase函数与contains函数相似,但测试是区分大小写的。

containsIgnoreCase(String,substring)

endsWith函数   

endsWith函数用于测试一个字符串是否以指定的后缀结尾,其返回值是一个Boolean。

endsWith(String, suffix)

escapeXml函数

escapeXml函数用于给String编码。这种转化与out标签将其escapeXml属性设为True一样。

escapeXml(String)

indexOf函数

indexOf函数返回指定子字符串在某个字符串中第一次出现时的索引。如果没有找到指定的子字符串,则返回-1、

indexOf(String, substring)

join函数

join函数将一个String数组中的所有元素都合并成一个字符串,并用指定的分隔符分开。

join(array, separator)

length函数  

length函数用于返回集合中的项目数,或者字符串中的字符数。  

length(input)

replace函数

replace函数将字符串中出现的所有beforeString用afterString替换,并返回结果。

replace(String, beforeSubstring, afterSubstring)

split函数

split函数用于将一个字符串分离成一个子字符串数组,他的作用与join函数相反。

split(String, separator)

startsWith函数

startsWith函数用于测试一个字符串是否以指定的前缀开头。

startsWith(String, prefix)

substring函数

substring函数用于返回一个从指定基于0的起始索引(含)到指定基于0的终止索引的子字符串。

substring(String, beginIndex, endIndex)

substringAfter函数 

substringAfter函数用于返回指定子字符串第一次出现后的字符串部分。

substringAfter(String, substring)

substringBefore函数

substringBefore函数用于返回指定子字符串第一次出现前的字符串部分。

substringBefore(String, substring)

toLowerCase函数  

toLowerCase函数将一个字符串转换成它的小写版本。

toLowerCase(String)

toUpperCase函数

toUpperCase函数将一个字符串转换陈给它的大写版本。

toUpperCase(String)

trim函数

trim函数用于删除一个字符串开头和结尾的空白。

trim(String)

Servlet和JSP之JSTL学习的更多相关文章

  1. JSP/Servlet开发——第八章 JSTL和EL

    1. EL表达式: ●需要EL表达式的原因: ◆在JSP中使用Java脚本的局限: 1).在JSP页面中嵌入大量的Java代码: 2).访问结构比较复杂的数据时代码烦琐,且经常需要强制类型转换: eg ...

  2. SpringMVC内容略多 有用 熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。

    熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器.过滤器等Web组件以及MVC架构 ...

  3. Servlet和JSP之自定义标签学习

      此文章会讲述简单标签处理器,因为经典自定义标签处理器没有简单标签处理器方便使用,故在此不进行描述. 参考:慕课网的<JSP自定义标签>视频; <Servlet.JSP和Sprin ...

  4. 一、jsp和Servlet基础理论及jstl和EL表达式用法

    1.题外话:使用JSP有近一年半的时间了,但是开发量不大.昨天部门突然让做个读取EXCLE文件,然后在前台页面进行展示.并通过点击查看按钮可以对每条明细记录进行跳转后进行详情查看,并按照页面原型进行页 ...

  5. Servlet和JSP之标签文件学习

    在上一篇文章中介绍了自定义标签的用法,接下来介绍标签文件的用法啦. tag file指令 tag file简介 用tag file的方式,无需编写标签处理类和标签库描述文件,也可以自定义标签.tag ...

  6. Java Web学习总结(9)——servlet和Jsp生命周期解读

    一.servlet的工作工程 Servlet是运行在Servlet容器(有时候也叫Servlet引擎,是web服务器和应用程序服务器的一部分,用于在发送的请求和响应之上提供网络服务,解码基于MIME的 ...

  7. Servlet和JSP学习总结

    目录 Jsp会被编译成servlet,在页面被第一次访问的时候 Jsp中可以在html页面中嵌入java代码或者引入jsp标签 可以在html中引入自定义标签 Web工程的目录结构 Jsp的注释 Js ...

  8. 回锅的美食:JSP+EL+JSTL大杂烩汤

    title: Servlet之JSP tags: [] notebook: javaWEB --- JSP是什么 ? JSP就是Servlet,全名是"JavaServer Pages&qu ...

  9. day11_jsp/EL/JSTL学习笔记

    一.jsp概述 JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术. JSP实际上就是Servlet. JSP这门技术的最大 ...

随机推荐

  1. office2016专业增强版安装包和激活工具

    链接:https://pan.baidu.com/s/1j_gvpNBWo1rQ0xB49I_Ttw 密码:v2w7

  2. CodeForces 1109E. Sasha and a Very Easy Test

    题目简述:给定$m \leq 10^9+9$,维护以下操作 1. "1 l r x":将序列$a[l], a[l+1], \dots, a[r]$都乘上$x$. 2. " ...

  3. vim opencv

    http://blog.csdn.net/fdl19881/article/details/7275203 ctags .vim: http://www.vim.org/scripts/script. ...

  4. 3.19 YARN HA架构及(RM/NM) Restart讲解

    一.ResourceManager HA ResourceManager(RM)负责跟踪集群中的资源,以及调度应用程序(例如,MapReduce作业). 在Hadoop 2.4之前,ResourceM ...

  5. python中panda的dateframe

    1 函数介绍 #to_csv函数的语法#函数原型# to_csv(filepath,sep=",",index=TRUE,header=TRUE)#参数介绍: #(1)导出的文件路 ...

  6. 学习RadonDB源码(二)

    1. 为我新的一天没有放弃而喝彩 学习是一件很容易放弃的事情,因为就算是不学,我也能在现在的岗位上发光发热.可是人不就是一个热爱折腾的种群吗? 今天没有放弃不代表明天没有放弃,也许放弃的可能性大于坚持 ...

  7. npm 的安装与使用

    创建: 2019/04/06 完成: 2019/04/07  安装 npm写在node.js里, 故安装node.js即可 https://nodejs.org/en/download/ 确认是否安装 ...

  8. 使用dynamic关键词 CS1969错误

    添加 Microsoft.CSharp.dll 引用即可 不需要添加using Microsoft.CSharp 这类namespace

  9. 51nod1267(双指针)

    题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1267 题意:中文题诶- 思路:双指针 求a+b+c+d=0,令 ...

  10. Codevs 1523 地精部落

    1523 地精部落 省队选拔赛  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 大师 Master 题解       题目描述 Description 传说很久以前,大地上居住 ...