Struts Bean
标记库
Struts Bean标记库内的各种标记主要是用来访问存在于Web应用各种范围内的JavaBean的。要使用Bean标记库必须先引入:
<%@
taglib
uri
=
"http://struts.apache.org/tags-html"
prefix
=
"html"
%>
id
用于暂存从name
中取出的对象。以便在后面引用。
一、
访问
HTTP
请求信息相关标记及页面内各种参数的标记
1 <bean:header>
标记
用于获取HTTP请求中的Header信息。
<
bean:header
id
=
"explorer"
name
=
"user-agent"
/>
您所使用的浏览器是:
<
bean:write
name
=
"explorer"
/>
id:
在<bean:header>标记中将name属性中所指定的Header取出后,保存在id属性所命名的变量中,这个变量存放在pageContext内。即就是用于存放一个变量。
name:
用于指定要读取的Header名称。
2 <bean:parameter>
标记
用于读取HTTP请求中的参数。
A
请求参数不同名
<
html:link
page
=
"/bean.jsp?testString=a+new+string&testInt=888"
>
单击此处添加 不同名请求参数
</
html:link
>
<
bean:parameter
id
=
"teststr"
name
=
"testString"
value
=
""
/>
请求参数testString的值为:
<
bean:write
name
=
"teststr"
/><
br
/>
<
bean:parameter
id
=
"testint"
name
=
"testInt"
value
=
""
/>
请求参数testInt的值为:
<
bean:write
name
=
"testint"
/>
name:
用于指定页面请求中的参数名,如上所述,先后指定的请求参数名为testString和testInt.
id:
将取出的参数值保存于id指定的变量中。
value:
指定请求参数的默认值。当HTTP请求中不包含name属性所指定的参数时,若不为该参数指定一个值,则后台后报错。
B
请求参数同名
<
html:link
page
=
"/bean.jsp?test=1000&test=2000&test=3000&test=4000"
>
单击此处添加 同名请求参数
</
html:link
>
<
bean:parameter
id
=
"tArray"
name
=
"test"
value
=
""
multiple
=
"yes"
/>
参数列表如下:
<
br
/><
logic:iterate
id
=
"tvalue"
name
=
"tArray"
>
<
bean:write
name
=
"tvalue"
/><
br
/>
</
logic:iterate
>
若要把所有请求参数全部显示出来,要把multiple设为yes即可。
3 <bean:cookie>
标记
Cookie是Web服务器留在客户端用于识别客户身份的一种方式,它是用户服务访问服务器时,服务器创建并保存在客户端的。
<
bean:cookie
id
=
"cookieValue"
name
=
"cookieName"
value
=
"emptyValue"
/>
<%
if
(cookieValue.getValue().equals(
"emptyValue"
)){
Cookie newCookie=
new
Cookie(
"cookieName"
,
"newCookieValue"
);
newCookie.setComment(
"This is a new cookie"
);
newCookie.setMaxAge(3600);
response.addCookie(newCookie);
}
%>
得到多个Cookie
<
bean:cookie
id
=
"cookieArray"
name
=
"cookie"
value
=
"emptyValue"
multiple
=
"yes"
/>
<
logic:iterate
id
=
"cookieValue"
name
=
"cookieArray"
>
<
bean:write
name
=
"cookieValue"
/><
br
/>
</
logic:iterate
>
name:
指定Cookie的名字
id:
指定暂存name的变量
value:name
为空时,用value作为其值
multiple:
指明可以读出所有Cookie对象。
3 <bean:page>
标记
用于获取JSP内建对象。JSP内建对象包括request、response、pageContext、session、applicate、out、config、page、execption。
<
bean:page
id
=
"session_dup"
property
=
"session"
/>
<%
response.setCharacterEncoding(
"gb18030"
);
request.setCharacterEncoding(
"gb18030"
);
out.println(
"Session
创建时间: "
+session_dup.getCreationTime()+
"<br/>"
);
out.println(
"Session
的ID:"
+session_dup.getId()+
"<br/>"
);
out.println(
"Session
失效时间:"
+session_dup.getMaxInactiveInterval()+
"<br/>"
);
out.println(
"
上次访问时间:"
+session_dup.getLastAccessedTime());
%>
id:
暂存从property得到的JSP内建对象。
property:指定要得到的
JSP内建对象包括request、response、pageContext、session、applicate、out、config、page、execption。
二、
访问
Web
资源的标记
1 <bean:include>
标记
用于将其它资源放入一个对象中,而不是像
<jsp:include>
标签那样直接显示在网页上。若要显示出来。则需要用
<bean:write>
输出。
常用的属性:
属性
|
描述
|
Id
|
id:
暂存从property得到的page、forward、href的对象。
|
Page
|
一个内部资源
,引用相对URI
|
forward
|
指定全局转发路径,和struts-config.xml文件中的全局转发的元素相匹配
|
Href
|
指一个外部的完整的URL链接。
|
<
bean:include
id
=
"indexpage"
page
=
"/index.jsp"
/>
<
bean:write
name
=
"indexpage"
filter
=
"false"
/>
<
bean:include
id
=
"indexpage"
forward
=
"index"
/>
<
bean:write
name
=
"indexpage"
filter
=
"true"
/>
2 <bean:message>
标记
用来显示资源文件中的消息文本。
属性
|
描述
|
Key
|
资源文件中定义消息关键字
|
Locale
|
用户会话中存储的区域对象的属性名称。若没有设置,默认值是
Action.LOCALE_KEY
|
Bundle
|
在应用程序上下文中,存储资源对象的属性的名称。如果没有设置这个属性,默认值是
Action.MESSAGE_KEY
|
arg0
|
第一个替换参数值
|
arg1
|
第二个替换参数值
|
arg2
|
第三个替换参数值
|
arg3
|
第四个替换参数值
|
使用<bean:message>标记从资源文件中指定消息文本有
三种方式。
(1)
直接在<bean:message>
标记中使用key
属性指定对应的资源文件中的消息文本。
如下所示:
<
message-resources
parameter
=
"cn.ApplicationMessageResources"
key="message"/
>
<
bean:message
bundle="message"
key="beanmessage1"
/>
<
bean:message
bundle
=
"message"
key="beanmessage2"
/>
beanmessage1
=
This
is
bean
message
No.1
beanmessage2
=
This
is
bean
message
No.2
beanmessage3=
Hi,
{0}{1}
bundle:它和struts-config.xml文件中的message-resources标记内的key属性相对应。
key:
它和资源文件中的名字对应。
(2)
使用<bean;message>
标记的name
属性指定一个字符串类型的变量,以该变量的值作为消息文本的key
值。
<%
String test=
"beanmessage3"
;
pageContext.setAttribute(
"messagekey"
,test);
%>
<
bean:message
bundle
=
"message"
name
=
"messagekey"
arg0
=
"China"
arg1
=
"Welcome to come"
/>
(3)
使用一个已经存在的JavaBean
对象名作为name
属性的值,再将其中某个属性作为对象内的property
属性的值,以该JavaBean
对象中的这一属性所存入的字符中值为消息文本的key
。
3 <html:resource>
标记
用于指定Web
资源的实际内容,如显示网页源代码。
<
bean:resource
id
=
"indexpage"
name
=
"/bean.jsp"
/>
<
bean:write
name
=
"indexpage"
filter
=
"true"
/>
与
<
bean:include
id
=
"indexpage"
forward
=
"index"
/>
<
bean:write
name
=
"indexpage"
filter
=
"true"
/>
结果相同。
属性
|
描述
|
Id
|
脚本变量和要定义的页作用域属性的名称
|
Name
|
资源的相对路径
|
Input
|
如果这个属性不存在,资源的类型就是字符串
|
三、定义和输出各种JavaBean及其相应属性值的标记
1 <bean:define>
标记
用于定义一个变量。
属性
|
描述
|
Id
|
新定义的
bean脚本变量名称,必须设置
|
Type
|
定义引入脚本变量的类
|
Value
|
为
id属性定义的脚本变量分配一个新的对象
|
Name
|
目标
bean的名称。若value属性没有设置,这个属性就必须设置
|
property
|
Name属性定义的
bean的属性名称,用来定义新的bean
|
Scope
|
源
bean的作用域。若没有设置,搜索范围是从页作用域到应用程序作用域
|
toScope
|
目标
bean的作用域。若没有设置,默认值是页作用域
|
<
bean:define
id
=
"testString"
value
=
"this is a test string"
/>
<
bean:write
name
=
"testString"
/>
<%
Date d=
new
Date();
pageContext.setAttribute(
"currDate"
,d);
%>
<
bean:define
id
=
"mill"
name
=
"currDate"
property
=
"time"
/>
<
bean:write
name
=
"mill"
/>
2 <bean:size>
标记
用于获取集合对象或数组对象的长度。
<%
ArrayList list=
new
ArrayList();
list.add(
new
Integer(1));
list.add(
new
Integer(2));
list.add(
new
Integer(3));
list.add(
new
Integer(4));
pageContext.setAttribute(
"list"
,list);
%>
<
bean:size
id
=
"size"
name
=
"list"
/>
<
bean:write
name
=
"size"
/>
3 <bean:write>
标记
用于在网页上输出内容
属性
|
描述
|
Id
|
新定义的
bean脚本变量名称,必须设置
|
Type
|
定义引入脚本变量的类
|
Value
|
为
id属性定义的脚本变量分配一个新的对象
|
Name
|
目标
bean的名称。若value属性没有设置,这个属性就必须设置
|
property
|
Name属性定义的
bean的属性名称,用来定义新的bean
|
Scope
|
源
bean的作用域。若没有设置,搜索范围是从页作用域到应用程序作用域
|
toScope
|
目标
bean的作用域。若没有设置,默认值是页作用域
|
Filter
|
若为
true时,只把字符串原样输出,否则将字符串按HTML格式输出。
|