在学习structs2的过程中,遇到了namsapce,虽然比较好理解,但是在使用的过程中还是遇到些问题,便将其记录下来。
作用:
为了解决包含同一个action的问题,在相同的命名空间里不能存在相同的action,但是不同的命名空间里,可以存在相同的action。
**须知:**Structs2不支持单独为action设置命名空间,而是在包Package中指定命名空间,如果不指定的话,默认在默认的命名空间下。默认的命名空间为”“,可以接收属于路径下的action。
示例1:
如果请求为/login.action 那么系统会首先查找命名空间为test的action,如果在这个命名空间找到相对应的action,则使用该类处理请求。否则系统将在默认命名空间里查找,找到则使用该类处理,否则系统错误。
这种方式namespace使用”/” 和默认的都行。
示例2:
jsp:
<form action="test/login.action" method="post">
用户名:
<!-- 参数名和action中的属性名一样 -->
<input type=text name=user.username>
<br>
密 码:
<input type=password name=user.password>
<br>
<input type=submit name=subm value="提交">
<input type=reset name=reset value="取消">
</form>
structs2:
<package name="actions" namespace="/test" extends="struts-default">
<!-- 定义Action(login.action) -->
<action name="login" class="org.action.UserAction">
<!-- 定义转发路径对应的字符串名 -->
<result name="success">/success.jsp</result>
<result name="error">/error.jsp</result>
</action>
</package>
示例2 由于你访问的是/test/login.action 所以你在进行action映射的时候需要指定命名空间为/test,–就像访问包下的类一样。
当然示例二 也可以使用默认的namespace ,或者使用根”/”。