Struts1 Bean标签

Bean标签库

Bean标签库中标签可以访问已经存在的JavaBean以及它们的属性,还可以定义新的Bean,把它存放在用户指定的任何范围内,供网页或者其它元素访问,

Bean标签库分类

1.用于访问HTTP请求信息或者JSP隐含对象的Bean标签

<bean:cookie>

用于检索发送到服务器端的Cookie,包括以下属性:
id: 定义一个Cookie类型的变量,这个变量又是作为将信息存放在page范围内的key。
name: 指定Cookie的名字
value: 指定Cookie的默认值,如果name指定的Cookie不存在,就使用value指定的属性值。
例如: <bean:cookie id="cookie" name="cookieName" value="defaultValue"/>
先检索名为"cookieName"的Cookie是否存在,如果存在,就把它的值赋给cookie变量的value值,如果不存在,cookie变量的值就采用默认值"defaultValue"。

<bean:header>

用于检索HTTP请求中的Header信息,包括以下属性:
id: 定义一个存放信息的字符串变量,这个变量又是作为将信息存放在page范围内的key。
name: 指定要检索的Header中的字段名字:例如: <bean:header id="lang" name="Accept-Language"/>等于String value =(HttpServletRequest)request.getHeader("Accept-Language");   String lang = value;   pageContext.setAttribute("lang",value);

<bean: parameter>

用于检索HTTP的请求参数,包括以下属性:
id: 定义一个存放信息的字符串变量,这个变量又是作为将信息存放在page范围内的key。
name: 指定请求的参数名
value: 指定请求参数的默认值
例如1: <bean:parameter id="arg1" name="testarg" value="noarg"/> 等于 
String temp = request.getParameter("testarg"); 
if(temp != null){
String arg1 = temp;
pageContext.setAttribute("arg1",temp);
}else{
String arg1 = "noarg";
pageContext.setAttribute("arg1","noarg");
}
例如2: <bean:parameter id="arg2" multiple="yes" name="testarg" value="noarg"/>
arg2是一个存放所有request请求中参数值的字符串数组。
输出所有的参数值:
<%
for(int i = 0; i < arg2.length; i++){
out.write(arg2[i] + "<br>");
}
%>

<bean:page>

用于检索JSP隐含对象(如request、session、response)包括以下属性:
id: 定义一个引用隐含对象的变量,这个变量又是作为将信息存放在page范围中的key。
property: 指定隐含对象的名字,可选值包括application、config、request、response和session。
例如: <bean:page id="this_session" property="session"/>
<bean:write name="this_session" property="creationTime"/>
表示定义了一个"this_session"变量,它引用JSP中的session隐含对象,接着输出该变量中属性createTime的值(其实是session中属性createTime的值)。

2.用于访问Web应用资源的Bean标签

<bean:message>

用于输出资源配置文件中的一条信息,<bean:message>标签的bundle属性指定资源配置文件,它和Struts配置文件中的<message-resources>元素的key属性匹配。如果没有设置bundle属性,就采用默认的资源配置文件。
Struts配置文件中配置了两个资源配置文件:
<message-resources parameter="ApplicationResources"/>
<message-resources parameter="SpecialResources" key="special"/>
第一个资源配置文件没有指定key属性,因此是默认的资源配置文件,它的资源文件为ApplicationResources.properties。
第二个资源配置文件指定key属性为"special",它的资源文件为SpecialResources.properties。内容: hello=Hello,ereryone!
<bean:message>标签三种使用方式:
a1) <bean:message bundle="special" key="hello"/>
bundle --> <message-resources>中的key   
key --> SpecialResources.properties中的hello
注意: 如果<bean:message>中设置了属性bundle,那么<message-resources>中一定要设置属性key,否则运行时会报错的。
a2) <bean:message>标签中的属性name指定一个scope中的key,value为资源配置文件中的key。
例如: <% request.setAttribute("stringBean","hello") %>
<bean:message bundle="special" name="stringBean"/>
hello --> SpecialResources.properties中的hello
a3) 同时指定<bean:message>标签的name和property,name指定
一个JavaBean,property指定JavaBean中的一个get方法,get方法
的返回值就是资源配置文件中的key。例如:
<%
SomeBean bean = new SomeBean();
bean.setName("hello");
request.setAttribute("someBean",bean);
%>
<bean:message bundle="special" name="someBean"
property="name"/>
bundle --> <message-resources>中的key
name --> request中的key(someBean)
property --> bean的getName()
getName()返回值(hello) --> 资源配置文件中key(hello)

<bean:resource>

用于检索Web资源的内容,包括以下属性:
id: 定义一个代表Web资源的变量
name: 指定Web资源的路径
input: 如果没有设置input属性,则id属性定义的变量为字符串类型;如果给input设置了值(可以是任意字符串),则id属性定义的变量为InputStream类型。
例如: <bean:resource id="resource" name="/testpage1.jsp"/>resource变量代表"/testpage1.jsp"资源,由于没有设置input属性,因此resource变量为字符串类型,它的值为testpage1.jsp的源文件内容。

<bean:struts>

用于检索Struts框架内在的对象,如ActionFormBean、ActionForward和ActionMapping。包括以下属性:
id: 定义一个page范围内的变量,用来引用Struts框架内的对象。
formbean: 指定ActionFormBean对象,和Struts配置文件中的<form-bean>元素匹配。
forward: 指定ActionForward对象,和Struts配置文件中的<global-forwards>元素的<forward>子元素匹配。
mapping: 指定ActionMapping对象,和Struts配置文件中的<action>元素匹配。
注意: 属性id必须和下面三个属性中的一个匹配
例如: <bean:struts id="forward" forward="BeanResources"/>
<bean:write name="forward" property="path"/>
以上代码的用属性id定义了一个"forward"变量,它引用一个名为"BeanResources"的ActionForward对象,在Struts
文件中,与之匹配的<forward>元素为:
<global-forward>
<forward name="BeanResources" path="/BeanResources.jsp"/>
...
</global-forward>
<bean:write>标签输出ActionForward对象的path属性值

<bean:include>

和标准的JSP标签<jsp:include>很相似,都可以用来包含其他Web资源的内容,区别在于<bean:include>标签把其它Web资源的内容存放在一个变量中,而不是直接显示在页面上。包括以下属性:
id: 定义一个代表其它Web资源的位置
forward: 指定全局转发的路径,和Struts配置文件中的<global-forward>元素中的<forward>子元素匹配。
page: 指定相对于当前应用的URL,以"/"开头。
href: 指定完整的URL
例如: <bean:include id="p1" page="/page.jsp"/>
<bean:include id="p2" forward="success"/>
<bean:write name="p1" filter="false"/>
<bean:write name="p2" filter="false"/>

3.用于定义或者输出JavaBean的Bean标签

<bean:define>

用于定义一个变量,属性id指定变量存放在scope中的key,toScope属性指定这个变量存放的范围,如果没有设置toScope属性,则这个变量存放在page范围内。给id属性定义的变量赋值有三种方式:
a1) 设置value属性 例如:
<bean:define id="age" value="25"/>
a2) 同时设置name和property属性。name属性指定一个已经存在的Bean,property指定已经存在的Bean的某个属性,id作为key或者变量。
例如:
<% request.setAttribute("sessionBean",session); %>
<bean:define id="contextBean" name="sessionBean" property="servletContext"/>
ServletContext Name:
<bean:write name="contextBean" property="servletContextName"/>
contextBean属于ServletContext类型
a3) 同时设置name和type属性。name属性指定已经存在的JavaBean,type属性指定这个JavaBean的完整的类名。id作为key或者变量。例如:
<bean:define id="loginForm_copy" name="loginForm" type="com.briup.web.LoginForm"/>
<bean:write name="loginForm_copy" property="username"/>
该标签会依次在page、request、session和application范围中根据key(loginForm)来查找LoginForm的对象,也可以通过属性scope来指定一个查找的范围。
注意: 属性id定义的变量也是LoginForm的对象变量(对象引用)。

<bean:write>

用于在页面上输出某个Bean或者其属性的内容。
例如: <bean:write id="length" name="list"/>
<bean:write name="student" property="xh"/>
<bean:write format="#.####" name="employee" property="salary"/>
<bean:write format="MM-dd-yyyyy hh:mm:ss" name="now" property="time"/>
注意: 该标签自动会从page、request、session和application范围中根据name指定的key去查找对应的对象,也可以用scope属性来限定某个范围。
另外,属性filter: true表示将html中的标记作为普通字符显示,false表示不会把html中的标记作为普通字符显示,默认为true。

<bean:size>

用于获得Map、Collection或者数组的长度。包括以下属性:
id: 定义一个Integer类型的变量
name: 指定已经存在的Map、Collection或者数组变量
例如: <bean:size id="length" name="list"/>
<bean:write name="length"/>

<bean:parameter>

该标签取回请求中的参数值。如果没有指定multiple属性则依据刚取回的值创建一个String类型的bean,否则根据刚取回的值创建一个String[]类型的数组。
然后用id属性值将String或String[]绑定到page作用域中(这种绑定是为了其它标签能够使用该值),并创建对应的scripting变量(这种变量是为了JSP脚本能够使用该值)。
eg. 当请求如下的jsp页面时:http://localhost:8080/test.jsp?orgId=1
在test.jsp页中可通过如下方式获得orgId参数:
<bean:parameter id="ok" name="orgId"/>
<bean:write name="ok"/>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值