一、dispatcher
(1)为缺省的result类型,一般情况下我们在struts.xml会这么写:
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 三种。这三...
1. struts2-core-2.3.4.1.jar:这是Struts2的核心库,包含了框架的基础功能,如Action类、Result类型、拦截器、配置管理等。它是所有Struts2应用的基础,没有它,其他组件无法正常工作。 2. xwork-core-2.3.4.1.jar...
本压缩包包含了13个Struts2框架中常用的类包,对于初学者和学生来说,掌握这些类包将对理解Struts2的工作原理及其核心功能大有裨益。 1. **struts2-core**: 这是Struts2的核心库,包含了框架的基础组件。如Action、...
`struts2常用包.zip`包含了Struts2框架运行所必需的一些核心库和其他支持库。下面将详细介绍这些文件及其在Struts2中的作用: 1. `struts2-core-2.3.1.2.jar`:这是Struts2的核心库,包含了框架的主要组件和功能。...
8. **结果类型(Result Type)**:Struts2提供了多种内置的结果类型,如dispatcher、stream、redirect等,用于控制请求的转发或重定向。 9. **动作(Action)**:Action是业务逻辑的载体,通常对应一个具体的用户操作。...
在"STRUTS2常用JAr"这个压缩包中,我们通常会看到以下关键的JAR文件: 1. **struts2-core.jar**:这是Struts2框架的核心库,包含了Action、Interceptor、Result以及其他核心组件的实现。它提供了控制器层的主要功能...
总结来说,Struts2的常用包提供了一整套完整的解决方案,涵盖了Web应用开发的各个方面,从基础的请求处理到复杂的业务逻辑控制,再到前端展示和测试支持,都有一系列的组件和插件可以使用。这极大地提高了开发效率,...
这个“Struts2常用jar包.rar”文件包含了运行Struts2应用所需的核心库和依赖,方便开发者直接放入项目的lib目录中使用。下面将详细介绍Struts2框架的关键组件和它们在实际开发中的作用。 1. **核心组件**: - `...
5. Action执行完毕,返回一个Result类型,Struts2根据这个结果类型决定如何处理响应,如跳转页面或直接输出数据。 6. 最后,服务器将响应返回给浏览器,显示结果。 三、在Eclipse中导入Struts2的jar包 1. 首先,...
4. **javassist-3.11.0.GA.jar**:Javassist是一个Java字节码操作和分析框架,Struts2使用它来动态地修改或生成类,例如在运行时实现方法拦截。 5. **log4j-1.2.17.jar**:这是一个流行的日志记录框架,Struts2使用...
在使用Struts2时,了解并掌握其常用的类库至关重要。以下是一些核心的Struts2类库及其作用的详细解释: 1. **Struts2 Core Library**:这是Struts2的核心库,包含了框架的基本组件,如Action、Result、Interceptor...
Struts2支持多种类型的`Result`,每种类型都有其独特的功能和应用场景: ##### 1. **dispatcher** `dispatcher`是最常用的类型之一,它通过调用`RequestDispatcher`类的`forward()`方法或`include()`方法将请求转发...
6. **结果类型(Result Type)**:Struts2支持多种结果类型,如`dispatcher`(转发到JSP页面)、`stream`(下载文件)、`redirect`(重定向URL)等。通过配置不同的结果类型,可以灵活控制页面跳转和响应方式。 7. ...
本文将深入探讨Struts2配置文件中`result`的配置方法及其不同的类型,并通过具体的代码示例来帮助读者更好地理解和掌握这一知识点。 #### 1. 全局结果配置 (Global Results) 全局结果配置是Struts2提供的一种高效...
总的来说,Struts2例子是一个实践型的学习资源,帮助开发者熟悉Struts2框架的工作原理和使用方式,为构建实际的Web应用程序打下基础。通过实际操作,你可以更深入地理解MVC模式以及Struts2如何协调模型、视图和控制...