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这门技术的最大 ...
随机推荐
- dubbo 使用 filter 报错解决
dubbo可以用filter实现类似tomcat filter过滤器. 实现1.接口请求时间监控. 2.打印输入输出日志(输出日志有应用自己决定) 配置时出现报错. No such extension ...
- Eigen::Map
http://cherishlc.iteye.com/blog/2116800 Map类 是 矩阵库Eigen中用来将内存数据 映射为 任意形状的矩阵的类.
- 1.5-1.6 oozie部署
一.部署 可参考文档:http://archive.cloudera.com/cdh5/cdh/5/oozie-4.0.0-cdh5.3.6/DG_QuickStart.html 1.解压oozie ...
- python之文件的读写(1)
真的崩溃,刚写完的笔记由于点错了,现在特么又要重新写了. 崩溃呀.......... 之前的废话就不再重复了,直接进入正题吧. 今天小R 学了一天的NP课程,但是python还是不能忘得,所以晚上又 ...
- iCarousel的简单介绍及应用
iOS开源类iCarousel介绍 iCarousel是一个类,它继承于UIView,用于简化实现各种类型的旋转木马(分页滚动视图)iPhone.iPad和Mac OS.iCarousel实现一些常见 ...
- laravel V层
V层 即视图层 也就是常用的html页面 但在laravel里后缀为php 视图层路径resources/views/视图名称.php
- 如何使Label有修改功能
如何使Label有修改功能 之前制作一个项目时需要这样一个功能: 双击Label, 随后Label变为TextBox,用户修改后回车,TextBox变回Label 之前使用WPF做了一个,代码如下: ...
- 理解:return、break、continue区别
1.return:结束该方法的执行 2.continue:结束当前流程中的continue一下的代码,如果是for循环会再次执行下一个条件 3.break:完全终止当前执行流程,如果是for循环,那么 ...
- Luogu P1092 虫食算【搜索/剪枝】 By cellur925
题目传送门 这道题是一道经久不衰的搜索题目,但是开始做的时候我没什么思路==.初始值-1 输出格式 \(naive\)想法 从右往左依次尝试填充数字,把算式当做一个3行\(n\)列的网格.(什么?你问 ...
- php-fpm 高并发 参数调整
工作中经常会遇到会给客户配置服务器,其中有的客户还会有并发量要求,其中也会必须要用负载均衡承载压力的.增加服务器数量肯定能有效的提升服务器承载能力,但只有根据目前已有配置设置好单台服务器才能更好的发挥 ...