- 浏览: 447838 次
- 性别:
- 来自: 长沙
文章分类
- 全部博客 (168)
- Hibernate (17)
- MySQL (7)
- struts2 (14)
- Spring (12)
- Javascript (20)
- CSS (8)
- ajax/jquery (11)
- HttpClient (6)
- HTTP (1)
- java小知识 (23)
- Servlet/JSP (5)
- Oracle (0)
- Quartz (3)
- Lucene/Nutch (12)
- c# winform (2)
- J2ME (1)
- POI (5)
- php5 (2)
- DWR(Ajax) (1)
- log4j (1)
- dom4j (3)
- 獲取郵件聯系人 (2)
- 随意 (5)
- Heritrix (1)
- ireport+jasper (1)
- 算法 (2)
- java虚拟机 (1)
- maven (2)
最新评论
-
janrick:
太感谢了,我正需要加密的函数呢
java中DES加密解密例子 -
xuganggogo:
suyang119 写道请教一下,补充的三级的可以用吗?当然可 ...
关于条件查询detachedCriteria的注意的地方 -
suyang119:
请教一下,补充的三级的可以用吗?
关于条件查询detachedCriteria的注意的地方 -
xuganggogo:
大江帅 写道var name="attriName& ...
有关在JavaScript中使用EL表达式的问题 -
大江帅:
var name="attriName"; ...
有关在JavaScript中使用EL表达式的问题
数据标签主要用于提供各种数据访问相关的功能,包括显示一个Action里的属性,以及生成国际化输出等功能
数据标签主要包括:
action
:该标签用于在JSP页面中直接调用一个Action,通过指定executeResult参数,还可将该Action的处理结果包含到本页面来。
bean
:该标签用于创建一个javabean实例。如果指定了id属性,则可以将创建的javabean实例放入Stack
Context中。
date
:用于格式化输入一个日期
debug
:用于在页面上生成一个调试链接,当单击该链接时,可以看到当前ValueStack和Stack
Context中的内容。
i18n:
用于指定国际化资源文件的baseName
include
:用于在JSP页面中包含其他的JSP或Servlet资源
param:
用于设置一个参数,通常是用做bean标签、url标签的子标签
push
:用于将某个值放入ValueStack的栈顶
set:
用于设置一个新变量,并可以将新变量放入指定的范围内
text
:用于输出国际化消息
url:
用于生成一个URL地址
property:
用于生成输入某个值,包括输出ValueStack,Stack
Context和Action Context中的值
10.4.1 action标签
使用action标签
可以允许在JSP页面中直接调用Action,因为需要调用Action,故可以指定需要被调用Action的name以及namespace。如果指定了executeResult参数的属性值为true,该标签还会把Action的处理结果(视图支援)包含到本页面中来。
action标签的属性:
id:
可选属性,该属性将会作为该Action的引用ID
name:
必填属性,指定该标签调用哪个Action
namespace:
可选,指定该标签调用的Action所在的namespace.
executeResult:
可选,指定是否要将Action的处理结果页面包含到本页面。默认是false,即不包含
ignoreContextParams:
可选,它指定该页面中的请求参数是否需要传入调用的Action、默认是false,即将本页的请求参数传入被调用的Action。
下面是本示例应用中的Action类,包含连个处理逻辑。代码如下
public class TagAction extednds ActionSupport
{
//封装用户请求参数的author属性
private String author;
//author的get和set的方法,省略……
public String execute() throws Exception
{
return "done";
}
public String login() throws Exception
{
ServletActionContext.getRequest().setAttribute("author",getAuthor());
return "done";
}
}
上面的Action类包含两个处理逻辑,可以在struts.xml文件中通过指定method属性来将该Action类映射成两个逻辑Action。代码如下
<package name="lee" extends="struts-default">
<!--定义第一个Action,使用lee.TagAction的execute方法作为处理逻辑-->
<action name="tag1" class="lee.TagAction">
<result name="done">succ.jsp</result>
</action>
<!--定义第二个Action,使用lee.TagAction的login方法作为处理逻辑-->
<action name="tag2" class="lee.TagAction" method=“login”>
<result name="done" > loginSucc.jsp </result>
</action>
..............</package>
上面配置文件将一个Action类定义成两个逻辑Action,可以在JSP页面中通过<s:action.../>标签来调用这两个逻辑Action,部分jsp代码如下:
下面调用第一个Action,并将结果包含到本页面中。<br>
<s:action name="tage1" executeResult=“true” />
<hr/>
下面调用第二个Action,并将结果包含到本页面中。<br>
阻止本页面请求参数传入Action <br>
<s:action name=“tag2” executeResult="true" ignoreContextParams="true" />
</hr>
下面调用第二个Action,且不将结果包含到本页面中。<br>
<s: action name="tag2" executeResult="false" />
<s:property value="#attr.author"/>
上面页面中,通过指定executeResult属性来控制是否将处理结果包含到本页面中;还可以通过ignoreContextParams属性来决定是否将本页面的请求参数出入Action。
在浏览器中浏览该页面,并且传入一个名字为author的请求参数,P331如图10.12
从图可看出,本次请求包含了一个名为author的请求参数,该请求参数的值为yeeku,但在第二次调用时该菜蔬并未传给Action,因此使用action标签时阻止了参数的传入。
10.4.2 bean标签
bean标签 用于创建一个JavaBean的实例。创建JavaBean实例时,可以在标签体内使用<param.../>标签为该JavaBean实例传入属性,要使用这个标签,需要为该JavaBean类提供对应的setter方法。如该JavaBean类提供了对应的getter方法,我们就可以访问对应的属性。
bean标签 的属性:
name: 必填,指定要实例化的JavaBean的实现类
id: 可选。如指定了该属性,则该Javabean实例会被放入StackContext中(不是ValueStack),从而允许直接通过该id属性来访问该JavaBean实例。
-----------------------------------------------------------------------------------------------------------------------------------------------------------
!!注意:
在bean标签内时,bean标签创建的JavaBean实例放在valuestack的栈顶,该标签结束,生成的子集被移出valuestack栈。除非指定了id属性
----------------------------------------------------------------------------------------------------------------------------------------------
下面是个简单的JavaBean
public class Person
{
private String name;
private int age;
//getter和setter方法省略
……
}
在jsp页面中的代码:
<!--使用bean标签创建一个lee.Person类的实例-->
<s:bean name="lee.Person">
<!--使用Param标签为lee。Person类的实例传入参数-->
<s:param name="name" value="'yeeku'"/>
<s:param name="age" value="29"/>
<s:property value="name"/> <br>
<s: property value="age"/>
</s:bean>
带id属性的用法:
<s:bean name="lee.Person" id=“p”>
<!--使用Param标签为lee。Person类的实例传入参数-->
<s:param name="name" value="'yeeku'"/>
<s:param name="age" value="29"/>
</s:bean>
<s:property value="#p.name"/> <br>
<s:property value="#p.age"/>
10.3.4 date标签
date标签 用于格式化输入一个日期,还可以计算指定日期和当前时刻之间的时差
date属性:
format: 可选,如指定该属性,将根据该属性指定的格式来格式化日期
nice: 可选,值为true或者false,用于指定是否输出指定日期和当前时刻的时差。默认是false,即不输出
name: 必填,指定要格式化的日期
id: 可选,指定引用该元素的id值
通常,nice属性和format属性不同时指定,(不指定nice属性时,该属性值为false)。因为指定nice为true,代表输出指定日期和当前时刻的时差;指定format属性,则表明将指定日期按format指定的格式来个格式化输出。
如果即没有指定format,也没指定nice=“true”,则系统会到国际化资源文件中寻找key为struts.date.format的消息,将该消息当成格式化文本来格式化日期。如果无法找到key为struts.date.format的消息,则默认采用DateFormat.MEDIUM格式输出。
看如下jsp代码:
<%
//生成一个Date实例
java.util.Date now = new java.util.Date(107,12,23,13,23,24);
//将该Date实例设置成一个pageContext里的属性
pageContext.setAttribute("now", now);
%>
1> nice = "false",且指定format=“dd/MM/yyyy”<br>
<s:date name="#attr.now" format="dd/MM/yyyy" nice=“false”/> <hr><br>
2> nice = "true",且指定format=“dd/MM/yyyy”<br>
<s:date name="#attr.now" format="dd/MM/yyyy" nice=“true”/> <hr><br>
3> 指定nice = "true"<br>
<s:date name="#attr.now" nice=“true”/> <hr><br>
4> nice = "false",且没有指定format<br>
<s:date name="#attr.now" nice=“false”/> <hr><br>
如图p334
当没有指定nice=“true”属性,且不指定format属性时,系统将日期格式化成“2008年01月23日”,这是因为在系统的全局国际化资源文件中提供了如下一行:
#指定Struts2默认的国际化资源文件
struts.date.format=yyyy年MM月dd日
10.4.4 debug标签
debug标签 只要用与辅助调试,它在页面上生成一个超级链接,通过该该链接可以查看到ValueStack和StackContext中所有的值信息。
debug属性:id,该元素的一个引用id
在上面测试bean标签的页面中增加<s:debug/> 标签,通过浏览器查看该页面,将看到如图10.15
点击“[Debug]”链接,将看到10.16图p335
10.4.5 include标签
include标签 用于将一个JSP页面,或者一个Servlet包含到本页面中,使用该标签有如下两个属性:
value: 必填,指定需要被包含的JSP页面,或者Servlet
id: 可选,指定该标签的ID引用
还可以为<s:include.../>标签指定多个<param.../>子标签,用于将多个参数值传入被包含的JSP页面或者Servlet
看下面代码:
<h2>使用s:include标签来包含目标页面</h2>
<s:include value="include-file.jsp"/>
<!--使用include标签来包含其他页面,并且传入参数-->
<s:include value="include-file.jsp">
<s:param name="author" value="'yeeku'" />
</s:include>
被包含的页面仅使用表达式语言输出author参数,被包含页面的代码如下:
<h3>被包含的页面</h3>
<!--表达式语言输出author的请求参数-->
${param.author}
如图p336
10.4.6 param标签
param标签 主要用于为其他标签提供参数
param标签属性:
name: 可选,指定需要设置参数的参数名
value: 可选,指定需要设置参数的参数值
id: 可选,指定引用该元素的id
用法:
<param name="color" value="blue" />
这里color参数的值是,blue对象的值----如果blue对象不存在,则color为null。
如果要指定字符串则value=” ‘blue’ “
10.4.7 push标签
push标签用于将某个值放到ValueStack的栈顶,可以跟简单的访问该值
push标签 的属性:
value: 必填,指定需要放到ValueStack栈顶的值
id: 可选,指定该标签的ID
下面代码,讲一个值放到ValueStack的栈顶,从而可以通过<s:property.../>标签来访问
代码如下:
<!--使用bean标签创建一个JavaBean实例,并将其放入Stack Context中-->
<s:bean name="lee.Person" id="p">
<s:param name="name" value="'yeeku'"/>
<s:param name="age" value="29"/>
</s:bean>
<s:push value="#p">
<s:property value="name"/>
<s:propery value="age"/>
</s:push>
见P337,图10.18
10.4.8 set标签
set标签 用于将某个值放入指定范围内。例如application、session范围等。
当某个值所在的对象图深度非常深时,例如如下:person.worker.wife.parent.age,每次访问该值不仅性能地下,而可读性也很差。解决这个问题,可以将改该值设置成一个新值,并放入特定范围内。
set标签属性:
name: 必填,重新生成的新变量的名字
scope: 可选,指定新变量被放置的范围,该属性可以接受application、session、request、page或action 5个值。如果没有指定,默认是放置在Stack Context中。
value: 可选,指定将赋给变量的值。如果没指定,则将ValueStack栈顶的值赋给新变量。
id: 可选,指定该元素的引用ID
实例代码如下:
<!--使用param标签为JavaBean实例传入参数-->
<s:bean name="lee.Person" id="p">
<s:param name="name" value="'yeeku'"/>
<s:param name="age" value="29"/>
</s:bean>
将Stack Context中的p值放入默认范围内。<br>
<s:set value="#p" name="xxx"/>
<s:property value="#xxx.name"/> <br>
将Stack Context中的p值放入application范围内<br>
<s:set value="#p" name="xxx" scope="application"/>
<s:property value="#attr.xxx.name"/> <br>
将Stack Context中的p值放入session范围内<br>
<s:set value="#p" name="xxx" scope="session"/>
<!--使用JSP2.0表达式语言直接访问session中的属性-->
${sessionScope.xxx.name}<br>
P338见图10.19
10.4.9 url标签
url标签 用于生成一个URL地址,可以通过param向url标签指定参数,从而指定URL发送请求参数。
url标签的属性:
includeParams: 可选,指定是否包含请求参数。该属性的属性值只能为none,get或者all
scheme: 可选,用于设置scheme属性
value: 可选,指定生成URL的地址。如果不提供就用action属性指定的Action作为URL地址值。
action: 可选,指定生成URL的地址为哪个Action,如果Action不提供,就使用value作为URL的地址值。
namespace: 可选,该属性指定命名空间
method: 可选,指定使用Action的方法
encode: 这是一个可选属性,指定是否需要encode请求参数
includeContext: 可选,指定是否需要将当前上下文包含在URL地址中。
anchor: 可选,指定URL的描点。
id: 可选,指定该url元素的引用id
action属性和value属性的作用大致相同。指定action属性,系统会在指定属性后加.action后缀。如果两个都没有指定,就以当前页作为URL的地址值。
实例代码如下:
只指定value属性:<br>
<s:url value="editGadget.action"/>
<hr>
指定action属性,且使用param传入参数的形式。<br>
<s:url action="showbook">
<s:param name="author" value="'yeeku'">
</s:url>
既不指定action属性,也不指定value属性,且使用param传入参数的形式。<br>
<s:url includeParams="get" >
<s:param name="id" value="%{'22'}" /> <!--这里%{ } 有疑问 -->
</s:url>
<hr>
同时指定action属性和value属性,且使用param传入参数的形式<br>
<s:url action="showBooke" value="xxxx">
<s:param name="author" value="'yeeku'" />
</s:url>
P340如图10.20
10.4.10 property标签
property标签 的作用就是输出指定值,属性值如下:
default: 可选,如果需要输出的属性值为null,则显示的default属性指定的值
escape: 可选,指定是否escapeHTML代码
value: 可选,指定需要输出的属性值。如果没指定,默认输出ValueStack栈顶的值
id: 可选,指定该元素的标识
发表评论
-
struts2上传的奇怪问题
2009-06-30 17:27 991最近在一个项目中用到了struts2的上传。以前按照给 ... -
struts2 下载
2009-06-03 13:41 2196下载: 下载是通过StreamResult类来实 ... -
没进入Action直接返回“input”
2009-05-23 17:33 1163有可能的原因之一: 模型驱动不匹配,表单中的属性值,不能与B ... -
struts2 XML校验表单的错误显示
2009-03-14 12:41 1899<?xml version="1.0&qu ... -
struts2中的异常处理
2009-03-12 15:40 1186异常处理后,能够提供友好的用户界面,而不是一些错误的代码信息. ... -
struts2 配置
2009-03-05 13:23 1263<struts> <package ... -
调用同一个Action的不同方法
2009-02-18 11:20 1642Struts2中,一个Action中含有多个处理逻辑时,如果处 ... -
struts2控制标签
2009-02-01 15:46 162910.3控制标签 10.3.1 10.3.2 10.3.3 ... -
Struts2常用的Ajax标签
2009-02-01 15:43 472711.6 常用的Ajax标签 struts2为了简化Aj ... -
Struts2 使用Ajax标签
2009-02-01 15:42 1032未完成…… -
Struts2 攔截器
2009-01-15 17:31 1155struts2的一個很大的特點就是實現了攔截器,有人說stru ... -
Struts2 防止重复提交
2009-01-17 15:46 3564struts2 使用拦截器来检查表单是否重复提交,它采用同步 ... -
Struts2上传
2009-01-19 15:50 1733(一)预备工作: 首先, 建立struts2的工作環境,这里就 ...
相关推荐
下面我们将详细讲解几个常用的Struts2数据标签: 1. `<s:property>`:这个标签用于显示对象的属性值。例如,如果我们有一个名为"user"的Action属性,我们可以使用`<s:property value="user.name"/>`来显示用户的...
这些标签可以分为控制标签、数据标签和其他标签。 控制标签用来控制程序的执行,例如 if、else 和 iterator。数据标签用来管理数据的取得和创建,例如 bean、push 和 i18n。 4.1.1 if 标签 if 标签用来控制基本的...
在Struts2框架中,标签库是其一大特色,它提供了丰富的自定义标签,使得开发者能够更加便捷地创建动态页面。这些标签极大地简化了JSP页面的编写,提高了代码的可读性和可维护性。 1. **Struts2核心标签库**: - `s...
在这个基于Struts2的自定义分页标签的实践中,我们将深入探讨如何创建、配置和使用自定义标签来实现数据的分页展示,同时与Oracle数据库进行交互。 首先,理解分页的基本概念至关重要。分页是将大量数据分成小块,...
本资源详细介绍了如何在Struts2中自定义分页标签,使得开发过程更加便捷。 在Struts2中,分页通常涉及到以下几个关键步骤: 1. **创建Action类**:首先,你需要创建一个Action类,该类将处理用户的请求,包括获取...
首先,了解Struts2的标签库分为两个主要部分:动作标签和数据标签。动作标签主要用于处理业务逻辑,如表单提交、重定向等,而数据标签则专注于显示和格式化数据,如循环、条件判断、显示字段等。 1. 动作标签: - ...
### Struts2 数据标签详解 #### 1. `<s:action>` 标签 - **功能描述**: - `<s:action>` 标签主要用于调用Struts2中的Action。在JSP页面中,此标签可以指向特定命名空间内的某个Action,并且标签体通常用于展示...
2. **编写标签处理类(Tag Handler Class)**:这个类继承自Struts2提供的`org.apache.struts2.views.jsp.ui.TagSupport`或`org.apache.struts2.views.jsp.ComponentTagSupport`基类,实现标签的具体逻辑。...
Struts2_控制标签与数据标签.pdf
Struts2是一个强大的MVC框架,它提供了丰富的标签库,使得开发者在编写JSP页面时能够更加方便地处理业务逻辑和展示数据。本篇文章主要关注Struts2中的常用标签,这些标签大大简化了Web开发中的一些常见任务。 首先...
Struts 2标签的用法非常广泛,包括表单标签、验证标签、数据标签等。例如,使用Struts 2的表单标签可以快速创建表单,例如: ``` 用户名"/> 密码"/> 登录"/> ``` 这段代码创建了一个简单的登录表单,并使用...
Struts标签库提供了一组预定义的JSP标签,这些标签有助于开发者更有效地处理常见的Web开发任务,如表单处理、数据展示、逻辑控制等。在本文中,我们将深入探讨其中的Bean Tags、HTML Tags和Logic Tags。 1. **Bean ...
"Struts2标签库详解" Struts2标签库是Struts2框架中的一个重要组件,它提供了一系列的标签,帮助开发者快速构建Web应用程序。在Struts2标签库中,标签可以分为UI标签和非UI标签两大类。UI标签用于生成HTML控件,如...
在Struts2中,表单标签是用于处理用户输入和展示数据的关键组件,它们使得视图层的构建更加简洁和高效。本示例将深入探讨Struts2的表单标签使用方法,帮助开发者更好地理解和应用这些标签。 首先,我们来了解一些...
Struts2 标签库(IBM资料)Struts2标签库概述; Struts2数据标签; Struts2控制标签; Struts2表单标签; Struts2非表单标签
4. **数据标签(Data Tags)**:这些标签用于显示数据,如`<s:debug>`用于调试,显示所有ActionContext中的信息,`<s:dump>`用于输出对象的详细信息。 5. **国际化标签(Internationalization Tags)**:如`...
本文将深入解析Struts2中的常用标签,这些标签在实际开发中非常实用,对于初学者理解并掌握Struts2的运行机制至关重要。 首先,我们需要了解Struts2标签库的主要组成部分,它们分为Action、Display、Logic、Field和...
Struts2标签库是Java开发Web应用程序时常用的一个强大工具,尤其在构建MVC(Model-View-Controller)架构的应用程序中发挥着重要作用。Struts2框架提供了丰富的自定义标签库,极大地简化了视图层的开发,使得开发者...
这个实例项目展示了如何在实际应用中结合Struts2、国际化、类型转换以及Struts2自定义标签来实现用户管理功能,包括用户数据的增删改查。 首先,我们来看Struts2的核心概念。Struts2作为MVC框架,它负责处理HTTP...