`

关于struts.xml中的namespace的一些疑问

阅读更多

     根据struts reference中所说的

Namespaces are not a path!

Namespace are not hierarchical like a file system path. There is one namespace level. For example if the URL /barspace/myspace/bar.action is requested, the framework will first look for namespace /barspace/myspace. If the action does not exist at /barspace/myspace, the search will immediately fall back to the default namespace "". The framework will not parse the namespace into a series of "folders". In the Namespace Example, the bar action in the default namespace would be selected.

 

   但是我在实践中发现如果请求http://localhost:8080/StrutsTest/RefLink/deap/login.action,这样的url,我的struts.xml中:

 

<package name="TestNamespace2" extends="struts-default" namespace="">
      <action name="login" class="com.struts2.test.LoginDefault">
           <result name="got">/login.jsp</result>
      </action>
    </package>
   
  
     <package name="TestNamespace4" extends="struts-default" namespace="/RefLink">
      <action name="login" class="com.struts2.test.LoginTest">
           <result name="got">/login.jsp</result>
      </action>
    </package>
   
     <package name="TestNamespace3" extends="struts-default" namespace="/RefLink/deap/leaf">
      <action name="login" class="com.struts2.test.LoginLeaf">
           <result name="test">/login.jsp</result>
      </action>
    </package>

 

如果按照reference所说的应该是找不到对应的namespace后,直接查找namespace为“”的,但是我实际试验中发现它调用LoginTest,这个情况和wdl13的http://wdl123.iteye.com/blog/340709所说的一样,难道reference错了,还是我的英语有问题

 

 

明白了,struts的寻找方法是这样的:引自wdl13的http://wdl123.iteye.com/blog/340709

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

2.首先寻找namespace为/path1/path2/path3的package,如果存在这个package,则在这个package中寻找名字为test的action,若找到则执行,否则报错;如果不存在这个package则转步骤3;
//问题的关键在这里:如果在寻找namespace的时候,没能找到符合的namespace,例如/path1/path2/path3,则一切如wdl123所写的,逐次往上目录当做namespace找,但是一旦存在/path1/path2/path3这样的namespace,那么如果在这个namespace下没能找到test.action,则他不会再逐次往上级目录匹配namespace,而是直接转向了namespace为""的去寻找action。
3.寻找namespace为/path1/path2的package,如果存在这个package,则在这个package中寻找名字为test的action,若找到则执行,否则报错;如果不存在这个package则转步骤4;

4.寻找namespace为/path1的package,如果存在这个package,则在这个package中寻找名字为test的action,若找到则执行,否则报错;

如果仍然不存在这个package,就去namaspace为空字符串的package下面去找名字为test的action,如果还是找不到,页面提示找不到action。

 

 

 

更新后的<package name="TestNamespace2" extends="struts-default" namespace="">
      <action name="login" class="com.struts2.test.LoginDefault">
           <result name="got">/login.jsp</result>
      </action>
    </package>
   
  
     <package name="TestNamespace4" extends="struts-default" namespace="/RefLink">
      <action name="login" class="com.struts2.test.LoginTest">
           <result name="got">/login.jsp</result>
      </action>
    </package>
    <package name="TestNamespace5" extends="struts-default" namespace="/RefLink/deap">
      <action name="loginNO" class="com.struts2.test.LoginTestDeap">
           <result name="got">/login.jsp</result>
      </action>
    </package>

 

这次 http://localhost:8080/StrutsTest/RefLink/deap/login.action,直接在namespace="/RefLink/deap"下没有找到login.action,就不再是往/RefLink下找action了,而是直接去了namespace="", 调用了com.struts2.test.LoginDefault。

分享到:
评论

相关推荐

    Dom4j解析struts2框架的struts.xml

    在Struts2中,`struts.xml`是核心配置文件,它定义了应用的各个组件,如动作(Actions)、结果(Results)、拦截器(Interceptors)等。本篇文章将深入探讨如何使用Dom4j这个XML处理库来解析`struts.xml`,以便...

    struts.xml文件详解示例代码

    下面将详细介绍Struts.xml文件中的关键元素和它们的作用。 1. **&lt;struts&gt;根元素**: - `&lt;struts&gt;` 是整个配置文件的起始标签,包含了所有其他配置元素。 2. **元素**: - `&lt;package&gt;` 定义了一个包,可以看作是...

    Struts2中Struts.xml配置文件详解

    "Struts2 中 Struts.xml 配置文件详解" Struts2 中的 Struts.xml 配置文件是 Struts2 框架的核心配置文件,用于定义应用程序的行为和结构。在 Struts.xml 文件中,我们可以定义 package、action、interceptor、...

    struts.xml配置详解

    比如在大型项目中,可以将用户管理、商品管理和订单管理等不同的功能模块分别配置在不同的xml文件中(如user.xml、goods.xml和order.xml),然后通过struts.xml中的标签将这些模块配置文件引入主配置文件中。...

    dom4j解析struts.xml需要的包装类

    在Struts2中,配置文件`struts.xml`扮演着核心角色,它定义了动作(Action)、包(Package)和结果(Result)等关键组件的行为。为了方便地解析和处理这些配置,开发者常常会创建自定义的包装类(Wrapper Class),...

    struts.xml 配置

    这篇博文详细介绍了如何理解和配置Struts2框架中的struts.xml文件,以实现MVC(Model-View-Controller)设计模式的高效应用。 在Struts2框架中,struts.xml文件主要包含以下几个部分: 1. **包(package)定义**:...

    struts2.0中struts.xml配置文件详解

    在深入探讨Struts2.0框架中的`struts.xml`配置文件之前,我们先来了解一下Struts2.0框架的基本概念。Struts2是Apache软件基金会的一个开源项目,它是一个基于MVC(Model-View-Controller)设计模式的Java Web应用...

    Struts2手动搭建所有的jar包及相应的struts.xml和web.xml

    现在,当用户访问匹配Action的URL时,Struts2框架会解析`struts.xml`文件中的配置,执行对应的Action,然后根据结果类型返回相应的视图。你可以在此基础上扩展配置,比如添加更多的Action、结果类型、拦截器,以满足...

    struts.xml配置文件详解

    在Struts框架中,`struts.xml`配置文件扮演着极其重要的角色。它主要用于定义应用中的各种配置信息,包括但不限于包(Package)、拦截器(Interceptor)、Action以及结果(Result)等。 #### 二、Struts配置文件的...

    struts.xml详细说明.doc

    以下是关于`struts.xml`的详细说明: 1. **文件结构**: `struts.xml`遵循特定的XML结构,它以`&lt;struts&gt;`作为根元素,包含了多个`&lt;package&gt;`元素,每个`&lt;package&gt;`元素代表一个独立的包,可以看作是Action的分组。...

    struts2 使用注解现在零配置不需要在使用struts.xml配置文件,可以直接跑

    在Struts2中,注解的引入使得开发者可以摆脱繁琐的`struts.xml`配置文件,实现“零配置”运行。 首先,让我们了解什么是注解(Annotation)。注解是Java提供的一种元数据机制,允许在源代码中嵌入信息,这些信息...

    Struts2.5版本struts.xml与web.xml配置的更改方法

    在Struts2框架中,配置文件`struts.xml`和`web.xml`是核心部分,它们定义了应用程序的行为和路由规则。随着版本的更新,配置方式也会有所改变。以下是Struts2.5版本中`struts.xml`和`web.xml`配置的更改方法: **1....

    struts2的struts.xml文件的元素结构

    在Struts2中,`struts.xml`文件是核心配置文件,用于定义应用的行为、动作映射、结果类型、拦截器等。这篇博文主要探讨了`struts.xml`文件的元素结构,下面我们将详细解析这些关键元素。 首先,`struts.xml`文件...

    struts.xml详解.doc

    `struts-default.xml`通常包含了Struts2的默认配置,包括一些预定义的拦截器和Action。 4. **package标签**: `&lt;package&gt;`定义了一个行为模块,它是一系列Action的集合。每个`package`都需要一个唯一的名字,通过`...

    Struts.XML配置文件说明

    以下是关于Struts.xml配置文件各个元素的详细说明: **Bean配置** 在Struts.xml中,`&lt;bean&gt;`标签用于定义Java Bean实例。以下是它的主要属性: 1. **class**: 必填属性,指定了Bean的实现类。例如,`class=...

    S2H action+struts.xml+jsp

    标题"S2H action+struts.xml+jsp"表明这是一个关于使用Struts框架进行Web开发的话题。Struts是Apache软件基金会的Jakarta项目中的一个开源框架,主要用于构建基于Java的、MVC(Model-View-Controller)模式的Web应用...

    struts.xml文件详解

    Struts.xml 文件是 Apache Struts 2 框架的核心配置文件,用于定义应用程序的行为、组织 Action、拦截器以及结果页面等。以下是该文件的主要组成部分和相关知识点的详细解释: 1. **DOCTYPE 声明**: DOCTYPE 声明...

    struts2 xml

    在Struts2中,XML配置文件(通常命名为struts.xml)是整个框架的基石,它负责设置Action、拦截器、结果页面以及其他关键组件。 **1. 包配置(Package Configuration)** 包在Struts2中扮演着组织和管理的角色,它...

    struts.xml详解[整理].pdf

    Struts.xml 文件是 Apache Struts 2 框架的核心配置文件,用于定义应用程序的行为、组织Action、拦截器以及结果页面等。以下是该文件中关键元素的详细解释: 1. **DOCTYPE声明**: - 第一行的DOCTYPE声明指定...

    Struts2学习案例(拦截器)

    在案例的文件名"struts2Study"中,我们可以推测这可能是一个包含了整个Struts2应用的源码结构,包括Struts2的配置文件(struts.xml)、Action类、DAO层的实现以及可能的JPA实体类和数据库配置等。这些文件将帮助我们...

Global site tag (gtag.js) - Google Analytics