- 浏览: 345274 次
- 性别:
- 来自: 成都
-
文章分类
- 全部博客 (97)
- 搜索引擎 (9)
- JAVA基础知识 (7)
- Struts (13)
- Spring (1)
- Hibernate (0)
- iBATIS (2)
- ExtJs (10)
- AJAX (0)
- Oracle (1)
- MSSQLSERVER (1)
- MySQL (0)
- Prototype (0)
- DWR (0)
- EJB (0)
- J2EE综合 (0)
- 算法 (1)
- WebServices (0)
- JMS (0)
- JavaMail (0)
- JMX (0)
- UML (0)
- Dojo (0)
- Acegi (2)
- 其他Html-XML等 (3)
- CSS (1)
- 其他开源项目 (0)
- 英语 (0)
- Web3D (24)
- FCKeditor (1)
- javascript 特效 (2)
最新评论
-
荷戟者:
如何实现的,是否可以想象一点
extjs实现左侧tab -
coconut_zhang:
怎么没人评论,吼吼。。
HTMLParser使用详解(4)- 通过Visitor访问内容 -
Sorry':
JDBC中处理存储过程的结果集的通用流程 -
Sorry':
计划将客户
JDBC中处理存储过程的结果集的通用流程 -
renhongchao:
very good!在csdn也看到相同的文章,莫非是同一人? ...
HTMLParser使用详解(3)- 通过Filter访问内容
有Struts 1.x经验的朋友都知道Action是Struts的核心内容,当然Struts 2.0也不例外。不过,Struts 1.x与Struts 2.0的Action模型很大的区别。
Struts 1.x | Stuts 2.0 | |
接口 | 必须继承org.apache.struts.action.Action或者其子类 | 无须继承任何类型或实现任何接口 |
表单数据 | 表单数据封装在FormBean中 | 表单数据包含在Action中,通过Getter和Setter获取 |
虽然,理论上Struts 2.0的Action无须实现任何接口或继承任何类型,但是,我们为了方便实现Action,大多数情况下都会继承com.opensymphony.xwork2.ActionSupport类,并重载(Override)此类里的String execute()方法。具体的实现,如例1所示:
<% @ taglib prefix = " s " uri = " /struts-tags " %>
< html >
< head >
< title > Hello World! </ title >
</ head >
< body >
< h2 >< s:property value ="message" /></ h2 >
</ body >
</ html >
< action name ="HelloWorld" class ="tutorial.HelloWorld" >
< result > /HelloWorld.jsp </ result >
</ action >
</ package >
在浏览器地址栏中键入http://localhost:8080/Struts2_Action/HelloWorld.action,可以看到如图1所示页面。
图1 HelloWorld输出页面
参考JavaDoc,可知ActionSupport类实现了接口:
- com.opensymphony.xwork2.Action
- com.opensymphony.xwork2.LoaleProvider
- com.opensymphony.xwork2.TextProvider
- com.opensymphony.xwork2.Validateable
- com.opensymphony.xwork2.ValidationAware
- com.uwyn.rife.continuations.ContinuableObject
- java.io.Searializable
- java.lang.Cloneable
默认情况下,当请求HelloWorld.action发生时,Struts运行时(Runtime)根据struts.xml里的Action映射集(Mapping),实例化tutoiral.HelloWorld类,并调用其execute方法。当然,我们可以通过以下两种方法改变这种默认调用。这个功能(Feature)有点类似Struts 1.x中的LookupDispathAction。
- 在classes/sturts.xml中新建Action,并指明其调用的方法;
- 访问Action时,在Action名后加上“!xxx”(xxx为方法名)。
实现方法请参考例2:
在classes/tutorial/HelloWorld.java中加入以下方法:message ="自定义Action调用方法";
return SUCCESS;
}
实现方法一,在classes/sturts.xml中加入下面代码:
<result>/HelloWorld.jsp</result>
</action>
实现方法二,使用http://localhost:8080/Struts2_Action/HelloWorld!aliasAction.action地址来访问HelloWorld Action。
在浏览器地址栏中键入http://localhost:8080/Struts2_Action/AliasHelloWorld.action或 http://localhost:8080/Struts2_Action/HelloWorld!aliasAction.action,可以看到如图2所示页面。
图2 自定义Action调用方法页面
通过上面的两个例子,细心的朋友应该可能会发现classes/tutorial/HelloWorld.java中Action方法(execute和aliasAction)返回都是SUCCESS。这个属性变量我并没有定义,所以大家应该会猜到它在ActionSupport或其父类中定义。没错,SUCCESS在接口com.opensymphony.xwork2.Action中定义,另外同时定义的还有ERROR, INPUT, LOGIN, NONE。
此外,我在配置Action时都没有为result定义名字(name),所以它们默认都为success。值得一提的是Struts 2.0中的result不仅仅是Struts 1.x中forward的别名,它可以实现除forward外的很激动人心的功能,如将Action输出到FreeMaker模板、Velocity模板、JasperReports和使用XSL转换等。这些都过result里的type(类型)属性(Attribute)定义的。另外,您还可以自定义result类型。
下面让我们来做一个Velocity模板输出的例子,首先在classes/struts.xml中新建一个Action映射(Mapping),将其result类型设为velocity,如以下代码所示:<result type="velocity">/HelloWorld.vm</result>
</action>
新建HelloWorld.vm,内容如下所示:
<head>
<title>Velocity</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<h2>Message rendered in Velocity: $message</h2>
</body>
</html>
在浏览器地址栏中键入http://localhost:8080/Struts2_Action/VMHelloWorld.action,页面输出如下图3所示。
图3 HelloWorld.vm的输出页面
要运行例3需要在WEB-INF/lib中添加以下几个包: |
前面,我花了不少的时间讨论Action的输出。我老板有句名言——程序无非就是输入、操作和输出。因此,现在我们要讨论一下输入——表单输入。
使用Struts 2.0,表单数据的输入将变得非常方便,和普通的POJO一样在Action编写Getter和Setter,然后在JSP的UI标志的name与其对应,在提交表单到Action时,我们就可以取得其值。
让我们看一个例子,新建Login Action,它通过Login.jsp的表单获得用户名和密码,验查用户名是否为“max”,密码是否则为“secret”。如果,两者都符合,就在HelloWorld中显示“Welcome, max”,否则显示“Invalid user or Password”。
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>Login</title>
</head>
<body>
<s:form action="Login" method="POST">
<s:textfield name="name" label="User name"/>
<s:password name="password" label="Password"/>
<s:submit value="Submit"/>
</s:form>
</body>
</html>
<result>/HelloWorld.jsp</result>
</action>
运行Tomcat,在浏览器地址栏中键入http://localhost:8080/Struts2_Action/Login.jsp,出现如图4所示页面。
图4 Login.jsp输出页面
分别在User name中输入“max”和“secret”,点击“Submit”按钮,出现如图5所示页面。
图5 Login成功页面
在浏览器地址栏中键入http://localhost:8080/Struts2_Action/Login.jsp,分别在User name中输入“Scott”和“password”,点击“Submit”按钮,出现如图6所示页面。
图6 Login失败页面
Struts 2.0更厉害的是支持更高级的POJO访问,如user.getPassword()。我们可以用另一写法实现例4。首先,将name和password从Login类中分离出来,到新建类User中。这样对我们开发多层系统尤其有用。它可以使系统结构更清晰。
发表评论
-
详解struts2中struts.properties
2007-10-25 00:17 2730Stru ... -
struts2的struts.properties配置文件详解
2007-10-24 23:55 2204struts.action.extension ... -
Struts 2 间接实现零配置
2007-10-19 11:41 1791所谓间接实现零配置,是指只要做些初始化的配置之后,在以后的开发 ... -
Parameters in configuration results
2007-10-10 17:12 1223Parameters in configura ... -
How do we upload files
2007-10-10 16:47 1497xml 代码 How do we upload ... -
display dynamic or static images
2007-10-10 16:38 1641How can we display dynamic or s ... -
Struts2 验证器
2007-10-08 22:30 4374<validators> ... -
初涉Struts 2.0
2007-10-06 09:43 1205初涉Struts 2.0... -
Apache Struts 2 Plugin Registry
2007-10-03 17:25 2159Apache Struts 2 Plugin Registry ... -
Struts 2 官方
2007-10-03 17:22 11425Struts 2 官方: http://struts.apac ... -
struts2与spring2集成
2007-10-03 17:12 1261在Eclipse下建立一个Dynamic Web Applic ... -
struts2的struts.properties配置文件详解
2007-10-03 17:02 1180struts.action.extension ... -
Struts 2与AJAX(第三部分)
2007-10-03 16:53 1515Struts 2与AJAX(第三部分 ... -
Struts 2与AJAX(第二部分)
2007-10-03 16:52 1656在上一篇文章《Struts 2与AJAX(第一部分)》,我已经 ... -
Struts 2与AJAX(第一部分)
2007-10-03 16:51 1674Struts 2与AJAX(第一部分) 在当今——Web 2 ... -
struts2表单标签
2007-10-03 16:48 1639Form Tags ... -
Struts2 with logon
2007-10-03 16:45 1170关于此工程中的所有设置是承接前一篇文章Struts2介绍之使用 ... -
Struts2介绍之使用链接标签
2007-10-03 16:42 1874Web应用区别于普通的站点之处在于Web应用可以创建一个动态的 ... -
Strus 2的新表单标志的使用
2007-10-03 16:35 1172Struts 2为大家提供了不少常用的很酷的表单标志,简化了我 ... -
在Struts 2中实现文件上传
2007-10-03 16:33 1245实现原理 Struts 2是通过Commons FileUpl ...
相关推荐
03 Struts 2.0的Action讲解 04 在Struts 2.0中国际化(i18n)您的应用程序 05 转换器(Converter)——Struts 2.0中的魔术师 06 在Struts 2.0中实现表单数据校验(Validation) 07 Struts 2的基石——拦截器...
Struts 2.0的Action讲解 在Struts 2.0中国际化(i18n)您的应用程序 转换器(Converter)——Struts 2.0中的魔术师 在Struts 2.0中实现表单数据校验(Validation) Struts 2的基石——拦截器(Interceptor) 在...
Struts2.0是Java Web开发中的一个强大框架,它基于Model-View-Controller(MVC)设计模式,为开发者提供了构建可维护性高、结构清晰的Web应用程序的工具。这个"Struts2.0视频教程+struts2.0中文教程"包含的资源旨在...
本详细讲解将涵盖四个关键主题:拦截器、标签、配置详解以及Struts 2.0的基础知识。 **1. Struts 2.0 拦截器** 拦截器是Struts 2的核心特性之一,它们类似于AOP(面向切面编程)的概念,可以实现在动作执行前后插入...
下面,我们将详细讲解Struts 2.0的关键知识点。 1. **Struts 2.0架构** Struts 2.0基于Model-View-Controller(MVC)设计模式,提供了一种解耦应用程序逻辑、视图和控制的结构。它采用了拦截器模型来处理请求,...
在深入讲解Struts 2.0之前,我们先了解MVC模式:模型负责业务逻辑,视图负责显示数据,控制器处理用户请求并协调模型和视图。 **Struts 2.0的核心特性:** 1. **拦截器(Interceptors)**:Struts 2.0引入了拦截器...
本教程将详细讲解如何在Myeclipse集成开发环境中配置Struts2.0,同时结合JDK1.6和Tomcat6.0服务器来创建一个完整的开发环境。 首先,确保你已经安装了JDK1.6。Java Development Kit (JDK) 是开发和运行Java应用程序...
03 Struts 2.0的Action讲解 04 在Struts 2.0中国际化(i18n)您的应用程序 05 转换器(Converter)——Struts 2.0中的魔术师 06 在Struts 2.0中实现表单数据校验(Validation) 07 Struts 2的基石——拦截器...
1. **Struts2.0简介**:讲解Struts2.0的历史、设计理念和核心组件,对比与前一代Struts1.x的区别,以及为什么选择Struts2.0作为开发框架。 2. **环境搭建**:指导如何配置开发环境,包括JDK、Apache Tomcat服务器、...
这份文档通常会涵盖Action、拦截器(Interceptor)、结果(Result)和配置文件(struts.xml)等内容,是了解Struts2.0的第一步。此外,它可能还会讲解Struts2.0如何与Spring、Hibernate等其他框架集成,以实现更高效...
课程中可能会详细讲解Struts2.0的配置文件,如struts.xml。这个文件用于定义应用的Action(动作)和Result(结果),以及它们之间的映射关系。配置还包括过滤器设置,如.struts2-convention-plugin,它允许使用约定...
首先,`Struts2.0中文教程.chm`和`Struts2入门2.pdf`、`Struts2入门V3.0.pdf`是入门教程,它们通常会从基础概念开始讲解,如Struts2的核心组件、Action类、Result类型、拦截器等,并逐步深入到实际开发中的应用,如...
本教程的CHM文件将涵盖这些基础知识,并深入讲解Struts2.0的过滤器、插件机制、国际化支持、异常处理等方面。通过学习,你将了解如何使用Struts2.0进行模块化开发,如何组织Action、Service、DAO层,以及如何结合...
本文档主要针对"struts2.0常用标签"进行详细讲解,帮助开发者更好地理解和使用这些标签。 1. **ognl表达式**:Struts2中的标签大部分都基于OGNL(Object-Graph Navigation Language)表达式,它用于在视图层和模型层...
Struts2.0的核心组件包括Action、Result、Interceptor等。Action是业务逻辑处理的中心,负责接收HTTP请求并调用相应的服务方法。Result则是将Action执行的结果返回给客户端,它可以是简单的视图,如JSP页面,也可以...
"struts2.0-1基本入门.doc"和"Struts2.0的各种配置详解.doc"将详细介绍如何在struts.xml文件中配置Action、Result和Interceptor。Action配置包括指定Action类、方法和映射URL,Result则定义了请求成功后的跳转路径,...
此外,文档还会讲解配置文件(struts.xml)的编写,这是配置Struts2.0行为的关键,包括Action映射、结果类型设定、拦截器链定义等。 其次,标签文档是前端展示的重要部分。Struts2.0提供了一套强大的标签库,简化了...