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
评论