在Struts中的namespace: (Namespace最好用模块来进行命名, 且 '/'所代表的都是项目的跟目录)
在struts.xml文件种,对每一个action都是放置于一个namespace下的,默认情况是放在 "/" 根下面的(项目的根目录)
1. 在页面中的form等中填写action的地方,不能以 ‘/’ 开始(如:/loginA) , 不然就会进入webServer服务器的根目录, 即:localhost/loginA.action。
2.在struts.xml中,配置namespace以 "/" 开头。
3.在Struts中的默认情况action的根目录的页面文件(jsp等)目录在同一目录下,即项目的跟路劲,如:http://localhost/SSHEDemo/
4.若是在页面文件中,添加了文件目录,如以下 pages :
那么访问地址则变为: http://localhost/SSHEDemo/pages/login.jsp, 若是Action的package中填写namespace属性,如login
<package name="default" extends="struts-default" namespace="/login">
则在页面中,action的上一级目录为文件夹目录(pages),若需要正确寻找到该namespace的action,需要使用相对路劲,保持也struts.xml文件中同一级目录,既项目的根目录。
如:在login.jsp文件中需如下配置:
<form action="../login/loginA">
注:只要struts.xml中配置了namespace属性,就需要使用相对路径返回根目录,如namespace="/",则
<form action="../loginA">
另:在Jsp页面中的Form中的Action可以不用填写任何前缀,而直接填写 Action的名字:如
<form action="..loginA">
而此时则更具,此jsp页面的上一级目录名作为namespace,来寻找action,如在此处寻找的路径为:/pages/loginA -->/loginA
4. 在struts2中,action的查找是采用精确查找的方式寻早,根据namespace向上一级一级寻找,找到则使用,找不到则报错。
以上配置的寻找路劲为: 首先保证其路劲在根目录中:
<form action="../login/loginA">
然后根据 /login/loginA --> /loginA 寻址(不会跳过文件目录)
若namespace为 namespace="/", 则寻找路劲为: /loginA