Struts bean标签库中的标签可以访问已经存在的javabean以及它们的属性,还可以定义新的bean,把它存放在page范围内或者用户指定的范围内,供网页内其它元素访问。
bean标签库中的标签大致分为以下三类
1.用于访问http请求信息或jsp隐含对象的bean标签
<bean:cookie>:访问cookie信息
id属性:定义一个javax.servlet.http.Cookie类型的变量,该变量存放在page范围内
name属性:指定Cookie的名字
value属性:指定cookie的默认值。如果由name属性指定的Cookie不存在,就使用value属性指
定的默认值
multiple属性:如果设置了该属性(可以设置为任意一个字符串),可以检索出所有和cookie名
字匹配的cookie。此时id属性定义了一个cookie数组类型的变量,而不是单个
cookie类型的变量
<bean:header>:访问http请求中的header信息
id属性:定义一个java.lang.String类型的变量,该变量存放在page范围内
name属性:指定需要检索的header信息
<bean:parameter>:访问请求参数
id属性:定义一个java.lang.String类型的变量,该变量存放在page范围内
name属性:指定请求参数名
value属性:指定请求参数的默认值
<bean:page>:访问jsp隐含对象
id属性:定义一个引用隐含对象的变量,该变量存放在page范围内
property属性:指定隐含对象的名字,可选值包括application,config,request,response,session
2.用于访问web应用资源的bean标签
<bean:message>:输出Resource Bundle中的一条消息
bundle属性:指定Resource Bundle,和struts配置文件的<message-resources>元素的
key属性匹配,如果没有配置bundle属性,就采用默认的Resource Bundle
key属性:指定消息key
在<bean:message>标签中指定消息key有三种方式:
(1).<bean:message>标签的key属性直接指定消息key
(2).<bean:message>标签的name属性指定一个可以转化为字符串的变量,这个变量的
字符串值为消息key
(3).同时指定<bean:message>标签的name属性和property属性。name属性指定一个
javabean,property属性指定javabean的一个属性,这个javabean的属性的值就
是消息key
对于带参数的复合消息,可以使用<bean:message>标签的arg0、arg1、arg2、arg3、arg4
属性来设置参数值
<bean:resource>:用于检索web资源的内容
id属性:定义一个代表web资源的变量
name属性:指定web资源的路径
input属性:如果没有设置input属性,则id属性定义的变量为字符串类型,如果给input属性
设置了值(可以是任意字符串),则id属性定义的变量为java.io.InputStream类型
<bean:struts>:检索struts框架内在的对象(如ActionFormBean,ActionForward或
ActionMapping)。必须设置formbean,forward或mapping属性中的一个属性
id属性:定义一个page范围的变量,用来引用struts框架的内在对象
formbean属性:指定ActionFormBean对象,和配置文件的<form-bean>元素匹配
forward属性:指定ActionForward对象,和配置文件的<global-forwards>元素的<forward>
子元素匹配
mapping属性:指定ActionMapping对象,和配置文件的<action>元素匹配
<bean:include>:包含其它web资源的内容,和标准jsp标签<jsp:include>相似,区别在于
<bean:include>把其他web资源的内容存放在一个变量中,而不是显示在
网页上
id属性:定义一个代表其他web资源的变量
forward属性:指定全局转发路径,和配置文件的<global-forwards>元素中的<forward>
子元素匹配
page属性:指定相对于当前应用的URI,以“/”开头
href属性:指定完整的URL
3.用于定义或输出javabean的bean标签
<bean:define>:定义一个变量
id属性:指定变量的名字
toScope属性:指定这个变量的存放范围,如果没有设置toScope属性,则这个变量存放在
page范围内
scope属性:指定javabean范围
给id属性定义的变量赋值有三种方式:
(1).设置value属性,此时id属性定义的变量为字符串类型,value属性代表这个变量的
字符串值
(2).同时设置name和property属性。name属性指定一个已经存在的bean,property属性
指定已经存在的bean的某个属性,id属性定义的变量的值由property属性决定
(3).同时设置name属性和type属性。name属性指定一个已经存在的javabean,type属性
指定这个javabean的完整类名,id属性定义的变量引用这个已经存在的javabean
对于由name属性指定的已经存在的javabean,在默认情况下<bean:define>标签会
依次在page,request,session和application范围寻找这个javabean,也可以设置scope
属性,明确指定这个javabean的范围
<bean:write>:显示javabean或其属性的内容
name属性:指定已经存在的变量
property属性:指定bean的属性
format属性:设置输出数据的格式
filter属性:默认值为true。如果值为true,将把输出内容中特殊的HTML符号作为普通字符串
显示,如果为false,则不会转化为普通字符串
如果希望输出bean的某个属性值,应该同时设置name属性和property属性
<bean:size>:获得Map或Collection集合的长度
id属性:定义一个Integer类型的变量,值为Map,collection或数组的长度
name属性:指定已经存在的Map,collection或数组变量
大多数bean标签具有以下共同属性:
id属性:定义一个变量,默认情况下该变量存放在page范围内。对于<bean:define>标签,它
的toScope属性可以指定这个变量的存放范围
name属性:指定已经存在的javabean的名字。property属性指定这个javabean的某个属性,
scope属性指定这个javabean的范围,可选值为page,request,session和application
如果没有设置scope属性,将依次从page,request,session和application范围内寻
找这个javabean