今天想再重新搞搞struts2 结果弄得一塌糊涂,终究其问题缘由是命名空间的错。html
三。命名空间配置
1.不使用命名空间的方式:
struts配置:
安全
- <struts>
- <include file="struts-default.xml" />
- <package name="com.casc.manager" extends="struts-default"
- <action name="xxn" class="com.casc.manager.XxnAction">
- <result name="success">/success.jsp</result>
- <result name="error">/index.jsp</result>
- <result name ="input" >/index.jsp</result >
- </action>
-
- </package>
- </struts>
<struts>
<include file="struts-default.xml" />
<package name="com.casc.manager" extends="struts-default"
<action name="xxn" class="com.casc.manager.XxnAction">
<result name="success">/success.jsp</result>
<result name="error">/index.jsp</result>
<result name ="input" >/index.jsp</result >
</action>
</package>
</struts>
- <form action="xxn.action" method="post">
- <s:text name="user.name"></s:text><input type="text" name="name"><br>
- <s:text name="user.password"></s:text><input type="password" name="password"><br>
- <input type="submit" value="<s:text name="user.submit"/>"/>
- </form>
<form action="xxn.action" method="post">
<s:text name="user.name"></s:text><input type="text" name="name"><br>
<s:text name="user.password"></s:text><input type="password" name="password"><br>
<input type="submit" value="<s:text name="user.submit"/>"/>
</form>
地址栏访问:http://localhost:9999/TDIAP/xxn.action
这样配置基本不会有问题。
但是在struts1.2里,咱们习惯:path="/abc/xxn"
方便于在abc文件夹下操做。
2.这样在struts2.0中就要是用命名空间来达到相同的效果。
- <struts>
- <include file="struts-default.xml" />
- <package name="com.casc.manager" extends="struts-default" namespace="/mng">
- <action name="xxn" class="com.casc.manager.XxnAction">
- <result name="success">/success.jsp</result>
- <result name="error">/index.jsp</result>
- <result name ="input" >/index.jsp</result >
- </action>
- </package>
- </struts>
<struts>
<include file="struts-default.xml" />
<package name="com.casc.manager" extends="struts-default" namespace="/mng">
<action name="xxn" class="com.casc.manager.XxnAction">
<result name="success">/success.jsp</result>
<result name="error">/index.jsp</result>
<result name ="input" >/index.jsp</result >
</action>
</package>
</struts>
- <form action="<%=request.getContextPath() %>/mng/xxn.action" method="post">
- <s:text name="user.name"></s:text><input type="text" name="name"><br>
- <s:text name="user.password"></s:text><input type="password" name="password"><br>
- <input type="submit" value="<s:text name="user.submit"/>"/>
- </form>
<form action="<%=request.getContextPath() %>/mng/xxn.action" method="post">
<s:text name="user.name"></s:text><input type="text" name="name"><br>
<s:text name="user.password"></s:text><input type="password" name="password"><br>
<input type="submit" value="<s:text name="user.submit"/>"/>
</form>
这里主页 由于咱们使用了命名空间“/mng”,若是在mng文件夹下的jsp页面咱们能够直接写
action="xxn.action"
但在其余文件夹下就不行了。若是在mng上级目录尽可能不要写成
action="mng/xxn.action", 这样会成功但会出现问题,他极可能出现地址栏中http://localhost:9999/TDIAP/mng/mng/mng/mng/mng/mng/mng/mng/mng/mng/mng/mng/mng/mng/mng/mng/mng/mng /xxn.action
这种状况。
安全起见 使用绝对路径:action="<%=request.getContextPath() %>/mng/xxn.action" 这样写不用考虑当前目录。
地址栏访问:http://localhost:9999/TDIAP/mng/ xxn.action 要把命名空间加上。
同时推荐一个很不的博客:jsp
http://salute.iteye.com/blog/1583777post