一、dispatcher
(1)为缺省的result类型,一般情况下我们在struts.xml会这么写:
<result name="success">/main.jsp</result>
以上写法使用了两个默认,其完整的写法为:
<result name="success" type="dispatcher">
<param name="location">/maini.jsp</param>
</result>
第一个默认:type="dispatcher";第二个默认:设置的为location参数,location只能是页面,不能是另一个action(可用type="chain"解决)。
(2)实现方式
从doExecute方法看出,有三个出口(finalLocation为要跳转的地址):
-
pageContext.include(finalLocation);
-
dispatcher.forward(request, response); (dispatcher是根据finalLocation创建的)
-
dispatcher.include(request, response);
而我们知道,forward与include都是转发到context内部的资源。
二、redirect
(1)可以重定向到一个页面,另一个action或一个网址。
<result name="success" type="redirect">aaa.jsp</result>
<result name="success" type="redirect">bbb.action</result>
<result name="success" type="redirect">www.baidu.com</result>
(2)实现方式:
查看doExecute方法,只有一个出口:
response.sendRedirect(finalLocation);
sendRedirect是重定向,是重新产生一个HTTP请求到服务器,故重定向后其原来所在的action上下文就不可用了。
三、chain
(1)主要用于把相关的几个action连接起来,共同完成一个功能。
<action name="step1" class="test.Step1Action">
<result name="success" type="chain">step2.action</result>
</action>
<action name="step2" class="test.Step2Action">
<result name="success">finish.jsp</result>
</action>
(2)实现方式:
查看execute()方法,主要思想如下:
// 根据Action名称finalActionName及要调用的方法finalMethodName来new一个代理对象proxy,并执行之
proxy = actionProxyFactory.createActionProxy(finalNamespace,
finalActionName, finalMethodName, extraContext);
proxy.execute();
(3)多个action间数据的传递
主要有两种方式:
1。由于处于chain中的action属于同一个http请求,共享一个ActionContext,故可以在上下文中获取,在页面上可以直接使用。手动获取的方法如下:
HttpServletRequest request = ServletActionContext.getRequest();
String s=(String)request.getAttribute("propName");
2。实现ModelDriven接口
在Step1Action中,加入getModel:
public Object getModel() {
return message;
}
在Step2Action中,加入setModel:
public void setModel(Object o){
System.out.println("message is:"+o);
}
注意,setModel的调用先于execute()方法后于构造方法。
分享到:
相关推荐
Struts2 中常用 Result 类型(type)的用法和出现的问题 Struts2 中的 Result 类型(type)是指在 Struts2 框架中用于确定 action 执行结果的方式。常用的 Result 类型有 dispatcher、redirect 和 chain 三种。这三...
在使用Struts2时,了解并掌握其常用的类库至关重要。以下是一些核心的Struts2类库及其作用的详细解释: 1. **Struts2 Core Library**:这是Struts2的核心库,包含了框架的基本组件,如Action、Result、Interceptor...
在Struts2中,它通常用于视图层的渲染,将数据模型与模板结合,生成最终的用户界面。 4. struts2-dojo-plugin-2.3.4.1.jar:这个插件提供了对Dojo JavaScript库的支持,帮助开发者在Struts2应用中集成丰富的客户端...
OGNL表达式允许动态访问对象属性,是Struts2中数据绑定的关键。 4. **freemarker**: Freemarker是一个模板引擎,常用于生成HTML视图。Struts2支持多种视图技术,FreeMarker是其中一种,允许开发者通过简单的模板...
下面将详细介绍这些文件及其在Struts2中的作用: 1. `struts2-core-2.3.1.2.jar`:这是Struts2的核心库,包含了框架的主要组件和功能。它提供了Action、Result、Interceptor等核心概念,使得开发者可以通过定义...
### Struts2中的Result与Type详解 #### 一、引言 在Struts2框架中,`Result`和`Type`是两个非常重要的概念。它们主要用于控制Action执行完毕后页面的跳转方式以及如何处理Action返回的结果。通过合理配置`Result`与...
Struts2中的`result`配置是框架的核心特性之一,它提供了灵活的页面跳转机制。通过合理地使用全局结果配置和具体的Action结果配置,可以大大简化开发过程,提高代码的复用性和可维护性。此外,掌握不同结果类型的...
通过查阅API,开发者可以了解如何使用Struts2提供的各种组件,例如ActionSupport、Result、Interceptor等,以及它们的常用属性和方法。 “Struts 2权威指南基于WebWork核心的MVC开发(免费阅读1-3章).rar”这本书的...
7. **ognl-3.0.6.jar**:Object-Graph Navigation Language (OGNL) 是Struts2中的表达式语言,用于访问和操作对象属性,它是Struts2中数据绑定和方法调用的基础。 8. **commons-io-2.0.1.jar**:Apache Commons IO...
总结来说,Struts2的常用包提供了一整套完整的解决方案,涵盖了Web应用开发的各个方面,从基础的请求处理到复杂的业务逻辑控制,再到前端展示和测试支持,都有一系列的组件和插件可以使用。这极大地提高了开发效率,...
在Struts2中,通常我们会创建一个数据库连接类,如`DBcon`,它包含了获取数据库连接的方法。这个类通常使用JDBC(Java Database Connectivity)API,通过加载数据库驱动并调用`Connection`对象的方法来建立与数据库...
2. **Struts2 JSP标签库**:`struts2-convention-plugin.jar`和`struts2-jsp-plugin.jar`提供了与JSP集成的支持,允许开发者在JSP页面中使用Struts2的标签来简化视图层的开发,如`s:property`、`s:form`、`s:action`...
2. 在struts.xml中配置Action,包括Action类、方法映射和结果类型。 3. 创建视图文件,如JSP或Freemarker模板,用于展示数据。 4. 编写相应的JSP或Freemarker标签来绑定Action中的数据。 通过以上步骤,你可以开始...
4. **ognl.jar**:Object-Graph Navigation Language(OGNL)是Struts2中的表达式语言,用于在Action对象和视图之间传递数据。ognl.jar提供了OGNL的解析和执行支持。 5. **struts2-convention-plugin.jar**:这是一...
- `ognl.jar`:Object-Graph Navigation Language(OGNL)是Struts2中的默认表达式语言,用于在Action对象和JSP视图之间传递数据。 - `freemarker.jar`或`struts2-freemarker-plugin.jar`:FreeMarker是一个模板...
2. **Struts2 Core**: `struts2-core-2.3.34.jar`是Struts2的核心库,包含了Struts2框架的主要组件,如拦截器(Interceptors)、结果类型(Result Types)、插件架构(Plugin Architecture)等。拦截器是Struts2实现...
- **优势**:使用 Struts2 可以显著提高开发效率,因为它能够处理很多基础任务,如数据接收、类型转换、验证等。 **1.2 Struts2 架构** - **MVC 架构**:Struts2 采用经典的 MVC 架构,分为模型(Model)、视图(View)...
在Struts2中,这些组件常被用作辅助工具,提升代码的效率和可读性。 在Struts2框架中,有几个关键的JAR文件值得关注: 1. **struts2-core**: 这是Struts2的核心库,包含Action、Result、Interceptor等核心组件的...
Struts2是一个强大的MVC(Model-View-Controller)框架,广泛应用于Java Web开发中...通过这个练习,初学者不仅能熟悉Struts2的基本架构,还能掌握实际开发中的常用技巧,为进一步深入学习和应用Struts2打下坚实基础。