标准标签库JSTL
JSTL简介:
标准标签库JSTL的全名为:Java Server Pages Standard Tag Library.
JSTL主要提供了5大类标签库:
1. 核心标签库: 为日常任务提供通用支持,如显示和设置变量,重复使用一组项目,测试条件以及其他操作(如导入和重定向web页面等).
2. 国际化(I18N)标签库: 支持多种语言的引用程序.
3. SQL标签库: 对访问和修改数据库提供标准化支持.
4. XML标签库: 对XML文件处理和操作提供支持,包括XML节点的解析,迭代,基于XML数据的条件评估以及可扩展样式语言转换(Extensible Style Language Transformations , XSLT)的执行.
5. 函数标签库: 通过在EL表达式中调用函数标签库中的函数来实现特定的操作,例如: ${fn:contains(sring,substring)},其功能是判断string字符串中是否包含substring字符串.
JSTL标签库使用方法:
标签库URI 前缀使用模式
核心标签库https://www.doczj.com/doc/bf4695621.html,/jstl/core c
国际化标签(I18N) https://www.doczj.com/doc/bf4695621.html,/jstl/fmt fmt
SQL标签库https://www.doczj.com/doc/bf4695621.html,/jstl/sql sql
XML标签库https://www.doczj.com/doc/bf4695621.html,/jstl/xml x
函数标签库https://www.doczj.com/doc/bf4695621.html,/jstl/functions fn
核心标签库
核心标签库包括:out , set , remove , catch , if , choose , when 和 URL 等.
表达式操作标签: 包括:out , set , remove , catch.
out标签:
核心标签库中最为基本的标签就是
使用格式如下:
这个标签还可以有一个体,如下:
这表示当value属性指定的object值为null时,就会显示体中指定的值,也就是default value的值,体中也可以是jsp代码.
1. value : 可以指定一个字符串作为输出内容,也可以指定为EL表达式,例如:${3+5}.
2. escapeXml : 类型为boolean , 确定, < , > , & , … , “等字符在结构的字符串中是否被转换成字符串实体代码,默认值是true(就是是否按html中的样式进行输出,设置true就是按照字符串原样进行输出,false就是按照html标识符进行输出)
3. default value : 可以是字符串,也可以是一个EL表达式或者jsp表达式,如果属性(value)指定的表达式或者对象为null,那么将输出这个defalut value部分的值.
set标签:
set标签用来在某个范围(request,session或者application)内设置值,或者设置某个对象的属性值.
Set标签使用格式如下:
1. 使用value 属性在一个特定的范围内指定某个变量的值,其使用格式如下:
2. 当使用value属性在一个特定范围内指定某各变量的值时,也可以包括一个体,他的作用与out标签体的作用一样,即value指定的值为null时,默认使用体中指定的值,使用的格式如下:
3. 设置某一个特定对象属性的使用格式如下:
4. 在设置某个特定对象的一个属性时,也可以使用一个体,并且指定默认的值,使用格式如下:
default value
该标签中的各属性说明如下:
1. value : 该属性指定变量或者对象中某个属性的值,并且可以是一个表达式.
2. var : 变量名称,value属性指定的值就保存在这个变量中.
3. scope : 设定变量的有效范围,如果不设置,默认为page.
4. target : 设置属性的一个对象,它必须是JavaBean 或者java.util.Map对象.
5. property : 设置对象中的一个属性.
remove标签
remove标签一般和set标签配套使用,两者是相对应的,remove标签用于删除某个变量或者属性,使用格式如下:
Remove标签中使用的各属性说明如下:
1. scope : 设定这个需要删除的变量的所在范围.
2. var : 需要删除的变量或者对象属性的名称.
如果没有scope属性,即采用默认值,就相当于调用PageContext.removeAttribute(varName)方法,如果指定了这个变量所在的范围,那么系统会调用
PageContext.removeAttribute(varName,scope)方法.
catch标签
catch标签的功能和java中的try{…}catch{…}语句的功能很相似,它用于捕获嵌入到其中间语句抛出的异常,这个标签的使用格式如下:
相关操作语句
--如果操作语句中出现异常,则catch会将异常保存在 varName变量中.
流程控制标签: 包括: if , choose , when , otherwise 等.
if标签
这个标签作用与java中的if语句作用相同,用于判断条件语句,主要的使用格式如下1. 在
2. 当
标签中使用的属性说明:
test : 判断条件的表达式,返回类型为true 或者 false;(也就是if的条件)
var : 这个变量用于保存test条件表达式判断所返回的true或者false值
(if条件执行后所得到的boolean值将要保存在var变量中).
scope : 指定var变量所在的有效范围.
choose , when , otherwise 标签
这些标签相当于java中的 switch , case , default 条件,使用实例如下:
运行jsp页面后,输出 admin
forEach迭代标签
该标签用来对一个collection集合中的一系列对象进行迭代输出,并且可以指定迭代次数,一般的使用格式如下:
Body content
这个标签使用的属性描述如下:
1. var : 也就是保存在collection集合类中的对象名称.
2. items : 将要迭代的集合类名.
3. varStatus : 存储迭代的状态信息,可以访问到迭代自身的信息.
4. begin : 如果指定了begin值,就表示从items[begin]开始迭代;如果没有指定begin值,则从集合的第一个值开始迭代.
5. end : 表示迭代到集合的end位时结束,如果没有指定end值,则表示一直迭代到集合的最后一位.
6. step : 指定迭代的步长.
例:
<%
String Items[] =new String[5];
Items[0]=”核心标签库”;
Items[1]=”国际化标签库”;
Items[2]=”SQL标签库”;
Items[3]=”XML标签库”;
Items[4]=”函数标签库”;
Request.setAttribute(“ItemName”,Items);
%>
所在位置即索引:
总共已迭代的次数:
是否为第一个位置:
是否为最后一个位置:
代码说明: s.index 用来获取计数器的值, s.count用来获取这是第几次循环, s.first 用来获取是否是循环开始的第一次 , https://www.doczj.com/doc/bf4695621.html,st 用来获取是否是循环的最后一次 , first 和last 都返回boolean 值.
forTokens 标签
这个标签的作用和Java中的StringTokenizer类的作用非常相似,通过items属性来指定一个特定的字符串,然后通过delims属性指定一种分隔符(可以同时指定多个),通过指定的分隔符把items属性指定的字符串进行分组,与forEach标签一样,forTokens标签也可以指定begin和end以及step属性值.
使用格式如下:
[varStatus=”varStatusName”] [begin=”begin”] [end=”end”] [step=”step”]> Body content
标签中的各个属性描述如下:
1. var : 进行迭代的参数名称.
2. items : 指定的进行标签化的字符串.
3. varSatus : 每次迭代的状态信息.
4. delims : 使用这个属性指定的分隔符来分隔items指定的字符串.
5. begin : 开始迭代的位置.
6. end : 迭代结束的位置.
7. step : 迭代的步长.
例:
代码说明: delims=”|,” ,即使用”|”和”,”同时作为分隔符进行使用.如果需要更多的分隔符就是使用“|,./”在引号内输出.
URL相关的标签:
URL相关的标签主要用来将其他文件包含进来,或者提供页面之间的重定位以及URL地址的生成,参数的输出等.一般包括如下几个标签.
该标签用于把其他今天文件包含到该文件当中,它与传统的
[scope=”page|request|session|application”] [varReader=”varReader”] [charEncodion=”charEncoding”]> Body content
标签中的属性描述如下:
url: 待引用静态文件的URL地址.
context: 当采用相对路径访问一个外部静态文件时,这里的context指定这个外部文件的名称.
var: 当使用字符串输出时,把输出的内容存储在这个var指定的变量中.
scope: 指定var参数变量的有效范围.
varReader: 这个属性指定的参数变量类型是Reader,可以用于读取文件的内容.
charEncoding: 引入文件所采用的字符编码.
Import标签即可以采用相对路径也可以采用绝对路径来引用本地点中的任何静态文件,还可以使用绝对路径引用外部站点中的静态文, 甚至可以是ftp站点中的文件,例如:
可以把引用文件中的内容赋值给var属性指定的变量,然后进行读取,也可以赋值给varReader 指定的Reader类型的变量,然后进行相应的读取.
有时引入的文件在本地显示会出现乱码,这时可以通过charEncoding来指定这些内容所采用的字符集编码.
Redirect标签用来进行页面之间的重定向,它与传统JSP程序重的
在redirect标签中指定param参数的使用格式如下:
例: [通过创建c_redirect1.jsp 和 c_redirect2.jsp 两个文件说明]
c_redirect1.jsp文件内容如下:
c_redirect2.jsp 文件内容如下:
userName=
c_redirect1.jsp页面文件内容不会显示,因为直接重定向到c_redirect2.jsp,重定向
c_redirect2.jsp后,页面中输出userName=admin
这个标签主要用来重写url地址,使用格式如下:
[scope=”page|request|session|application”] /> 当进行参数传递时,使用格式如下: [scope=”page|request|session|application”] > 标签中使用的属性描述如下: value: 将要处理的URL地址. context: 当使用相对路径方法指定外部文件时,这个属性指定的是外在文件的名称. var: 给这个URL地址起一个标识. Scope: 规定这个var属性所指定变量的有效范围. 创建一个c_url.jsp,其源代码如下: <%@ taglib prefix=”c” uri=”https://www.doczj.com/doc/bf4695621.html,/jsp/jstl/core” %>
代码说明: url标签可以指定一个变量(var属性指定)来把url地址保存,并且可以指定这个变量的有效范围为session ,所以当需要用到这个url地址时,就可以使用
session.getAttribute(varName)方法来获取这个地址,所以一般需要重复使用同一个url地址才会使用
国际化( I18N )标签库
国际化标签包括:
javax.servlet.jsp.jstl.fmt.locale配置参数值,这个指定的参数由jsp运行时维护,用于确定各个jstl标签使用的本地化环境.
设置本地化环境标签
HTML请求到达服务器时,浏览器提供的HTTP首部可以指出用户的首选本地化环境(可能是多个本地化环境的列表).这个列表放在Accept-Language HTTP首部中,jsp容器会访问这个首部信息,如果没有使用标签
[scope=”page|request|session|application”] /> value: 这个属性是必须设置的,它用来设置本地环境名,例如en_US 或者zh_HK. variant: 这个属性是可选的,而且很少使用. scope: 指定value设置的本地化环境名的有效范围,默认为page,即本页面,如果把scope 设置为session,则表示同一个用户发出的所有请求都具有相同的本地化环境. 执行信息资源标签 一旦已经设置了web引用的本地化环境后,就可以使用 属性描述如下: Basename: 资源文件(这里使用文件,而不是类)的基名,例如,某资源文件Res_zh_CN.property,则基名为Res. prefix: 这个设置是可选的,如果指定这个属性,就会为标签体中嵌套的 当 获取资源属性值标签 该标签用于显示本地化的文本,它通过key属性来取得资源文件中相应的消息 这个标签从资源文件重获取到一个消息,生成相应的一个本地化文本串,该便去重的属性描述如下: Key : 用于查找资源文件重相应的关键字名,它对应着一条特定的消息. bundle: 如果设置了这个属性,就会使用这个属性指定的资源文件,否则若嵌套在 Var : 如果指定这个属性,则把取出的消息字符串存储在这个变量中. Scope: 这个属性指定了var设置变量的有效范围,默认为page,然而也可以设置为session. 设置资源文件标签 该标签用于设置一个资源文件,并给定一个标记,以便可以通过 [scope=”page|request|session|application”]/> 标签中的属性描述如下: basename : 该属性与 Var : 给指定的资源文件取一个变量名,以便 Scope: 设置var属性指定的变量的有效范围. 获取参数值标签 该标签一般与 密码错误=”{0}的密码错误” 其中value属性的值即为要的替代{0}部分的值. 函数(function)标签库: 函数标签库中的标签基本分成两种: 1. 长度度量函数,例如:fn.length(). [ fn.length(“”)就为要输出的格式表达式,结果输出0 ] 2. 字符串操作函数. 各类函数标签的功能: 1. fn:contains(string,substring): 如果参数string中包含substring,则返回true. 2. fn:containsIgnoreCase(string,substring): 如果参数string中包含substring,则返回true(忽略大小写). 3. fn:endsWith(string,suffix): 如果参数string以参数suffix结尾,则返回true. 4. fn:escapeXml(string): 将由特殊意义的xml(和html)转换成对应的XML character entity code并返回. 5. fn:indexOf(string,substring): 返回参数substring在string中第一次出现的位置. 6. fn:join(array,separator): 将一个给定的数组array用给定的间隔符separator串在一起,组成一个新的字符串并返回. 7. fn:length(item): 返回参数item中包含元素的数量,参数item的类型是数组,collection或者string,如果是string则返回string的字符数. 8. fn:replace(string,before,after): 返回一个String对象,用参数after字符串替换参数string 中所有出现before字符串的地方,并返回替换后的结果. 9. fn:split(string,separator): 返回一个数组,以参数separator为分隔符分隔参数string,分隔后的每一部分就是数组的一个元素. 10. fn:startsWith(string,prefix): 如果参数string以参数prefix开头,则返回true. 11. fn:substring(string,begin,end): 返回参数string的部分字符串,从参数begin开始到参数end 结束,其中包括end位置的字符. 12. fn:substringAfter(string,substring): 返回参数substring在参数string中后面的那一部分字符串. 13. fn:substringBefore(string,substring): 返回参数substring在参数string中前面的那一部分字符串. 14. fn:toLowerCase(string): 将参数string的所有字符变为小写,并返回. 15. fn:toUpperCase(string): 将参数string的所有字符变成大写,并返回. 16. fn:trim(string): 将参数string的头尾空格全部去除,并返回. q 一是判断是否为null 。 q 二是当它为String 类型的变量时,判断字符串长度是否为0 。 q 三是当它为集合类型的变量时,利用集合类的isEmpty 方法可以判断是否是一个空的集合。 本示例既然要在替换后与替换前的工作一致,就应该对集合做两个判断: q 一是该集合不为null 。 q 二是该集合中的对象数量不为0 。 “ !=null ”的EL 表达式实现了集合实例不为null 的判断;fn:length() 函数实现了集合内对象数量不为0 的判断,两个判断用“ && ”连接起来就实现了 在这里应该利用“ JSP标签库(也称自定义库)可看成是一套产生基于XML脚本的方法,它经由JavaBeans来支持。在概念上说,标签库是非常简单和可以重用的代码构造。 自定义标签有着丰富的特点,它们可以: 1.可以通过调用页面传递的属性进行自定义; 2.可以访问对于JSP页面可能的所有对象; 3.可以修改由调用页面产生的响应。 4.可以相互间通信。你可以创建并初始化一个JavaBean组件,创建一个变量引用标签中的bean,接着在其它的标签中引用该bean. 5.可以在一个标签中嵌套另一个,可以在JSP页面中进行复杂的交互。自定义标签为在JSP项目中创建易于重用的代码打开了一扇大门。你所需要的只是标签库和它的文档说明。 通过实现接口或者继承现有的类,我们就可以开发自定义的标签。常用的接口有: TagSupport类 该类是IterationTag的缺省实现。除了实现原有方法外,本身还增加了一些有用的其他方法和成员变量。下表列出其中重要的几个: BodyTagSupport类 该类同时继承了TagSupport类,并实现BodyTag接口。除了前表所示方法,该类还提供了一些其它方法便于使用。 实现Tag接口 所有的标签处理器都需要间接或直接的实现这个接口。 下面列出Tag接口定义的方法和常量: setPageContext()方法 setPageContext()方法是一个定制标签声明周期内第一个要被调用的方法。完整写法是: public void setPageContext(PageContext); jsp引擎会将jsp页转换时隐含创建的pageContext对象,作为参数,调用setPageContext方法。 通常的做法会将这个参数保存为本标记处理器的参数。 setParent()和getParent()方法 当标签嵌套使用时,外层的标签被成为父标签,内部的被称为子标签。完整的写法是: public void setParent(Tag); public Tag getParent(); 其中setParent方法对父标签对象进行设置。而getParent方法用以获得父标签对象。 JSTL标签的用法 JSP 标准标记库( Standard Tag Library , JSTL) 是一组以标准化格式实现许多通用的 Web 站点功能的定制标记。 JSP 技术的优势之一在于其定制标记库工具。除了核心 JSP 标记,如jsp:include 之外,定制标记库工具使您能够创建唯一的标记来描述以站点或应用程序为导向的操作。一旦您创建了定制标记库 ( 简称 taglib) ,当您扩展项目或转向另一个项目时您可以重复使用这些标记。您还可以将 taglib 传递给其它开发人员,从而他们可以在自己的网站上使用,或者在您 Web 应用程序的其它部分使用。 JSTL 的目标是为了简化 JSP 页面的设计。对于页面设计人员来说,使用脚本语言(默认值是 JAVA 语言)操作动态数据是比较困难的,而采用标签和表达式语言相对容易一些, JSTL 的使用为页面设计人员和程序开发人员的分工协作提供了便利。 一.配置 JSTL 包括两个 JAR 文件, jstl.jar 和 standard.jar 。是什么没有必要管,重在应用( 1+1 ? =2 ,我们没有必要深究,只需要知道这么用就行。)。 原文引入: <%@ taglib prefix="c" uri="https://www.doczj.com/doc/bf4695621.html,/jsp/jstl/core" %> <%@ taglib prefix="sql" uri="https://www.doczj.com/doc/bf4695621.html,/jsp/jstl/sql" %> <%@ taglib prefix="fmt" uri="https://www.doczj.com/doc/bf4695621.html,/jsp/jstl/fmt" %> 1.1版: <%@ taglib uri="https://www.doczj.com/doc/bf4695621.html,/jsp/jstl/core" prefix="c" %> 1.0版 <%@ taglib uri="https://www.doczj.com/doc/bf4695621.html,/jstl/core" prefix="c"%> 二. Core 标签库 ###1. 为什么要用自定义标签? ①Jsp中写代码比较混乱,难以维护 ②把一些重复的功能都抽取出来,方便复用。 ###2. 自定义标签分为几个步骤. 1.编写标签处理器类(SimpleTagSupport的实现类) 重写doTag() 2.编写标签库文件(WEB-INF/xxx.tld) 整个文件的定义: ${ user. My-Name}应当改为${user["My-Name"]} 如果要动态取值时,就可以用“[ ]“来做,而“.“无法做到动态取值。例如: ${https://www.doczj.com/doc/bf4695621.html,er[data]}中data 是一个变量。 ###8. EL表达式中有哪些隐藏对象,举几个例子? pageContext : JSP页面的上下文 param : 参数 paramValues : 参数值 header : 头信息 headerValues : 头的值 cookie : 缓存 initParam : 初始化参数 ###9. EL表达式中怎么样拿到request,session里面的值? 例: 可以通过它的隐藏对象RequestScope来获取到Request范围的属性名称所对应的值。 可以通过它的隐藏对象sessionScope来获取到session范围的属性名称所对应的值。###10. EL表达式怎么样拿到用户请求的参数? 可以用${https://www.doczj.com/doc/bf4695621.html,} 来获取用户请求的参数 ###11. EL表达式怎么样得到上下文路径? ${pageContext.request.contextPath} ###12. EL表达式怎么样拿到request? RequestScope ###13. JSTL全称是什么? java服务器页面标准标签库 (JavaServer Pages Standard Tag Library) ###14. JSTL是怎么使用的? 将jstl.jar、standard.jar 复制到Tomcat 的WEB-INF\lib 中. 若要在JSP 网页中使用JSTL 时,一定要先做下面这行声明: < %@ taglib prefix="c" uri="https://www.doczj.com/doc/bf4695621.html,/jsp/jstl/core" %> 一、JSTL简介 引入:在JSP以及javaBean中,当我们在网页中使用循环,或者使用对象方法连接数据库时,我们都不可避免的需要使用到jsp的脚本编制元素,其中嵌有大量的java代码,现在开发者想尽可能的避免使用jsp脚本编制元素,进一步将应用程序的显示层和业务层完全分离,更加有利于应用程序的分工协作,jsp开发者指定了 JSTL ,提供了一组统一的通用的自定义标签文件,并将这些文件组合在一起,形成了jsp标准标签库,即JSTL。 1) 定义:包含编写和开发JSP页面的一组标准标签 a) 特点:为开发者提供了一个无脚本环境,无需编写JAVA脚本 b) 包含 1. 核心标签库 2. SQL标签库 3. 国际化(I18N)与格式化标签库 4. XML标签库 c) 分类:两个版本 1. 使用 EL 2. 使用请求时表达式 2) 作用 a) 进一步简化开发,简化页面, 实现页面脱离jsp脚本元素 b) 让页面尽可能少的出现java代码 c) 优势:与EL表达式配合使用,可以用EL 代替属性值进一步动态改变 3) 使用 a) 导入标签库(Eclipse等工具中需要做这一步) b) 使用标签库中标签的实施步骤 i. 将JSTL对应的JAR文件:jstl.jar、standard.jar添加到应用程序的WEB-INF/lib目录(这两个jar文件见课件目录” JSTL标签库”) ii. 在编写的jsp页面中指定标签库的描述信息: 语法:<%@ taglib prefix=”c” uri=”https://www.doczj.com/doc/bf4695621.html,/jstl/core_rt” %> 关于上述语法使用的扩充: <%@ taglib prefix =”标签别名” uri =”标签库的位置“> 1. 标签别名常用c 2. 标签库的位置:(即uri的设置) a) 教材上:” https://www.doczj.com/doc/bf4695621.html,/jstl/core_rt“ 指向sun公司网站上的库文件地址,注意这里只是个地址指向,即使没有上网,在工具中也已经对应到工程中的路径了(注意:此时要先将标签库的两个jar文件放入”工程\WEB-INF\lib”目录下。) b) 也可使用:”/WEB-INF/c.tld ”(但要注意:此时要先将标签库两个jar文件中的一个standard.jar文件解压后的目录META-INF中的所有*.tld文件放入”工程名/WEB-INF/”目录下,即保证该目录下有c.tld文件) 注意:上述两种导入标签库的方式,以第一种为佳,即只需要将两个标签库jar文件放入”工程\WEB-INF\lib”目录下即可。 c) 在JSP中使用 3. JSTL主要提供了5大类标签库: 1. 核心标签库: 为日常任务提供通用支持,如显示和设置变量,重复使用一组项目,测试条件以及其他操作(如导入和重定向web页面等). 2. 国际化(I18N)标签库: 支持多种语言的引用程序. 3. SQL标签库: 对访问和修改数据库提供标准化支持. 4. XML标签库: 对XML文件处理和操作提供支持,包括XML节点的解析,迭代,基于XML数据的条件评估以及可扩展样式语言转换(Extensible Style Language Transformations , XSLT)的执行. 5. 函数标签库: 通过在EL表达式中调用函数标签库中的函数来实现特定的操作,例如: ${fn:contains(sring,substring)},其功能是判断string字符串中是否包含substring字符串. JSTL标签库使用方法: 标签库URI 前缀使用模式 核心标签库https://www.doczj.com/doc/bf4695621.html,/jstl/core c 前言: 在使用JSTL标签开发的时候经常会遇到ul和li控制,三个一行,两个一行,然后进行换行的问题。所以就有了此文。 注意: [html]view plain copy 1.varStatus 的初始取值是从1开始。跟普通的数组取值不同,要特别注意区分。 1.引入<%@ taglib uri="https://www.doczj.com/doc/bf4695621.html,/jsp/jstl/core" prefix="c" %> 2.后台传给前台list数据 3.前台进行遍历: [html]view plain copy 1. JavaServer Pages标准标签库 Stephanie Bodoff JavaServer Pages标准标签库(JSTL)封装了许多JSP应用程序共有的核心功能。例如,不需要用脚本或者众多不同厂商的不同迭代器标签对列表进行迭代,JSTL定义了在所有地方都可以使用的标准标签。这种标准化使您可以学习一种标签后,在多个JSP容器中使用它。而且,当标签标准化以后,容器可以优化对它们的实现。 JSTL支持通用的、结构化的任务,如迭代和条件、操作XML文档的标签、国际化标签以及以及用SQL访问数据库的标签。它还引入了表达式语言的概念以简化页面的开发。JSTL还提供了集成现有标签库与JSTL的框架。 本章通过在前面几章讨论的Duke's Bookstore应用程序的JSP版本的内容展示JSTL。假定您已经熟悉了第16章中的“使用标签”中的内容。 JSP页面示例 本章通过如下重新编写JSP版本的、在第16章讨论过的Duke's Bookstore应用程序的内容来展示JSTL: ·用JSTL核心标签替换Struts逻辑标签。 ·用消息格式标签替换访问消息储存的scriptlet。 ·用通过JSTL SQL标签对数据库的直接调用替换JavaBean组件数据库helper。对于大多数应用程序来说,最好将对数据库的调用封装到bean中。JSTL包含SQL标签,在创建已有原型的应用程序并有可能减少创建bean的开销的情况下可以使用这个标签。 Duke's Bookstore应用程序的源代码在解开教程压缩包时创建的 前言 从JSP 1.1规范开始,JSP就支持在JSP中使用自定义标签了,自定义标签的广泛使用造成了程序员重复定义,这样就促成了JSTL(JavaServer Pages Standard Tag Library)的诞生。 作者:杨通杆(https://www.doczj.com/doc/bf4695621.html,/yangtonggan/default.html) JSTL简介 JSTL是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。JSTL只能运行在支持JSP1.2和Servlet2.3规范的容器上,如tomcat 4.x。但是在即将推出的JSP 2.0中是作为标准支持的。 JSTL目前的最新版本为1.02,最终发布版为1.0。JSTL包含两个部分:标签库 Core支持JSP中的一些基本的操作; XML processing支持XML文档的处理; I18N capable formatting支持对JSP页面的国际化; Database access (SQL)支持JSP对数据库的操作。 让我先给你介绍c标签吧. 1. 语法: 没有Body时的语法 JSTL标签 在JSP页面要用到核心标签,必须使用以下指令: <%@taglib uri="https://www.doczj.com/doc/bf4695621.html,/jsp/jstl /core" prefix="c" %> 变量标记 标准标签库JSTL JSTL简介: 标准标签库JSTL的全名为:Java Server Pages Standard Tag Library. JSTL主要提供了5大类标签库: 1. 核心标签库: 为日常任务提供通用支持,如显示和设置变量,重复使用一组项目,测试条件以及其他操作(如导入和重定向web页面等). 2. 国际化(I18N)标签库: 支持多种语言的引用程序. 3. SQL标签库: 对访问和修改数据库提供标准化支持. 4. XML标签库: 对XML文件处理和操作提供支持,包括XML节点的解析,迭代,基于XML数据的条件评估以及可扩展样式语言转换(Extensible Style Language Transformations , XSLT)的执行. 5. 函数标签库: 通过在EL表达式中调用函数标签库中的函数来实现特定的操作,例如: ${fn:contains(sring,substring)},其功能是判断string字符串中是否包含substring字符串. JSTL标签库使用方法: 标签库URI 前缀使用模式 核心标签库https://www.doczj.com/doc/bf4695621.html,/jstl/core c 花费一个小时的时间,掌握一门技术。虽然在此只对核心标签库进行解析然而:一般的开发已可应付、对于初学者来说更是绰绰有余。 JavaServer Pages Standard Tag Library (JSTL ),它的中文名称为JSP 标准标签函数库。JSTL 是个标准的已制定好的标签库,可以应用于各种领域,如:基本输入输出、流程控制、循环、XML文件剖析、数据库查询及国际化和文字格式标准化的应用等。从下可以知道,JSTL提供的标签函数库主要分为五大类: (1 )核心标签库(Core tag library) (2 )I18N 格式标签库(I18N-capable formatting tag library) (3 )SQL 标签库(SQL tag library) (4 )XML 标签库(XML tag library) (5 )函数标签库(Functions tag library) JSTL 前置名称URI 范例 核心标签库 c https://www.doczj.com/doc/bf4695621.html,/jsp/jstl/core 实验四:EL表达式和JSTL标签库的使用 一、实验的目的 (1)掌握EL表达式的使用。 (2)掌握JSTL标签库的使用。 二、实验内容与要求 (1)学习EL表达式的原理和使用。 (2)了解JSTL标签库的原理及使用。 (3)EL实例的调试。 (4)JSTL实例的调试。 三、实验主要步骤 1. EL表达式实例程序的调试 (1)源代码 <%@ page language="java" import=".*" pageEncoding="GBK"%> <%@ taglib uri="" prefix="c"%> (1)源代码 <%@ taglib uri="" prefix="c" %> JSTL简介 JSTL是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。JSTL只能运行在支持JSP1.2和Servlet2.3规范的容器上,如tomcat 4.x。但是在即将推出的JSP 2.0中是作为标准支持的。JSTL目前的最新版本为1.02,最终发布版为1.0。JSTL包含两个部分:标签库和EL(Expression Language 表达式语言)语言。标签库目前支持四种标签: Core支持JSP中的一些基本的操作; XML processing支持XML文档的处理; I18N capable formatting支持对JSP页面的国际化; Database access (SQL)支持JSP对数据库的操作。 由于本人水平有限,本文仅介绍Core标签,如有兴趣,可一起探讨其它三种标签的使用与扩充。 EL语言介绍 EL语言是JSTL输出(输入)一个JAVA表达式的表示形式。 在JSTL中,EL语言只能在属性值中使用。EL语言只能通过建立表达式${exp1}来进行调用。在属性值中使用表达式有三种方式。 1、value属性包含一个表达式 本章目标 ●熟悉EL的基本用法 ●熟悉JSTL的常用标记 ●能编写简单的自定义标签 本章考核 ●用JSTL和EL实现MVC的查询分页功能 ●用自定义标签实现分页工具条 知识点1:EL Expression Language 以${起始、以}结尾,例如${https://www.doczj.com/doc/bf4695621.html,er.sex} EL语法比传统jsp语法简洁,方便1.1、.和[]运算符 ${https://www.doczj.com/doc/bf4695621.html,er.sex}和${https://www.doczj.com/doc/bf4695621.html,er["sex"]} 可以混合使用 在以下两种情况下,这两种表示方法是有差异的 ●当属性名称中存在特殊字符,如.或者-就要使用[] 例如:${https://www.doczj.com/doc/bf4695621.html,er["my-name"]} ●如果动态取值,例如${https://www.doczj.com/doc/bf4695621.html,er[data]} 此时data是个变量 1.2、EL变量${变量名} 变量自动搜索顺序 属性范围在EL中的隐含对象名称 Page pageScope Request requestScope Session sessionScope Application applicationScope 1.3、自动类型转换 ${param.count+20} 等价于 String strCount = request.getParameter("count"); int count = Integer.parseInt(strCount); count = count+20; 1.4、EL保留字 【and、or、no、instanceof 】【eq、ne、lt、empty 】【gt、le、ge、div】【true、false、null、mod】 1.5、EL隐含对象 pageContext、pageScope、requestScope、sessionScope、applicationScope、 Param【request.getParameter】、paramValues、header、headerValues、cookie、initParam【ServletContext.getInitParameter】${pageContext}的常用部分 ${pageContext.request.queryString} 请求参数字符串 ${pageContext.request.requestUrl} 取得请求的URL ${pageContext.request.contextPath} 取得web应用的名称 ${pageContext.request.method} 取得请求方式post、get ${pageContext.request.protocol} 请求的Http协议(HTTP/1.1 HTTP/1.0) ${pageContext.request.remoteUser} 取得用户名称 ${pageContext.request.remoteAddr} 取得用户的ip地址 ${pageContext.session.new} 判断session是否为新的 ${pageContext.session.id} 取得session的id JSTL标签配置 2008-01-09 15:58 简介 JSP标准模板库(JSTL)是SUN公司发布的一个针对JSP开发的新组件。JSTL 允许你使用标签(tags)来进行JSP页面开发,而不是使用多数JSP程序员已经习惯了的scriptlet代码方式开发。JSTL几乎能够做到传统JSP scriptlet 代码能做的任何事情。你可能会疑惑,为什么我们需要另一种这样的HTML生成语言呢? STL 允许JSP程序员使用tags而不是JAVA代码来编程。为了展示为什么这个是更优越的,下面将给出示例。我们会检查一个非常简单的从1数到10的JSP 页面。我们将通过两种方法来检查,一种是基于JSP的scriptlet,一种是JSTL。当这个计数器页面的例子是用JSP scriptlet来编写时,JSP页面如下所示: 自定义标签库
JSTL标签的用法
JSTL,EL面试题
JSTL标准标签库
jstl标签使用
JSTL标签cforEach控制ul换行
4.
Jsp标签库
c标签
JSTL表达式
标准标签库JSTL大全
JSTL标签核心标签库
实验四:EL表达式和JSTL标签库的使用
JSTL日期格式标记
long格式日期:
medium格式日期: jstl函数
第十一章 表达式语言EL和标准标签库JSTL
JSTL标签配置
<% } %> 正如你在上例中看到的看到的那样,使用scriptlet代码产生的页面源代码会包含混合的HTML标签和JAVA语句。这种混合型的编程方式不是最佳的方式,其主要原因有以下几点。 主要的原因是它的可读性。这个可读性主要依赖于人类和计算机。JSTL可以允许程序员查看一个只包含完整HTML和类似HTML的标签的页面。 SP scriptlet代码的可读性不适合人类。这种混合的scriptlet和HTML代码对于计算机来说也很难读。尤其是针对那些HTML官方工具如 Dreamweaver和Microsoft FrontPage,所表现出来的不直观性更突出。目前,大多数HTML官方工具会以不可编辑块(non-editable blocks)的形式来隔离JSP scriptlet代码。这种HTML官方工具通常是不能直接修改JSP scriptlet代码的。 下面这段代码展示这个计数器范例如何使用JSTL方式来编写。正如你所看到的,这个代码列表有不变性,仅仅一个标签被使用。HTML和JSTL标签混合起来产生
实验名称:EL表达式和JSTL标签库的使 用 时间:2019-2020第2学期 实验9 EL表达式和JSTL标签库的使用1实验目的 1)了解表达式语言的功能; 2)熟悉JSTL标签库的基本使用方法; 3)掌握表达式语言的使用; 4)掌握JSTL的核心库标签的使用; 5)掌握标签文件的开发和使用。
2 实验原理 表达式语言(EL)是JSP 2.0新增的功能。它是一种简洁的数据访问语言,通过它可以在JSP页面中方便地访问应用程序数据,无需使用JSP表达式(<%=和%>)。EL的目标是使动态网页的设计、开发和维护更加容易。 JSP标准标签库(JSP Standard Tag Library,简称JSTL)是一个为实现Web 应用程序的常用功能而开发的标签库集合。 3仪器与材料 安装有Windows7或以上操作系统的计算机,JDK1.8,MyEclipse2016,Tomcat7.0,Dreamweaver。 4实验内容 4.1使用表达式语言 EL的特点是访问数据可以使用点(.)运算符或方括号([])运算符;可以访问隐含对象;有自己的运算符构造表达式;可以使用Java语言编写的函数等。 操作步骤如下: 1. 创建一个Web project:TestEL, 2. 在WebRoot文件夹中创建一个operator.jsp页面,EL运算符的使用,代码如下: <%@ page contentType="text/html;charset=gb2312" %>
EL 表达式 结果 \${1} ${1} \${1 + 2} ${1 + 2} \${1.2 + 2.3} ${1.2 + 2.3} \${1.2E4 + 1.4} ${1.2E4 + 1.4} \${-4 - 2} ${-4 - 2} \${21 * 2} ${21 * 2} \${3/4} ${3/4} \${3 div 4} ${3 div 4} \${3/0} ${3/0} \${10%4} ${10%4} \${10 mod 4} ${10 mod 4} \${(1==2) ? 3 : 4} ${(1==2) ? 3 : 4}