struts.xml文件中package标签除了有name、extends属性外,还有一个十分重要的属性:namespace。如下:
<struts>
<package name="struts2" extends="struts-default" namespace="/abc">
<!-- 用户登录Action -->
<action name="login" class="com.cheng.sln.mvc.struts2.action.LoginAction">
<result name="success">/jsp/struts2/result.jsp</result>
<result name="input">/jsp/struts2/login2.jsp</result>
</action>
</package>
</struts>
该属性默认为namespace="",所以在访问该Action时,直接http://localhost:8080/应用名称/login.action就可以请求到该Action。
当namespace="/abc"时,再访问该Action时,其URL应为:http://localhost:8080/应用名称/abc/login.action。
这样在大型项目中有很多个Action时容易分类区分。
问题:如果namespace="",此时用http://localhost:8080/应用名称/abc/login.action访问该
Action,会不会成功?
答案是:会。因为当程序找不到相应的namespace时,它会自动去默认的namespace中去找Action。