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=ThisisbeanmessageNo.1
beanmessage2=ThisisbeanmessageNo.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格式输出。
|