JSP页面中常用四种标签(3)

2020-04-14 05:48

例param

HTML PUBLIC \HTML 4.01 Transitional//EN\

Iterator

Interator

Page

value=\

name=\

i18n

4

述include.jsp

为其他标签提供参数,比如include标签和bean标签. 参数的name属性是可选的,如果提供,会调用Component的方法addParameter(String, Object), 如果不提供,则外层嵌套标签必须实现UnnamedParametric接口(如TextTag)。

value的提供有两种方式,通过value属性或者标签中间的text,不同之处我们看一下例子:

name=\(A)

name=\value=\(B) 值会以String的格式放入会以java.lang.Object的格式放入

-->

--> statck. statck.

数值

参数: 名称必需默认类型描述name否String参数名value否Stringvalue表达式id否Object/String用来标识元素的id。在UI和表单中为HTML的id属性 例子: 请参考例4。 set 描述: set标签赋予变量一个特定范围内的值。当希望给一个变量赋一个复杂的表达式,每次访问该变量而不是复杂的表达式时用到。其在两种情况下非常有用: 复杂的表达式很耗时 (性能提升参

)

(代数

)

。 :

名称必需默认类型描述name是String变量名字scope否String变量作用域,可以为application, session, request, page, 或action.value否Object/String将会赋给变量的值id否Object/String用来标识元素的id。在UI和表单中为 HTML的id属性 例子: 请text

1

。 :

支持国际化信息的标签。国际化信息必须放在一个和当前 action同名的resource bundle中,如果没有找到相应message,tag body将被当作默认message,如果没有tag body,message的name会被作为默认message。 参数: 名称必需默认类型描述name是String资源属性的名字id否Object/String用来标识元素的id。

在UI和表单中为考

HTML的例

id属性

3

例子:

请参url

该标签用于创建

描述

url,可以通过\标签提供

request

。 :

参数。

当includeParams的值时'all'或者'get', param标签中定义的参数将有优先权,也就是说其会覆盖其他同名参数的值。 参数: 略 例<%@ <%@

property

i18n

taglib HTML

PUBLIC

page

prefix=\\

HTML

c

uri=\

4.01

: %> %>

Transitional//EN\

value=\

name=\

href=\

5

述url.jsp

得到'value'的属性,如果value没提供,默认为堆栈顶端的元素。 参数: 名称必需默认类型描述default否String如果属性是null则显示的default值escape否trueBooelean是否escape HTMLvalue否栈顶Object要显示的值id否Object/String用来标识元素的id。在UI和表单中为HTML的id属性 例子: 请参考例2

三OGNL(struts)

Struts2的OGNL标签详解

一、Struts2可以将所有标签分成3类:

UI标签:主要用于生成HTML元素的标签。

非UI标签:主要用于数据库访问,逻辑控制等标签。

Ajax标签:用于Ajax支持的标签。 对于UI标签,则有可以分为两类:

表当标签:表单标签主要用与生成HTML页面的from元素,以及普通表单元素的标签。

非表单标签:非表单标签主要用于生成页面的树、Tab页等。

流程控制标签:主要包含用于实现分页、循环等流程的标签。

数据访问标签:主要包含用于输出ValueStack中的值,完成国际化等功能的标签。 Struts2标签库分类图:

二、使用Struts2标签库的准备:

1、 在Web.Xml文件中增加标签库d定义。(如果应用使用的是Servlet2.3以前)

2、 现在jsp中使用taglib编辑指令导入标签库,然后才可以使用标签。 三、Struts2的OGNL标签:

OGNL是Object Graphic Navigation Language的缩写,它是一个开源项目。Struts2框架使用OGNL作为默认的表达式语言。 在传统的OGNL表达式求值中,系统会假设系统只要一个根对象,但Struts2的Stack Context需要多个“根”对象,其中ValueStacke只是多个“根”对象的其中之一。 假设:使用标签OGNL表达式求值,不是用Struts2的OGNL表达式是求之。如果系统的Context中包含两个对象:foo对象,它在Context中的名字为foo;bar对象, 并且它在Context中的名为bar。将foo对象设置成Context的根对象。 返回foo.getBlah()方法的返回值#foo.blah 返回bar.getBlah()方法的返回值#bar.blah 可以看出ONGL表达式的语法非正常简洁。

Struts2不知根据表达式从ValueStack中取的对象,还可以直接从对象中获取属性。Struts2提供了一个特殊的OGNL ProperAccessories(属性访问器),它可以自动搜寻栈内的所有实体(从上到下),直接找到求值表达式匹配的属性。

Struts2使用标准的Context来进行OGNL表达式求值,OGNl处理的顶级对象是一个Context,这个Context对象就是一个Map类型实例,在该OGNL的Context中,有一个对象,这个根

对象就是OGNL ValueStack,如果需要访问ValueStack里的属性,例如:#取出Valuestack中的bar属性:${bar};

除此之外:Struts2还提供了一些命名对象,这些命名对象与根对象无关,它们只是存在于Stack Context中。所以,访问这些对象实现需要使用#前缀来指明。 1、paramenters对象:用于访问HTTP请求参数,

2、request对象:用于访问HttpServletRequset的属性(Attribute)的Map。例如#request.userName

3、Session对象:用于访问HttpSession的属性。例如#session.userName

4、Application对象:用于访问ServletContext的属性。例如#application.userName

5、Attr对象:如果可以访问到,则访问PageContext,否则将依次搜索HttpServletRequset,HttpSession,ServletContext中的属性。

值得注意的是:当系统创建Action实例后,该Action实例已经被保存到ValueStack中,故无需书写#即可访问Action属性。 OGNL中的集合(List/Map):

直接生成一个List类型的集合,该List对象中包含三个元素,都个元素之间以英文逗号隔开; 例:

直接生成一个Map类型的集合,该Map对象中每个Key-value对象之间以英文冒号隔开:多项之间以英文逗号隔开。

例:

Set标签用于蒋某个值放入指定范围: Scope:指定变量被放置的范围,该属性可以接受aplication、session、requset、page、action。如果该属性,则默认在OGNL Context中。

Value:赋给变量的值,如果没有设置该属性,则将ValueStack栈顶的值付给变量。 对于集合,OGNL提供了两个与元素:in和not in,其中in判断某个元素是否在指定集合中;not in则用于判断某个元素是否不在指定集合中。 in表达式: 不在 not in表达式: OGNL还允许通过某个规则取得集合的自己,取得集合子集有三个操作符: 1、?:取出所有符合选择逻辑的元素 2、^:取出符合集合逻辑的第一个元素 3、$:取出符合选择逻辑的最后一个元素 例:

{?#this.price > 35}\ - $

在上面代码中,直接在集合后紧跟.{}运算符表明用于取出该集合的子集,{}内的表达式用于获取符合集合的元素,this指的是为了从大集books刷选数据到小集合,需要对大集合books进行迭代,this代表当前迭代的元素。表达式用于获取集合中价格大于35的书的集合。 (一)、控制标签:

Struts2的非UI标签包括控制标签和数据标签,主要用于完成流程控制,以及对ValueStack的控制,数据标签主要用于访问ValueStack中的数据;控制标签可以完成输出流程控制,例如分支,循环等操作,也可以对集合的合并,排列。 控制标签有:

1、if:用于控制选择器输出的标签;

2、else if: 与if标签结合使用,用于控制选择输出的标签; 3、else:与if标签结合使用,用于控制选择输出的标签; 4、append:将多个集合拼接成一个新的集合;

5、generator:字符解析器,用于将一个字符串解析成一个集合;

6、Iterator:这是一个迭代器,用于将集合迭代输出;

7、merge:用于多个集合拼接陈一个新的集合。但与appernd的拼接方式有所不同。 8、sort:用于对集合进行排序;

9、Subset:截取集合的部分元素,形成新的子集;

If/elseif/else这三个标签都是用于进行分支控制的,他们都是用于根据一个Boolean表达式的值,来确定是否计算、输出标签体的内容。 例:

iterator标签:

用于对集合进行迭代,这里集合包含List、Set和数组,也可对Map类型的对象进行迭代输出。Value、id、Status三个属性都是可选属性,如果没有指定value属性,则使用ValueStack栈顶的集合。 例:

如果为标签指定status属性,即每次迭代时都会有一个IteratorStatus实例,该实例的方法包含如下几个:

Int getCount():返回当前迭代了几个元素; Int getIndex():返回当前元素的索引;

Boolean isEven(): 当前元素的索引是否是偶数; Boolean isFirst():当前元素是否是第一个元素; Boolean isLast():当前元素是否是最后一个元素; Boolean isOdd():当前元素的索引是否是奇数; append标签:

用于将多个集合拼接起来,组成一个新的集合,通过阵中的拼接,从而允许通过一个标签就完成对多个集合的迭代。

merge标签的用法看起来很像append标签,也是用于将多个集合拼接成一个集合但是采用的拼接方式与append不同,append是以集合位顺序的拼接,merge是以元素位顺序拼接; generator标签:指定字符串按指定分隔符分隔成多个子串,临时生成多个子串可以使用iterator标签来迭代输出。可以理解我generator将一个字符串转化成一个集合,在该标签的标签体内,整个临时生成的集合将位于Valuestack的顶端,但一旦该标签结束,该集合将被移除Valuestack。

属性有count:指定生成集合中元素的总数,separator:指定用于解析字符串的分隔符;val:指定被解析的字符串;converter:制定一个转化器,该转化器负责将集合中的每个字符串转化成对象;id:可选属性,制定了该属性,则将生成的集合放在pageContext属性中; Subset标签:用于取得集合的子集,该标签的底层通过


JSP页面中常用四种标签(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:客服质检评语

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: