Jstl之核心标签库与格式标签库使用

页面导航:首页 > 网络编程 > JavaScript > Jstl之核心标签库与格式标签库使用

Jstl之核心标签库与格式标签库使用

来源: 作者: 时间:2016-01-22 08:40 【

JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。JSTL只能运行在支持JSP1 2和Servlet2 3规范的容器上,如tomcat 4 x。在JSP

JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。JSTL只能运行在支持JSP1.2和Servlet2.3规范的容器上,如tomcat 4.x。在JSP 2.0中也是作为标准支持的。

JSTL 1.0 发布于 2002 年 6 月,由四个定制标记库(core、format、xml 和 sql)和一对通用标记库验证器(ScriptFreeTLV 和 PermittedTaglibsTLV)组成。core 标记库提供了定制操作,通过限制了作用域的变量管理数据,以及执行页面内容的迭代和条件操作。它还提供了用来生成和操作 URL 的标记。顾名思义,format 标记库定义了用来格式化数据(尤其是数字和日期)的操作。它还支持使用本地化资源束进行 JSP 页面的国际化。xml 库包含一些标记,这些标记用来操作通过 XML 表示的数据,而 sql 库定义了用来查询关系数据库的操作。

一、JSTL 库安装

如果要使用JSTL,则必须将jstl.jar和 standard.jar文件放到classpath中,如果你还需要使用XML processing及Database access (SQL)标签,还要将相关JAR文件放到classpath中,这些JAR文件全部存在于回来的zip文件中。

Apache Tomcat安装JSTL 库步骤如下:

 

下载standard.jar和jstl.jar,这里可以下download.csdn.net/detail/evankaka/8871459,我已打包好的

standard.jar和jstl.jar文件拷贝到/WEB-INF/lib/下。

使用任何库,你必须在每个JSP文件中的头部包含标签。

standard.jar的作用

JSP 标准标签库,和jstl.jar 一起使用,在1.0的版本中,但在jstl-1.2.jar 就不在需要了。

如果你想在项目中使用JSTL和EL表达式,那么你必须要引入这个standard.jar文件。即使你没有引入,那MyEclipse工具自带的类库也会帮你倒入。其他工具不会。

 

如果是在Maven中可以这么写:

 

	  
	
		taglibs
		/jstl/core %>

 

 

标签 描述
用于在JSP中显示数据,就像<%= ... >
用于保存数据
用于删除数据
用来处理产生错误的异常状况,并且将错误信息储存起来
与我们在一般程序中用的if一样
本身只当做的父标签
的子标签,用来判断条件是否成立
的子标签,接在标签后,当标签判断为false时被执行
检索一个绝对或相对 URL,然后将其内容暴露给页面
基础迭代标签,接受多种集合类型
根据指定的分隔符来分隔内容并迭代输出
用来给包含或重定向的页面传递参数
重定向至一个新的URL.
使用可选的查询参数来创造一个URL

 

使用

   标签必须要有test属性,当test中的表达式结果为true时,则会执行本体内容;如果为false,则不会执行。例如:${requestScope.username = = 'admin'},如果requestScope.username等admin时,结果为true;若它的内容不等于admin时,则为false。

  接下来看下列的范例:

  

  ADMIN您好!! //body部分

   如果名称等于admin,则会显示ADMIN您好!! 的动作,如果相反,则不会执行的body部分,所以不会显示ADMIN您好!! //body部分。另外的本体内容除了能放纯文字,还可以放任何JSP程序代码(Scriptlet)、JSP 标签或者HTML码。

  除了test属性之外,还有另外两个属性var和scope。当我们执行的时候,可以将这次判断后的结果存放到属性var里;scope则是设定var的属性范围。哪些情况才会用到var和scope这两个属性呢?例如:当表达式过长时,我们会希望拆开处理,或是之后还须使用此结果时,也可以用它先将结果暂时保留,以便日后使用。


例子:

<%@ page language=java import=java.util.* pageEncoding=UTF-8%>
<%@ taglib prefix=c uri=http://java.sun.com/jsp/jstl/core%>

<% String amind=Admin; request.setAttribute(amind,amind); %>    您好Admin先生

 

运行结果:

/

使用

用于条件选择,他和一起使用,他们只能组合在一起使用代表了的一个条件分支,他必须以作为他的父标签
他必须在之前出现,只要遵寻这两个规则,使用起来很简单,下面给出代码:

 

   
     
        body content   
     
     
        body content   
     
  ...   
     
        body content   
     
  
如:

 

 

<%@ page language=java import=java.util.* pageEncoding=UTF-8%>
 <%@ taglib prefix=c uri=http://java.sun.com/jsp/jstl/core%> 
 



 
 
 欢迎朋友:${user.name}
 
 
登录失败
 

 

运行结果:

/

类似于for和foreach循环

 

标签用于通用数据循环,它有以下属性

属 性 描 述 是否必须 缺省值
items 进行循环的项目
begin 开始条件 0
end 结束条件 集合中的最后一个项目
step 步长 1
var 代表当前项目的变量名
varStatus 显示循环状态的变量
标签的语法定义如下所示。

body content
 
标签的items属性支持平台所提供的所有标准集合类型。此外,您可以使用该操作来迭代数组(包括基本类型数组)中的元素。它所支持的集合类型以及迭代的元素如下所示:

java.util.Collection:调用iterator()来获得的元素。

ava.util.Map:通过java.util.Map.Entry所获得的实例。

java.util.Iterator:迭代器元素。

java.util.Enumeration:枚举元素。

Object实例数组:数组元素。

基本类型值数组:经过包装的数组元素。

用逗号定界的String:分割后的子字符串。

javax.servlet.jsp.jstl.sql.Result:SQL查询所获得的行。
 

如可以写:

 

<%List list=new ArrayList();
 list.add(nqwe);
 list.add(ftyu);
 list.add(vfg);
 request.setAttribute(list,list);
%>

${status.count}:

/
整数

,

 

计算x的平方

Value Square

 

字符串47,52,53,55,46,22,16,2 分隔.

 

使用步长

second second

 

对数组进行循环
<% int ai[] = {10, 20, 30, 40, 50};
pageContext.setAttribute(ary, ai);
%>

*

<% Cookie c=new Cookie(cookie1,one); response.addCookie(c); %> <% Cookie cookies[]=request.getCookies(); Cookie sCookie=null; String sname=null; String name=null; if(cookies==null) // 如果没有任何cookie out.print(none any cookie); else { //out.print(cookies.length +
); for(int i=0;i + name +
); } } %>

Cookie Name Cookie Value

 

字符串数组循环
<% String as[] = {
A first string, La deuxieme string, Ella troisiemo stringo
};
request.setAttribute(stringArray, as);
%>

枚举
<%
Hashtable hashtable1 = new Hashtable();
pageContext.setAttribute(numberMap, hashtable1);

hashtable1.put(new Integer(1), uno);
hashtable1.put(new Integer(2), dos);
hashtable1.put(new Integer(3), tres);
hashtable1.put(new Integer(4), cuatro);
hashtable1.put(new Integer(5), cinco);
hashtable1.put(new Integer(6), seis);
hashtable1.put(new Integer(7), siete);
hashtable1.put(new Integer(8), ocho);
hashtable1.put(new Integer(9), nueve);
hashtable1.put(new Integer(10), diez);

java.util.Enumeration enumeration = hashtable1.keys();
pageContext.setAttribute (enumeration, enumeration);
%>




 

map

 

 

  
       = 
 
     

 

使用

 

标记是JSTL的setProperty动作的友好版本。标签是有用的,因为它的表达式求值,并使用结果的JavaBean或java.util.Map对象设置一个值。

 

将value的值储存至范围为scope的varName变量之中
将本体内容的数据储存至范围为scope的varName变量之中:

… 本体内容

 

将value的值储存至target对象的属性中:


将本体内容的数据储存至target对象的属性中:

… 本体内容

它有如下属性属性描述是否必须缺省值:
名 称 说 明 EL 类型 必须 默认值
value 要被储存的值 Y Object
var 欲存入的变量名称 N String
scope var变量的JSP范围 N String pagescope
target 为一JavaBean或java.util.Map对象 Y Object
property 指定target对象的属性 Y String
如果指定了target属性, 那么property属性也必须指定。
可以看个例子:

 

 






结果:

 

/

 

 

 

使用

remove标签一般和set标签配套使用,两者是相对应的,remove标签用于删除某个变量或者属性,使用格式如下:

 

 

Remove标签中使用的各属性说明如下:

1. scope : 设定这个需要删除的变量的所在范围.

2. var : 需要删除的变量或者对象属性的名称.

如果没有scope属性,即采用默认值,就相当于调用PageContext.removeAttribute(varName)方法,如果指定了这个变量所在的范围,那么会调用PageContext.removeAttribute(varName,scope)方法.

 

使用

catch标签的功能和java中的try{…}catch{…}语句的功能很相似,它用于捕获嵌入到其中间语句抛出的异常,这个标签的使用格式如下:

 


相关操作语句
 --如果操作语句中出现异常,则catch会将异常保存在 varName变量中.

 

使用

这个标签的作用和Java中的StringTokenizer类的作用非常相似,通过items属性来指定一个特定的字符串,然后通过delims属性指定一种分隔符(可以同时指定多个),通过指定的分隔符把items属性指定的字符串进行分组,与forEach标签一样,forTokens标签也可以指定begin和end以及step属性值.

使用格式如下:

 


Body content

 

标签中的各个属性描述如下:

1. var : 进行迭代的参数名称.

2. items : 指定的进行标签化的字符串.

3. varSatus : 每次迭代的状态信息.

4. delims : 使用这个属性指定的分隔符来分隔items指定的字符串.

5. begin : 开始迭代的位置.

6. end : 迭代结束的位置.

7. step : 迭代的步长.

例:

 

 

使用 | 作为分隔符

使用 | , 作为分隔符

 

代码说明: delims=”|,” , 即使用”|”和”,”同时作为分隔符进行使用.如果需要更多的分隔符就是使用 “|,./” 在引号内输出.

/

使用

标记格式化成一个字符串格式的URL,并将其存储到变量中。这个标签会在必要时自动执行URL重写。 var属性指定的变量将包含格式化的URL。
JSTL url标签只是response.encodeURL()方法的调用一个替代方法。URL标记提供的唯一的真正的优势是正确的URL编码,包括子param标签指定的任何参数。

这个标签主要用来重写url地址,使用格式如下:

 

 

当进行参数传递时,使用格式如下:

 



 

标签中使用的属性描述如下:

value: 将要处理的URL地址.

context: 当使用相对路径方法指定外部文件时,这个属性指定的是外在文件的名称.

var: 给这个URL地址起一个标识.

Scope: 规定这个var属性所指定变量的有效范围.

 

使用

 

标签允许适当的URL请求参数并在URL中指定,它并要求任何必要的URL编码。

标签的name属性表示参数名称,而 value属性指示该参数值:

如下例子:

 


		
		
	
	
/

 

使用

该标签用于把其他今天文件包含到该文件当中,它与传统的相类似,不同的是标签只能用来包括该应用中的其他文件,而还可以包含外部站点中的静态文件,所以它的功能更加强大.使用格式如下:

 

 


Body content

 

标签中的属性描述如下:

url: 待引用静态文件的URL地址.

context: 当采用相对路径访问一个外部静态文件时,这里的context指定这个外部文件的名称.

var: 当使用字符串输出时,把输出的内容存储在这个var指定的变量中.

scope: 指定var参数变量的有效范围.

varReader: 这个属性指定的参数变量类型是Reader,可以用于读取文件的内容.

charEncoding: 引入文件所采用的字符编码.

Import标签即可以采用相对路径也可以采用绝对路径来引用本地点中的任何静态文件,还可以使用绝对路径引用外部站点中的静态文, 甚至可以是ftp站点中的文件,例如:就是引用http://www.163.com 站点的主页面.

可以把引用文件中的内容赋值给var属性指定的变量,然后进行读取,也可以赋值给varReader指定的Reader类型的变量,然后进行相应的读取.

有时引入的文件在本地显示会出现乱码,这时可以通过charEncoding来指定这些内容所采用的字符集编码.

 

使用

Redirect标签用来进行页面之间的重定向,它与传统JSP程序重的标签功能相类似,param标签是与redirect一起使用的,它用来进行参数值的传递,redirect标签的使用格式如下:

 

在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

 

 

三、格式化标签

 

JSTL格式化标签用来格式化并输出文本、日期、时间、数字。引用格式化标签库的语法如下:

<%@ taglib prefix=fmt  uri=http://java.sun.com/jsp/jstl/fmt %>

标签 描述
使用指定的格式或精度格式化数字
解析一个代表着数字,货币或百分比的字符串
使用指定的风格或模式格式化日期和时间
解析一个代表着日期或时间的字符串
绑定资源
指定地区
绑定资源
指定时区
指定时区
显示资源配置文件信息
设置request的字符编码

formatting标签库:就是用于在 JSP 页面中做国际化格式化的动作
分为了两类,分别是:


国际化核心标签:
格式化标签:

1.标签:用于设置本地化环境
属性描述
value:Locale 环境的指定,可以是 java.util.Locale 或 String 类型的实例
scope:Locale 环境变量的作用范围(可选)
如:
设置本地环境为繁体中文

设置本地环境为简体中文


2.标签:用于为请求设置字符编码
它只有一个属性 value ,在该属性中可以定义字符编码。
如:


3.标签:用于资源配置文件的数据来源
3.1标签将资源配置文件绑定于它标签体中的显示
属性描述
basename:资源配置文件的指定,只需要指定文件名而无须扩展名
prefix:前置关键字
如:
资源文件中配置的数据为:
label.backcolor=#FFF
label.fontcolor=#000
则,可以用如下方法取得label的backcolor和fontcolor值:





3.2标签则允许将资源配置文件保存为一个变量,在之后的工作可以根据该变量来进行
属性描述 ,二组标签共有的属性
var:独有的属性,用于保存资源配置文件为一个变量
scope:变量的作用范围
如:
查找一个名为applicationMessage_zh_CN.properties 的资源配置文件,来作为显示的 Resource绑定



4.标签:用于显示资源配置文件信息(该资源文件必须遵循如下格式:1.扩展名必须为properties,2.文件的内容必须依照key =value的格式;3.文件要放到WEB-INF/classes目录下)
属性描述
key:资源配置文件的“键”指定
bundle:若使用 保存了资源配置文件,该属性就可以从保存的资源配置文件中进行查找
var:将显示信息保存为一个变量
scope:变量的作用范围
如:
1)用标签将applicationMessage资源配置文件被赋于了变量applicationBundle
标签显示由标签保存的资源配置文件中键为passWord的信息




2)用标签定义的applicationAllMessage资源配置文件作用于其标签体内的显示
标签显示applicationAllMessage资源配置文件中键为userName的信息





5.标签应该位于标签内,将为该消息标签提供参数值。它只有一个属性value
如:在MyResourse.properties文件中,有一个索引值如下(其中,{0}代表占位符):
Str2=Hi,{0}
则,使用标签传入值如下:





也可以在资源文件中指定参数的类型:
如:在MyResourse.properties文件中,有一个索引值如下:
Str3={0,date}
则,使用标签传入值如下:
<% request.setAttribute(now,new Date());%>







6.标签:用于设定时区
标签将使得在其标签体内的工作可以使用该时区设置
标签则允许将时区设置保存为一个变量,在之后的工作可以根据该变量来进行
属性描述
value:时区的设置
var:独有的属性,用于保存时区为一个变量
scope:变量的作用范围


7.标签:用于格式化数字
属性描述
value:格式化的数字,该数值可以是 String 类型或 java.lang.Number 类型的实例
type:格式化的类型,可能值包括:currency(货币)、number(数字)和percent(百分比)
pattern:格式化模式
var:结果保存变量
scope:变量的作用范围
maxIntegerDigits:指定格式化结果的最大值
minIntegerDigits:指定格式化结果的最小值
maxFractionDigits:指定格式化结果的最大值,带小数
minFractionDigits:指定格式化结果的最小值,带小数

如:
结果将被保存在“money ”变量中,将根据 Locale 环境显示当地的货币格式



8.标签:用于解析数字
属性描述
value:将被解析的字符串
type:解析格式化的类型
pattern:解析格式化模式
var:结果保存变量,类型为 java.lang.Number
scope:变量的作用范围
parseLocale:以本地化的形式来解析字符串,该属性的内容应为 String 或 java.util.Locale类型的实例

如:
将15%转换为数字



9.标签:用于格式化日期
属性描述
value:格式化的日期,该属性的内容应该是 java.util.Date 类型的实例
type:格式化的类型
pattern:格式化模式
var:结果保存变量
scope:变量的作用范围
timeZone:指定格式化日期的时区


10.标签:用于解析日期
属性描述
value:将被解析的字符串
type:解析格式化的类型
pattern:解析格式化模式
var:结果保存变量,类型为 java.lang.Date
scope:变量的作用范围
parseLocale:以本地化的形式来解析字符串,该属性的内容为 String 或 java.util.Locale类型的实例
timeZone:指定解析格式化日期的时区


 

Tags:

文章评论

最 近 更 新
热 点 排 行
Js与CSS工具
代码转换工具

<