默认的命名空间“ namespace="" ”。 根命名空间 “ namespace="/" ”。

<package name="test" extends="struts-default"> ,假设未指定命名空间,则命名空间默觉得 “ namespace="" ”。

默认命名空间里的Action能够处理不论什么命名空间下的Action请求。

比如,假设存在URL为/barspace/bar.action的请求,而且/barspace的命名空间下没有名为bar的Action,则默认命名空间下名为bar的Action也会处理用户请求。但根命名空间下的Action仅仅处理根命名空间下的Action的请求,这是根命名空间和默认命名空间的差别。

命名空间仅仅有一个级别。假设请求的URL是/bookservice/search/get.action。系统将先在/bookservice/search的命名空间下查找名为get的Action,假设在该命名空间内找到名为get的Action。则由该Action处理用户的请求。假设未找到。系统将直接进入默认的命名空间中查找名为get的Action,而不会在/bookservice的命名空间下查找名为get的Action 。

在struts2中,Action的名称的搜索时遵循一定原则的。以下就是struts2在请求到来后。怎么去找到合适的action进行调用。总结例如以下 (获得请求路径的URI。比如url是:http://server/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。这个时候假设找不到,就直接跳到默认package中去找了。假设仍然找不到。那就仅仅能报错了。

所以说,这个寻找过程是先匹配大的名称空间,有匹配了才去找对应的action,假设在匹配的名称空间没有须要的action,则直接跳到默认包中找,不会再次跳回去匹配名称空间

最新文章

  1. java的 new 关键字
  2. nodejs-helloword案例
  3. replace和replaceAll(路径反斜杠问题)
  4. jQuery应用之(三)jQuery链
  5. Visual Studio 2012 使用免费的Team Foundation Service(转载)
  6. MySql学习之数据库管理
  7. 环境配置与JBoss安装-EJB3.0入门经典学习笔记(1)
  8. C语言中符号格式说明
  9. iOS开发多线程之GCD
  10. 从前端中的IOC理念理解koa中的app.use()
  11. Linux 分支那么多,这里可以帮你缩小选择范围
  12. Controller层aop
  13. node调试工具--nodemon
  14. 关于redis中SDS简单动态字符串
  15. 待选框、目标框select项目左右移动
  16. hdu 4462 第37届ACM/ICPC 杭州赛区 J题
  17. node.js执行shell命令
  18. lintcode-402-连续子数组求和
  19. SharedPreference工具类
  20. uC/OS-II 函数之OSInit()

热门文章

  1. javascript——正則表達式
  2. jQuery li click失效问题
  3. Android_Activity知识点
  4. java中的Annotation
  5. WebDriver API——第3部分Action Chains
  6. Android常用异步任务执行方法
  7. HDU-1090-A+B for Input-Output Practice (II)(骗訪问量的)
  8. ANDROID颜色设置
  9. POJ2406-Power Strings(kmp循环节)
  10. ConfigurationManager读取dll的配置文件