数据标签主要用于提供各种数据访问相关的功能,主要包含如下几个:
(1) action:该标签用于在JSP页面直接调用一个Action,通过指定executeResult参数,还可以将该Action的处理结果包含到本页面中来。
(2) bean:该标签用于创建一个JavaBean实例。如果指定了var属性,则可以将创建的JavaBean实例放入Stack Context中。
(3) date:用于格式化一个日期
(4) debug:用于在页面上生成一个调试链接,当单机该链接时,可以看到当前ValueStack和Stack Context中的内容
(5) il8n:用于指定国际化资源文件的baseName
(6) include:用于在JSP页面中包含其他的JSP或Servlet资源
(7) param:用于设置一个参数,通常是用作bean标签,URL标签的字标签
(8) push:用于将某个值放入ValueStack的栈顶
(9) set:用于设置一个新的变量,并可以将变量放入指定的范围内
(10) text:用于输出国际化信息
(11) url:用于生成一个URL地址
(12) property:用于输出某个值。
1、 action标签
使用action标签有如下几个属性
(1) var:可选属性,一旦定义了该属性,该Action将被放入Stack Context中。
(2) name:必填属性,通过该属性调用指定该标签调用按个Action
(3) namespace:可选属性,该属性指定该标签调用的Action所在的namespace
(4) executeResult:可选属性,指定是否yaojaing是否要将Action的处理结果页面包含到本页面,默认为false。
(5) ignoreContextParams:可选属性,指定该页面中的请求参数是否需要传入调用的Action,默认为false。
2、 bean标签
bean标签用于创建一个JavaBean实例,还可以在标签内使用<param.../>标签为该JavaBean实例传入属性,这时应该为该JavaBean类提供setter和getter方法。该bean指定如下两个属性。
(1) name:必填属性,指定要实例化的JavaBean实现类。
(2) 可选属性,指定该属性则将JavaBean实例放入Value Context中,并放入requestScope中。
代码示例:
Person类:(JavaBean实现类)
package org.app;
public class Person {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}}
jsp页面
<s:bean name="org.app.Person">
<s:param name="name" value="zhangsan"/>
<s:param name="age" value="18"/>
Person的实例name为:<s:property value="'zhangsan'"/>
Person的实例age为 :<s:property value="age"/>
上面的例子说明Person实例放在ValueStack的栈顶,可以直接访问,因此可以直接进行输出。还可以利用var属性来进行输出
代码示例:
</s:bean><s:bean name="org.app.Person" var="p">
<s:param name="name" value="'zhangsan'"/>
<s:bean name="age" value="29"/>
</s:bean>
Person实例的name值为:<s:property value="#p.name"/>
Person实例的age 值为:<s:property value="#p.age"/>
${requestScope.p}
注意:该实例实在requestScope中,因此要访问的时候需要从requestScope中取出来才能访问其属性,不加上最后一行代码会出现问题,无法访问name和age属性。
3、 date标签
改变标签用于格式化一个输出日期,该标签指定了如下几个属性:
(1) format:可选属性,指定后将根据该属性指定的格式来格式化日期。
(2) nice:可选属性,只能为true或false,用于是否输出指定日期与当前时刻的时间差
(3) name:必填属性,指定要格式化的日期
(4) var:可选日期,指定该属性将格式化后的字符放入Stack Context 中,并放如requestScope中,但不会输出。
4、 debug标签
辅助调试,页面生成一个链接,通过该链接可以看到ValueStack和Stack Context中的所有值的信息。
5、 include标签
将一个JSP页面或者Servlet包含到本页面,页面的名称为value属性。还可以使用<param.../>将多个参数包含到本页面。
6、 param标签
为其他标签提供参数。
7、 push标签
将某个值放到ValueStack的栈顶,从而可以方便的进行访问该值,其中有一个必填的属性:value,指定需要放入的值。
代码示例:
<s:bean name="org.app.Person" var="p">
<s:param name="name" value="'zhangsan'" />
<s:param name="age" value="19"/>
</s:bean>
<s:push value="#p">
ValueStack栈顶对象的name属性为:<s:property value="name"/><br/>
ValueStack栈顶对象的age 属性为:<s:property value="age"/>
</s:push>
结果
放入栈顶,就可以直接访问。还得注意:获取该栈顶的元素时还必须将取值那两行代码放在push标签内,否则不会访问到该元素。即,push标签表示临时将元素放入栈顶,过了该标签就会释放该元素。
8、 set标签
该标签用于将某个值放入指定范围内,例如application范围,session范围。该标签有如下几个属性:
(1)scope:可选属性,指定新变量被放置的范围,该属性可以接受application、session、request、page和action5个值。放入Action即放入request范围,并被放入Stack Context中。
(2) value:可选属性,指定将赋给变量的值,若没有指定该属性则将ValueStack栈顶的值赋给新变量。
(3) var:可选属性,指定将该值放入ValueStack中。
代码示例
<s:bean name="org.app.Person" var="p">
<s:param name="name" value="'zhangsan'"/>
<s:param name="age" value="29"/>
</s:bean>
将Stack Context中的p值放入默认范围(Action)范围<br/>
<s:set value="#p" var="xxx"/>
Stack Context中的xxx对象的name属性为:<s:property value="#xxx.name"/><br/>
Stack Context中的xxx对象的age 属性为:<s:property value="#xxx.age"/><br/>
request范围内的xxx对象的name属性为:${requestScope.xxx.name}<br/>
request范围内的xxx对象的age 属性为:${requestScope.xxx.age}<br/>
将Stack Context中的p值放入application范围内<br/>
<s:set var="yyy" value="#p" scope="application"/>
application范围的yyy对象的name属性为:${applicationScope.yyy.name}<br/>
application范围的yyy对象的age 属性为:${applicationScope.yyy.age}<br/>
将Stack Context中的p值放入session中<br/>
<s:set var="zzz" value="#p" scope="session"/>
session范围的zzz对象的name属性为:${sessionScope.zzz.name}<br/>
session范围的zzz对象的age 属性为:${sessionScope.zzz.age}<br/>
结果:
在属性中直接设置scope即将该对象放入指定的范围,然后通过${xxxScope}来访问对象的属性。
9、 URL标签
该标签用于生成一个URL地址,可以通过该标签指定param子元素,从而向指定的URL地址发送请求参数。该标签有以下几个属性:
(1) action:可选属性,指定生成URL地址为那个Action ,如果不指定Action,则使用value作为URL的地址值
(2) anchor:可选属性,指定URL的锚点
(3) encode:可选属性,指定是否需要对参数进行编码,默认为true
(4) escapeAmp:可选参数,指定是否对&符号进行编码,默认为true
(5) forceAddSchemeHostAndPort:可选参数,指定是否需要在URL对应的地址里强制添加scheme、主机和端口。
(6) includeContext:可选属性,指定是否需要将当前上下文包含在URL地址中
(7) method:可选属性,指定Action方法,将链接到指定Action的特定方法
(8) namespace:可选属性,指定命名空间,指定该属性将链接到指定namespace的指定Action处
(9) portleMode:可选属性,指定结果页面的portle模式
(10) scheme:可选属性,设置scheme属性
(11) value:可选属性,指定生成URL的地址值
(12) var:可选属性,指定该属性将链接的值放入ValueStack中
(13) windowState:可选属性,指定页面portle的窗口状态。
10、 property标签
作用为输出指定值,即输出value属性指定的值,如果没有指定value,则默认输出ValueStack栈顶的值。直接输出栈顶的值上面的示例代码中有。