我们来看一个可以正常执行的Struts2项目。
WebContent
------------------index.jsp------------------
<body>
</body>
------------------struts.xml------------------
<struts>
</struts>
结果:画面会蹦到1.jsp。
结论:当<%=request.getContextPath()%>/Login.action发出以后:
1.因为请求URL中没有命名空间的部分,所以struts.xml中的namespace="/test1"的<package>首先被过滤掉了。
2.然后,再从struts.xml的namespace="/"(也就是根空间)去找,虽然,没有<actionname='Login'>,但是在这里,我们配了一个默认action,<default-action-refname="xx"/>。默认action的功能是:当URL找不到配置对应的action,会自动转到默认action去处理。所以,我们的URL会被<actionname="xx">捕获,将结果转到1.jsp。
3.如果URL在所有的<package>的命名空间中都没有找到action,那么会去namespace="/"的根空间去找,如果还没找到,那么最后