Struts Bean标签库

bean:cookie

根据 cookie 的键检索一个 cookie ,将其值赋给在 id 属性,并保存在本地范围和页面范围里。

value multiple 功能跟 header 一样

当使用 bean:write 时,其 name 属性对应 bean:cookie id 属性, property 属性值必须是“ value ”。

bean:header

bean:header 标记用于将 HTTP 请求头中的某个信息的 String 对象存储在 page 范围和本地范围内的 JSP 脚本变量中。

如果指定了 multiple 属性。可以存储同一名称的多个标题。如:如果传入请求具有名称同为“ Accept-Language ”的两个标题,则将使用 String[] 数组来捕获每个标题值。然后将此数组存储在由 id 属性指定的 JSP 变量中。

value 属性用于如果传入请求中不存在指定资源时指定一个默认值。

bean:parameter

bean:parameter 标记将 HTTP 请求参数保存在 page 范围和本地范围内的 JSP 脚本变量中。

指定了 multiple 属性可以将同名参数的多个参数值保存到 page 范围和本地范围内的一个数组( String[] )中。

value 属性表示:如果 name 属性指定的要查找的参数不存在,则则将创建一个新的 String 对象,并将 value 属性的值赋给这个对象,然后同时存储在 page 范围和本地范围里

bean:page

检索 JSP 隐式对象,包括 application, config, request, response, session ,然后放在本地范围和页面范围里。

id 属性值不能为 application, config, request, response, session 。因为此标签会将变量保存在本地范围里。但本地范围已经存在 application, config, request, response, session 这些变量了。其实此标签的主要功能是将这些隐式对象保存在页面范围里了。用 bean:write 只能在 page 不能读取存放在本地范围里的变量。

访问 Web 资源

bean:message

访问指定资源束的一个键值对。

bundle 属性指定使用哪个资源束

key 指定关键字的名称

locale 用于限定语言环境

scope 指定查找 name 属性指定的对象时的搜索范围(应用程序、页面、请求或会话),如果没有指定,则按下列顺序搜索每个范围:页面、请求、会话、应用程序。

指定关键字有三种方法:

1.   key 属性来指定关键字 :
<bean:message key=”label.search.name”/>

2.   使用 name 属性指定一个变量,标记将这个变量的值作为检索的关键字:
<%
String msg=”result”;
pageContext.setAttribute(“msg”,msg);
%>
<bean:message bundle=”special” name=”msg” arg=”success”/>
struts-config.xml:
  <message-resources parameter="com.yourcompany.struts.SpecialResources" key=”special” />
SpecialResources.properties:
result={0}
页面显示:
success

3.   使用 name property 属性指定一个 javabean 的字段作为检索的关键字:

bean:resource

用于加载 Web 应用程序资源的内容并将其以 String 对象存储在页面范围和本地范围内的 JSP 变量中。另外,你可以选择指定是否只想要资源的 java.io.InputStream 对象的引用而不是将其内容保存在 String 对象中

Web 应用程序资源是那些作为 Web 应用程序的一部分而打包的文件。如:

如果你的 Web 应用程序位于名为 c:\tomcat\strutssample 的目录中,并有以下文件:

l   c:\tomcat\strutssample\index.jsp

l   c:\tomcat\strutssample\WEB-INF\struts-config.xml

那么你就可以将 index.jsp 作为“ /index.jsp” 来访问。请注意, WEB 应用程序资源的路径与该应用程序相关,且必须用斜杠( / )开头。

如果加载资源错误,则在运行 resource 标记时会抛出一个 JspException 异常。 ]

resource 标记加载 struts-config.xml 的示例:

<bean:resource id=”strutsConfig” name=”/WEB-INF/struts-config.xml”/>

访问:

Struts Config file contents:<%=strutsConfig%>

Struts Config file contents:<bean:write name=”strutsConfig”/>

以下代码帮说明如何使用资源标记来为 WEB 应用程序资源获得一个 java.io.InputStream 的引用。

<bean:resource id=”strutsConfig” input=”true” name=”/WEB-INF/struts-config.xml”/>

input 属性接受任何的值。只要存在值, java.io.InputStream 引用将被存储在 JSP 变量中,而不是包含 WEB 资源内容的 String 对象。

你可以使用 bean:resource 标记加载 web 应用程序资源的内容,比用 Scriplet 更简洁。

bean:struts

用于将 Struts 配置对象的引用存储在本地范围和页面范围内的 JSP 变量中。

使用标记必须指定 formBean,forward mapping 属性之一,否则运行时将抛出 JspException 。另外,如果找不到指定的配置对象,运行时将抛出 JspException

第一种用法:存储 fromBean 对象
<bean:struts id=”cfg” formBean=”searchForm”/>
formBean
属性的值与在 Struts 配置文件中 <form-bean> 标记的 name 属性的值相匹配。

第二中:存储 forward 对象
<bean:struts id=”cfg” forward=”search”/>

forward 属性的值与在 Struts 配置文件中的 <global-forward> 标记的子标记 <forward> name 属性匹配。

第三种:存储 Action 对象
<bean:struts id=”cfg” mapping=”/search”/>

mapping 属性的值与在 Struts 配置文件中的 <action> 标记的 path 属性的值匹配。

bean:include

用于执行对页面的请求,并将响应结果的客户端代码存储在 JSP 变量中。

有三种使用方法:

1.   使用 forward 属性指定 forward 名称
<bean:include id=”search forward=”forward”/>

2.   使用 href 属性指定绝对 URL
<bean:include id=”search” href=”
http://www.google.com ” />

3.   使用 page 属性指定相对于应用程序的 URL
<bean:include id=”search” page=”/search.jsp”/>

使用 bean:write 输出时要将其 filter 属性设置为 false 才能显示正确信息,否则显示客户端源代码

问题 1

bean:write 输出时中文信息是乱码

定义和输出 JavaBean

bean:define

定义一个变量并将其保存在本地范围和由 toScope 指定的范围里。如果 id 指定这个变量已存在则替换之。

toScope 属性可选的值有: page,request,session.application 。默认为 ”page”

scope 属性指定要赋给这个变量的值所在的范围。

type 指定指定要赋给这个变量的值的类型。如果该标记指定了 value 属性则 type 默认为 java.lang.String ,否则值为 java.lang.Object

id 属性变量赋值有以下四种方法:

1.   设置 value 属性
<bean:define id=”name” value=”rolia”/>

2.   同时设置 name property 属性
name
代表一个已存在的 Bean property 代表这个 Bean 的某个属性。 id 变量的值由 property 属性决定。

3.   设置 name 属性
name
属性指定一个以存在的变量,可以用 scope 属性指定这个变量所在范围。

4.   将值放在标记的起始位置和结束位置之间。
<bean:define id=”name”>rolia</beandefine>

bean:write

用于输出变量,或 JavaBean 的某个属性字段 , 并调用 toString() 方法获得字符串,然后输出字符串的内容。

l   name 属性指定一个已存在的变量

l   property 属性与 name 属性一起指定 JavaBean 的某个属性字段

l  format 指定输出格式如:
     <%

       java.util.Calendar c = java.util.Calendar.getInstance(java.util.TimeZone.getTimeZone( "GMT+8" ),java.util.Locale.CHINA);

       pageContext.setAttribute( "c" ,c);

     %>

     < bean:write name = "c" property = "time" format = "dd-mm-yyyy hh:mm:ss" />

 

l   filter 当为 true 时,转换 HTML 符号。默认为 true

当要输出的变量不存在或为 null 时抛出错误。所以在输出变量前应用 logic:present 检查变量是否存在。

bean:size

用于将数组、基于 java.util.Collection 的对象或基于 java.util.Map 对象的大小以 java.lang.Integer 对象存储在本地范围和页面范围的变量里。

有三种方法指定集合:

1.   使用一个 scriplet 表达式表示一个本地范围的变量
    <%
      String[] array = new String[3];
     %>
     <bean:size id="size" collection="<%=array%>"/>
     <bean:write name="size"/>

2.   使用 name 属性来指定集合对象的名称。若没有指定 scope 则依次在 page,request,session.application 范围里查找,否则在 scope 指定的范围里查找。

3.   name property 属性指定集合对象的名称为一个 JavaBean 的某个字段的名称。若没有指定 scope 则依次在 page,request,session.application 范围里查找,否则在 scope 指定的范围里查找。

如果没有使用上述任何一种方法指定集合则抛出 JspException

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值