美文网首页
struts2命名空间namespace和访问路径的关系

struts2命名空间namespace和访问路径的关系

作者: The_Bard | 来源:发表于2018-04-17 23:55 被阅读0次

分类: struts2

我是在看了别人的博客之后,对namespace和访问路径的关系算是搞明白了,故记录下来供大家参阅和自己以后进行查看。

假设我的struts.xml配置文件中一个action配置如下:

<package name="/user" extends="struts-default">

        <action name="testMap" class="com.sh.action.MapAction" method="testMap">

            <result name="success">/index.jsp</result>     

        </action>

    </package>

那么我直接可以通过http://localhost:8089/struts2/testMap.action进行访问,这个的访问过程是这样的,在没有定义namespace的时候,由于在struts中,我们的package继承了struts-default,也就拥有了struts的根空间,在这里我们没有指明namespace属性,但其实此时我们的namespace属性相当于namespace="",或者namespace="/"。由于我们没有指定命名空间,struts直接在根空间中寻找name=testMap的action,根空间有这个action,所以我们能访问。

假设配置文件中action配置中加入了namespace属性值,如下:

<package name="/user" extends="struts-default" namespace="/test">

    <action name="testMap" class="com.sh.action.MapAction" method="testMap">

  <result name="success">/index.jsp</result> 

    </action>

    </package>

那么我们必须通过http://localhost:8089/struts2/test/testMap.action这个路径进行访问,如果再用http://localhost:8089/struts2/a/testMap.action或其他路径,就会出现异常。因为此时struts首先在命名空间为test中寻找,如果没有找到,会继续在根空间寻找,而现在根空间已经没有名为demo的action了。

如果路径嵌套很多处理方式:

假设访问的路径为http://localhost:8089/struts2/path1/path2/path3/test.action,访问过程如下:

1、首先寻找namespace为/path1/path2/path3的package,如果不存在这个package则执行步骤2;如果存在这个package,则在这个package中寻找名字为test的action,当在该package下寻找不到action 时就会直接跑到默认namaspace的package里面去寻找action(默认的命名空间为空字符串“” ) ,如果在默认namaspace的package里面还寻找不到该action,页面提示找不到action

2.寻找namespace为/path1/path2的package,如果不存在这个package,则转至步骤3;如果存在这个package,则在这个package中寻找名字为test的action,当在该package中寻找不到action 时就会直接跑到默认namaspace的package里面去找名字为test的action ,在默认namaspace的package里面还寻找不到该action,页面提示找不到action

3.寻找namespace为/path1的package,如果不存在这个package则执行步骤4;如果存在这个package,则在这个package中寻找名字为test的action,当在该package中寻找不到action 时就会直接跑到默认namaspace的package里面去找名字为test的action ,在默认namaspace的package里面还寻找不到该action,页面提示找不到action

4.寻找namespace为/的package,如果存在这个package,则在这个package中寻找名字为test的action,当在package中寻找不到action或者不存在这个package时,都会去默认namaspace的package里面寻找action,如果还是找不到,页面提示找不到action。

可以理解为从里往外去找。

Action配置中,配置项的默认值

1.如果没有指定Action的class,默认值为ActionSupport。

2.如果没有指定Action的method属性,默认值为execute()方法。

3.如果没有指定result的name属性,默认值为“success“

struts配置文件中包的使用说明

在Struts2中使用包来管理Action的,包的作用于java中包的作用非常类似,主要管理一族业务功能相关的action。在实际应用中,我们把一族业务功能相关的action放在同一个包下。

相关文章

  • struts2命名空间namespace和访问路径的关系

    分类: struts2 我是在看了别人的博客之后,对namespace和访问路径的关系算是搞明白了,故记录下来供大...

  • (一)基础篇--要点日记

    命名空间 使用namespace的时候有四种不同的访问方式的写法: 1)将using namespace std;...

  • Nacos配置中心规范

    版本选择 毕业版本依赖关系(推荐使用) Namespace Nacos引入了命名空间(Namespace)的概念来...

  • 四十、Docker网络-网络命名空间

    网络命名空间 Linux的Namespace(命名空间)技术是一种隔离技术,常用的Namespace有 user ...

  • 命名空间 namespace

    /*命名空间:命名空间是一种封装事物的方法命名空间怎么声明?关键字: namespace 导入命名空间: use起...

  • 命名空间(namespace)

    命名空间,也称名称空间,名字空间。命名空间是用来组织和重构代码的。如同名字一样的意思,NameSpace(名字空间...

  • 命名空间 namespace

    命名空间 附加信息来区分不同库中相同名称的函数、类、变量等。使用了命名空间即定义了上下文。本质上,命名空间就是定义...

  • 命名空间namespace

    outer_func的local中的outer_arg的值为1.inner_func的local中的outer_a...

  • 命名空间(namespace)

    通常来说,命名空间是唯一识别的一套名字,这样当对象来自不同的地方但是名字相同的时候就不会含糊不清了。 为什么需要命...

  • namespace 命名空间

    避免命名冲突, 相当于引入类使用时需要nmsl.anmsl.b

网友评论

      本文标题:struts2命名空间namespace和访问路径的关系

      本文链接:https://www.haomeiwen.com/subject/onrfrxtx.html