正文

bean标记库2007-03-13 10:38:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/hurongliang/23915.html

分享到:

bean:cookie

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

valuemultiple功能跟header一样

当使用bean:write时,其name属性对应bean:cookieid属性,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.  使用nameproperty属性指定一个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,forwardmapping属性之一,否则运行时将抛出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.  同时设置nameproperty 属性
name
代表一个已存在的Beanproperty代表这个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.  nameproperty属性指定集合对象的名称为一个JavaBean的某个字段的名称。若没有指定scope则依次在page,request,session.application范围里查找,否则在scope指定的范围里查找。

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

阅读(3218) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册