比如项目deom的struts.xml中有如下片段
Java代码
/demo.jsp
我们可以用http://localhost:8080/demo/demo.action路径来访问action demo,也可以用http://localhost:8080/demo/***/demo.action路径来访问该action 上述路径中,http://localhost:8080/demo用来找到我们的demo project,之后的路径用来找到我们位于某一命名空间下的某一action。在struts中,我们的package继承了struts-default,也就拥有了struts的根空间,在这里我们没有指明namespace属性,但其实此时我们的namespace属性相当于namespace="",或者namespace="/"。 当我们用http://localhost:8080/demo/demo.action时,由于我们没有指定命名空间,struts直接在根空间中寻找name=demo的action,根空间有这个action,所以我们能访问。 当我们用时,struts首先在namespace=***的package中寻找,没有找到。此时struts继续在根空间里寻找,找到了,所以我们还是可以访问。 如果我们做如下设置,即将<package name="demo" extends="struts-default"> 中添加namespace="/demo"属性,修改为"]<package name="demo" extends="struts-default" namespace="/demo"> ,此时,我们只有用http://localhost:8080/demo/demo/demo.action路径才能访问到该action了,如果再用或其他路径,就会出现异常。因为此时struts首先在命名空间为abc中寻找,如果没有找到,会继续在根空间寻找,而现在根空间已经没有名为demo的action了。 这就是我理解的struts2的命名空间和访问路径间的关系。