`
haohao-xuexi02
  • 浏览: 215502 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

struts2 namespace chain

阅读更多
首先介绍一下namespace
     Struts2的配置文件struts.xml当中有一个元素package ,这个元素有一个属性是 namespace。这个属性的作用是什么呢?




1. 确定该包内的action URL路径
例如:

Java代码
1.<package name="rodom"  namespace="/templates" extends="struts-default">  
2.         <action name="testAction" class="test.web.TestAction">  
3.            <result>test.jsp</result>  
4.         </action>  
5.</package> 
<package name="rodom"  namespace="/templates" extends="struts-default">
         <action name="testAction" class="test.web.TestAction">
  <result>test.jsp</result>
         </action>
</package>假设应用contextpath名字为tianxia,应用服务器端口号为8080若在浏览器中访问testAction此时URL的路径为 http://localhost:8080/tianxia/ templates/ testAction.action

在配置namespace时注意的是在templates名字前加“/”


2. 确定返回jsp或ftl等文件的物理路径
如上面的配置test.jsp需放在templates目录下struts才能够找到
若想访问应用根目录下的文件例如index.jsp则如下配置:
<result>/index.jsp</result>


接下来讨论一下<result type=”chain”>的配置
当action结果调用另一个action时result的类型设置为chain,则表示被调用的action会保持调用action的属性值。
Type=“chain”时 result标签的参数可以有下面4个
       • actionName
       • namespace
       • method
       • skipActions
举个例子:
配置如下:

Java代码
1.<action name="fm" class="test.web.SimpleAction">  
2.            <result type="chain">  
3.                <param name="actionName">chaintest</param>  
4.                <param name="method">look</param>  
5.            </result>  
6.</action>  
7.<action name="chaintest" class="test.web.ChainAction">  
8.        <result type="freemarker">test.ftl</result>  
9.</action> 
<action name="fm" class="test.web.SimpleAction">
  <result type="chain">
  <param name="actionName">chaintest</param>
  <param name="method">look</param>
  </result>
</action>
<action name="chaintest" class="test.web.ChainAction">
  <result type="freemarker">test.ftl</result>
</action>

Java代码
1.public class SimpleAction extends ActionSupport{  
2.    private String message;  
3.public String getMessage() {  
4.        return message;  
5.    }  
6.    public void setMessage(String message) {  
7.        this.message = message;  
8.    }  
9.public String execute()  
10.    {  
11.        message = "hello ";  
12.    }  
13.} 
public class SimpleAction extends ActionSupport{
private String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String execute()
{
message = "hello ";
}
}

Java代码
1.public class ChainAction extends ActionSupport{  
2.    private String message;  
3.public String getMessage() {  
4.        return message;  
5.    }  
6.    public void setMessage(String message) {  
7.        this.message = message;  
8.    }  
9.public String execute()  
10.    {  
11.        message += " tianxia!";  
12.        System.out.println(message);  
13.    }  
14.} 
public class ChainAction extends ActionSupport{
private String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String execute()
{
message += " tianxia!";
System.out.println(message);
}
}
当调用”fm”这个action返回SUCCESS时fm会调用test.web.ChainAction类的look()方法
控制台上会打印 hello tianxia!这说明SimpleAction的message被保存到ChainAction。

此处需要注意的是,
1.一个Action调用其它Action用chain的方式,调用者中的集合类中的元素依然会保存到被调用者执行。
2. <result type="chain"> chaintest! look</result>不能访问到test.web.ChainAction的look方法

原文:http://mike-zhangp.iteye.com/blog/290816
分享到:
评论

相关推荐

    struts2学习心得

    13. **表单提交与Action的关联**:在使用Struts2进行表单处理时,必须确保表单的`action`属性正确指向目标Action,且Action的`namespace`和`name`属性与配置一致,否则会导致请求无法正常路由到指定的Action。...

    struts 2 笔记 struts2 基础

    Namespace是Struts 2中的一个概念,用于分隔不同的功能模块或操作。每个Action都可以关联一个或多个Namespace,它决定了Action的访问路径。默认Namespace为空,表示所有路径都可访问。例如,`/`, `/xxx`, `/xxx/yyy`...

    struts2学习笔记

    Struts2支持多种结果类型,如`dispatcher`、`redirect`、`chain`等,其中: - `dispatcher`:用于转向到另一个页面。 - `redirect`:用于重定向到另一个页面或Action。 - `chain`:用于调用另一个Action。 例如: ...

    牧紫小岩的Struts2学习笔记

    Struts2支持多种结果类型,包括`dispatcher`、`redirect`、`chain`和`redirectAction`,每种类型都有其特定用途,如重定向、转发或链式调用等。全局结果集`global-result`则允许开发者为框架设置默认的结果映射,...

    struts2学习总结

    &lt;package name="struts2" namespace="/test" extends="struts-default"&gt; &lt;result&gt;/path/to/result.jsp ``` - `&lt;package&gt;`:定义了一个包,其中 `name` 属性标识了包名,`namespace` 定义了命名空间,`...

    Struts2技术总结

    6. **灵活的结果类型:** Struts2支持多种结果类型,包括dispatcher(转发)、redirect(重定向)、chain(链式调用)等,使得页面跳转更加灵活多样。 #### 二、Struts2项目搭建与配置 要构建一个基于Struts2的Web...

    深入浅出Struts2(附源码)

    本书是广受赞誉的Struts 2优秀教程,它全面而深入地阐述了Struts 2的各个特性,并指导开发人员如何根据遇到的问题对症下药,选择使用最合适的特性。作者处处从实战出发,在丰富的示例中直观地探讨了许多实用的技术,...

    struts 2 学习笔记

    2. **包(Package)和命名空间(Namespace)**:包用于组织和分类Action,避免重名冲突。命名空间用于进一步区分Action,它可以为空或包含多个Action,处理特定范围内的请求。 3. **Action的实现方式**:有三种主要...

    struts2基本知识点

    Struts2是一个基于MVC(Model-View-Controller)设计模式的开源JavaEE框架,用于构建企业级Web应用程序。在了解Struts2的基本知识点之前,我们先来回顾一下MVC模式的不同架构: 1) Model1架构模式:在这个模式中,...

    Struts2学习笔记

    - **Result类型**:Struts2提供了多种类型的结果集,包括`dispatcher`、`redirect`、`chain`等。 - **全局结果集**:定义在`&lt;package&gt;`级别的结果集,适用于包内的所有Action。 - **动态结果集**:通过`...

    基于struts2的文件上传+过滤器

    &lt;package name="default" namespace="/" extends="struts-default"&gt; &lt;interceptor name="fileUpload" class="org.apache.struts2.interceptor.FileUploadInterceptor"/&gt; &lt;!-- 其他拦截器 --&gt; ...

    struts2注解配置全面解析

    ### Struts2注解配置全面解析 #### 一、引言 随着Struts2框架的不断更新和发展,很多开发者在尝试使用注解方式进行配置时往往会遇到不少难题。尤其是在使用Struts2.1及以上版本时,由于大部分教程和资料仍然基于...

    Struts2随手笔记

    Struts2是一个强大的Java web应用程序框架,用于构建MVC(模型-视图-控制器)架构的应用。这个框架简化了Web应用开发,提高了代码的可维护性和可扩展性。以下是对Struts2框架核心概念和特性的一些详细说明: 1. **...

    struts2中的url

    ### Struts2中的URL配置与处理机制 #### 引言 在Web开发中,URL的配置及处理一直是开发者关注的重点之一。特别是在Struts2框架中,如何高效且准确地配置URL,以确保程序能正确地识别用户请求并作出响应,是一项...

    struts2相关

    &lt;package name="default" namespace="/" extends="struts-default"&gt; &lt;result name="success"&gt;/WEB-INF/views/hello.jsp &lt;/struts&gt; ``` - **关键元素说明**: - `&lt;package&gt;`:定义一个包,可以包含多个 ...

Global site tag (gtag.js) - Google Analytics