2012-12-13 88 views

回答

34
<global-forwards> 

考慮您要驗證的其他網址像update.do,insert.do delete.do等的用戶名密碼,如果它是一個有效的用戶,你需要進行的neccesary action.if不轉發到登錄page.See下面

<action-mappings>   
    <action path="/insert" type="controller.Insert"> 
     <forward name="success" path="/insert.jsp"/> 
     <forward name="failure" path="/login.jsp"/> 
    </action>  
    <action path="/update" type="controller.Update"> 
     <forward name="success" path="/update.jsp"/> 
     <forward name="failure" path="/login.jsp"/> 
    </action> 
    <action path="/delete" type="controller.Delete"> 
     <forward name="success" path="/delete.jsp"/> 
     <forward name="failure" path="/login.jsp"/> 
    </action>   
</action-mappings> 

而是重複<forward name="failure" path="/login.jsp"/>您可以在<global-forwards>聲明此類似下面

<global-forwards> 
    <forward name="failure" path="/login.jsp"/> 
</global-forwards> 

現在你可以聖雷莫的映射在動作映射中有<forward name="failure" path="/login.jsp"/>


<global-exceptions> 

如果您收到java.Io例外,而不是手動處理的每個可以如下聲明全局。

<global-exceptions> 
    <exception type="java.io.IOException" path="/pages/error.jsp"/> 
</global-exceptions> 

我希望能夠澄清您的問題。

+0

謝謝男人很好的解釋,但發現它不長。 – user1900662

+0

感謝您的解釋, – Apache

+0

感謝您的解釋,假設有HTTP 500錯誤頁面,並需要轉發回登錄頁面,,這是如何做到的,謝謝 – Apache

3

如果您在談論Struts 1,global-exceptionsExceptionHandlers,那麼所有操作都會處理一些Exception,因此您無需在每次操作時聲明它並避免重複。

Global-forwards有同樣的想法。如果您以不同的動作轉發相同的路徑,則可以通過聲明一個global-forward來避免重複,並且所有操作都可以使用它。通過global-forwards,您還可以避免jsps中的硬編碼URL,例如,您可以聲明一個全局轉發,如<forward name="loginLink" path="/login" /> ,然後在您的jsp <html:link forward="loginLink">Login</html:link>中。