遇到一個很二的sturts2 命名空間問題

今天想再重新搞搞struts2 結果弄得一塌糊塗,終究其問題緣由是命名空間的錯。html

三。命名空間配置
1.不使用命名空間的方式:
struts配置:
安全

Xml代碼        
  1. <struts>
  2. <include file="struts-default.xml" />
  3. <package name="com.casc.manager" extends="struts-default"
  4. <action name="xxn" class="com.casc.manager.XxnAction">
  5. <result name="success">/success.jsp</result>
  6. <result name="error">/index.jsp</result>
  7. <result name ="input" >/index.jsp</result >
  8. </action>
  9. </package>
  10. </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>


Html代碼        
  1. <form action="xxn.action" method="post">
  2. <s:text name="user.name"></s:text><input type="text" name="name"><br>
  3. <s:text name="user.password"></s:text><input type="password" name="password"><br>
  4. <input type="submit" value="<s:text name="user.submit"/>"/>
  5. </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中就要是用命名空間來達到相同的效果。
Xml代碼        
  1. <struts>
  2. <include file="struts-default.xml" />
  3. <package name="com.casc.manager" extends="struts-default" namespace="/mng">
  4. <action name="xxn" class="com.casc.manager.XxnAction">
  5. <result name="success">/success.jsp</result>
  6. <result name="error">/index.jsp</result>
  7. <result name ="input" >/index.jsp</result >
  8. </action>
  9. </package>
  10. </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>


Html代碼        
  1. <form action="<%=request.getContextPath() %>/mng/xxn.action" method="post">
  2. <s:text name="user.name"></s:text><input type="text" name="name"><br>
  3. <s:text name="user.password"></s:text><input type="password" name="password"><br>
  4. <input type="submit" value="<s:text name="user.submit"/>"/>
  5. </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

相關文章
相關標籤/搜索