`
zhangzuanqian
  • 浏览: 270003 次
  • 来自: ...
社区版块
存档分类
最新评论

struts2学习:配置篇之namespace

 
阅读更多

namespace单独拉出来讲一方面是因为它实际上不是一个element,而只是一个attribute,前面已经说了,它是package的一个attribute;另外一方面是因为这个属性是我接触Struts2的时候第一个研究的,印象很深,鉴于这两个原因我决定单独说一下它。

struts1中是没有命名空间这个概念的,通过命名空间我们可以将所有的action配置划分为一个个逻辑单元,每个单元都有它自己的标识前缀。命名控件可以避免action命名的冲突。每个命名空间下有可以有一个叫做”help”action,并且有着各自不同的实现,当然在同一个命名空间下最好是不要出现两个名字一样的action。当命名空间的前缀出现在浏览器的URI中时,标签会意识到命名空间,因此我们不必将命名空间嵌套在表单和链接中。

默认的命名空间是空字符串””,也就是不设置namespace属性时候的命名空间。我们在匹配一个action的时候,先到它指定的命名空间中去找,如果没有再到这个默认的命名空间中去找。Struts2还支持根命名空间(“/”),当一个request直接请求context path下面的资源时,struts2会首先到跟命名空间下去寻找匹配的action,例如请求是http://server/myapp/bar.action,那么我们首先会去”/”命名空间下去寻找这个action,下面给给出了一个namespace的样本:

<package name="default">
    <action name="foo" class="mypackage.simpleAction>
        <result name="success" type="dispatcher">greeting.jsp</result>
    </action>
    <action name="bar" class="mypackage.simpleAction">
        <result name="success" type="dispatcher">bar1.jsp</result>
    </action>
</package>
<package name="mypackage1" namespace="/">
    <action name="moo" class="mypackage.simpleAction">
        <result name="success" type="dispatcher">moo.jsp</result>
    </action>
</package>
<package name="mypackage2" namespace="/barspace">
    <action name="bar" class="mypackage.simpleAction">
        <result name="success" type="dispatcher">bar2.jsp</result>
    </action>
</package>

关于如何从URI映射到一个action中我做了一些测试,发现可以遵循如下的一条规则:

1.获得请求路径的URI,例如url是:http://server/myapp/path1/path2/path3/test.action

2.首先寻找namespace/path1/path2/path3package,如果存在这个package,则在  

   这个package中寻找名字为testaction,若找到则执行,否则报错;如果不存在这

   package则转步骤3

3.寻找namespace/path1/path2package,如果存在这个package,则在这个package  

   中寻找名字为testaction,若找到则执行,否则报错;如果不存在这个package

   则转步骤4

4.寻找namespace/path1package,如果存在这个package,则在这个package中寻

   找名字为testaction,若找到则执行,否则报错;如果仍然不存在这个package

   就去namaspace为空字符串的package下面去找名字为testaction,如果还是找不

   到,页面提示找不到action

这里有几点特殊的情况要说明一下,如下所示:

1.如果匹配到了多个package,比如上述流程中有多个namespace/path1/path2/path3

package,此时按照package出现的顺序从后向前的顺序查找action,直至找完为止。

2.如果在一个package中有多个name属性相同的action,那么执行追有一个action。比如上述流程中,有一个namespace/path1/path2/path3package,它里面含有多个名字为testaction,那么选择最后一个执行。

    上面这几点是我通过多次测试总结出来的,不知道是否概括到了所有可能的情况,纰漏之处,还请指正。

 

转自:http://blog.csdn.net/cmtobby/article/details/1775190

分享到:
评论

相关推荐

    eclipse 配置struts2

    接着,我们将进行以下步骤来配置Struts2: 1. **添加Struts2库** - 下载Struts2的核心库,包括struts2-core、struts2-convention-plugin等依赖包。 - 在Eclipse中,右键点击项目 -&gt; Build Path -&gt; Configure ...

    struts2学习笔记二(第2讲.Struts2入门与配置续)

    本篇学习笔记将深入探讨Struts2的入门与配置,继续上一讲的内容。 首先,Struts2的基础入门涉及到以下几个核心概念: 1. **Action类**:在Struts2中,业务逻辑通常封装在Action类中。Action类是处理用户请求的主体...

    struts2入门学习配置

    本篇将深入讲解Struts2的基础知识和配置过程,帮助初学者快速入门。 首先,理解Struts2的核心概念是至关重要的。Struts2框架基于拦截器模型,通过一系列拦截器堆栈来处理HTTP请求,这些拦截器负责执行如验证、异常...

    跟我一起学struts2之一:环境搭建篇

    本篇文章将带你逐步学习如何搭建Struts2的基础开发环境,让你顺利入门。 首先,我们需要了解Struts2的核心组件和工作原理。Struts2框架主要由以下部分组成: 1. **FilterDispatcher**:这是Struts2的前端控制器,...

    Netbeans下配置struts2插件

    本篇文章将详细介绍如何在NetBeans环境下配置Struts2插件,以便更好地利用该框架进行开发。 首先,我们需要理解Struts2的核心概念。Struts2框架基于Action和Result,通过DispatcherServlet进行请求分发。Action类...

    Struts2_入门篇_基本配置_通配符_参数注入_内置对象获取等。。。

    本入门篇主要涵盖了Struts2的基础配置、通配符使用、参数注入以及内置对象的获取,非常适合初学者进行学习。 1. **基础配置**:在Struts2中,基础配置主要通过`struts.xml`文件完成。这个文件定义了Action(动作)...

    Struts2学习笔记(一) 环境的搭建与HelloWorld程序

    5. **配置Struts2**:在src/main/resources目录下创建`struts-default.xml`和`struts.xml`文件。在`struts-default.xml`中引入Struts2的默认配置。在`struts.xml`中配置你的Action,如下: ```xml &lt;!DOCTYPE ...

    【张冰Struts2学习笔记】0102_第一个Struts2实例

    这篇学习笔记将带你入门Struts2,通过创建第一个实例来理解其核心概念和基本配置。 首先,了解Struts2框架的结构至关重要。Struts2的核心组件包括Action、Result、Interceptor等,它们协同工作,处理HTTP请求并呈现...

    struts2基础知识

    本篇文章将深入探讨Struts2的基础知识,包括其核心概念、工作原理、主要特性以及如何创建一个简单的Struts2应用。 首先,我们来理解一下Struts2的核心概念。Struts2框架整合了Struts1和WebWork的优势,提供了一个...

    Struts2学习初设系列(一)之环境搭建

    本篇文章将围绕"Struts2学习初设系列(一)之环境搭建"这一主题,详细介绍如何配置和建立一个基本的Struts2开发环境。 首先,我们需要了解Struts2的基础知识。Struts2的核心是Action,它负责处理HTTP请求并返回响应...

    struts2.0学习笔记

    本篇学习笔记将深入探讨Struts2.0的核心概念和配置,帮助你理解和掌握这个框架。 **一、Struts2的作用** Struts2的主要目标是提供一种结构化的开发方式,它整合了请求处理、视图展示和业务逻辑的交互。通过使用...

    Eclipse Struts基本配置步骤

    接下来,我们将按照以下步骤在Eclipse中配置Struts2: 步骤1:创建Java Web项目 在Eclipse中,选择"File" -&gt; "New" -&gt; "Dynamic Web Project",填写项目名并配置相关设置,如目标运行环境。 步骤2:添加Struts2库 ...

    Struts 2 自学之路: 1 准备工作及helloworld

    本篇文章将带你踏上Struts 2的自学之旅,首先从准备工作开始,然后通过一个简单的“Hello, World”程序来熟悉基本操作。 准备工作: 1. **环境配置**:首先确保你的计算机上已经安装了Java Development Kit (JDK)...

    struts2与Ext4.0的json交互

    这篇博客文章“Struts2与Ext4.0的json交互”可能会探讨如何在Struts2中配置和使用JSON来与前端的Ext4.0框架进行通信。 首先,我们来看Struts2中的JSON插件。这个插件允许我们在Action类中直接返回JSON对象,无需...

    struts2基础

    本篇文章将深入探讨如何在IntelliJ IDEA开发环境中,利用Maven构建一个基本的Struts2项目。 首先,我们需要理解Maven,它是一个项目管理和综合工具,可以帮助我们管理项目的构建、依赖关系和配置。在IntelliJ IDEA...

    Struts2入门之HelloWorld

    本篇文章将带你入门Struts2,通过创建一个简单的"HelloWorld"示例来理解其核心概念。 首先,了解Struts2框架的基本组成: 1. **Action类**:这是业务逻辑的入口点,处理用户请求并返回结果。在我们的"HelloWorld...

    自定义拦截器struts2源代码

    本篇将深入讲解如何在Struts2中自定义拦截器,并通过提供的源代码进行分析。 拦截器是Struts2框架的核心组件之一,它允许我们在请求到达Action之前或离开Action之后执行一些额外的操作,如日志记录、权限验证、性能...

    struts2文件下载

    这篇博客文章可能探讨了在Struts2环境下处理文件下载的步骤和技术。 在Struts2中,`DownloadAction.java`很可能是一个关键的控制器类,它负责处理用户请求并提供文件下载。这个类通常会包含以下方法: 1. **预处理...

    第一个Struts2程序中遇到的若干问题及解决方法

    在搭建Struts2环境时,确保正确地在`web.xml`文件中配置了Struts2的核心过滤器(`org.apache.struts2.dispatcher.FilterDispatcher`或`org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter`,在...

    Struts2经典笔记

    这篇经典笔记主要涵盖了Struts2的核心概念,包括过滤器配置、命名空间、动作配置以及Action路径的问题。 首先,配置Struts2过滤器是启动框架的关键步骤。在`web.xml`文件中,你需要定义一个名为`struts2`的过滤器,...

Global site tag (gtag.js) - Google Analytics