Servlet和JSP之JSTL学习
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=">out标签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
作用:
- 可以把其他静态或动态文件包含到本JSP页面。
- 同<jsp:include>的区别为:只能包含同一个web应用中的文件。而<c:import>可以包含其他web应用中的文件,甚至是网络上的资源。
- 格式如下,其中,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学习的更多相关文章
- JSP/Servlet开发——第八章 JSTL和EL
1. EL表达式: ●需要EL表达式的原因: ◆在JSP中使用Java脚本的局限: 1).在JSP页面中嵌入大量的Java代码: 2).访问结构比较复杂的数据时代码烦琐,且经常需要强制类型转换: eg ...
- SpringMVC内容略多 有用 熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。
熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器.过滤器等Web组件以及MVC架构 ...
- Servlet和JSP之自定义标签学习
此文章会讲述简单标签处理器,因为经典自定义标签处理器没有简单标签处理器方便使用,故在此不进行描述. 参考:慕课网的<JSP自定义标签>视频; <Servlet.JSP和Sprin ...
- 一、jsp和Servlet基础理论及jstl和EL表达式用法
1.题外话:使用JSP有近一年半的时间了,但是开发量不大.昨天部门突然让做个读取EXCLE文件,然后在前台页面进行展示.并通过点击查看按钮可以对每条明细记录进行跳转后进行详情查看,并按照页面原型进行页 ...
- Servlet和JSP之标签文件学习
在上一篇文章中介绍了自定义标签的用法,接下来介绍标签文件的用法啦. tag file指令 tag file简介 用tag file的方式,无需编写标签处理类和标签库描述文件,也可以自定义标签.tag ...
- Java Web学习总结(9)——servlet和Jsp生命周期解读
一.servlet的工作工程 Servlet是运行在Servlet容器(有时候也叫Servlet引擎,是web服务器和应用程序服务器的一部分,用于在发送的请求和响应之上提供网络服务,解码基于MIME的 ...
- Servlet和JSP学习总结
目录 Jsp会被编译成servlet,在页面被第一次访问的时候 Jsp中可以在html页面中嵌入java代码或者引入jsp标签 可以在html中引入自定义标签 Web工程的目录结构 Jsp的注释 Js ...
- 回锅的美食:JSP+EL+JSTL大杂烩汤
title: Servlet之JSP tags: [] notebook: javaWEB --- JSP是什么 ? JSP就是Servlet,全名是"JavaServer Pages&qu ...
- day11_jsp/EL/JSTL学习笔记
一.jsp概述 JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术. JSP实际上就是Servlet. JSP这门技术的最大 ...
随机推荐
- Identity Server 4 原理和实战(完结)_----选看 OpenId Connect 简介
Identity Procider:身份提供商
- c# 字符串大小写转换
//小转大 string lower = "converted from lowercase"; Console.WriteLine(lower.ToUpper()); //大转小 ...
- 浅谈SpringBoot核心注解原理
SpringBoot核心注解原理 今天跟大家来探讨下SpringBoot的核心注解@SpringBootApplication以及run方法,理解下springBoot为什么不需要XML,达到零配置 ...
- HDU5950【矩阵快速幂】
主要还是i^4化成一个(i+1)^4没遇到过,还是很基础的一题矩阵快速幂: #include <bits/stdc++.h> using namespace std; typedef lo ...
- Unity的http通信--unity与python的django通信
http://blog.csdn.net/chenggong2dm/article/details/17372203 写在前面: WWW类,是unity里,简单的访问网页的类.本文介绍的就是这种方式, ...
- [Xcode 实际操作]二、视图与手势-(11)UITapGestureRecognizer手势之长按
目录:[Swift]Xcode实际操作 本文将演示使用视图的长按手势,完成视图的交互功能. import UIKit class ViewController: UIViewController { ...
- github的上传本地文档
自从使用github以来,一直都是在github网站在线上传文件到仓库中,但是有时因为网络或者电脑的原因上传失败.最重要的原因是我习惯本地编辑,完成以后再一起上传github.看过了几个教程,总结出最 ...
- MySQL 索引及优化实战
https://blog.csdn.net/qq_21987433/article/details/79753551 https://tech.meituan.com/mysql_index.html ...
- 微信开发(一)URL配置
启用开发模式需要先成为开发者,而且编辑模式和开发模式只能选择一个,进入微信公众平台-开发模式,如下: 需要填写url和token,当时本人填写这个的时候花了好久,我本以为填写个服务器的url就可以了( ...
- iOS蓝牙传输数据演示-3
蓝牙传输数据演示 在上一小节中,我们一起开发了基于蓝牙通讯的工具类,该类中详细的实现蓝牙连接流程中的每一个环节 本小节我们就以给小米手环发送数据使其震动来演示我们工具类的用法 工具类本身具有通用性,属 ...