12

struts-config.xmlに<global-forwards>なぜ必要なのかという基本的な質問があります。それ自体<global-exceptions>で同じことを達成できれば。<action-mappings>

4

2 に答える 2

39
<global-forwards>

update.do、insert.do delete.doなどのさまざまなURLのユーザー名パスワードを検証していると考えてください。有効なユーザーの場合は、必要なアクションを続行する必要があります。ログインページに転送しない場合は、以下のマッピングを参照してください。

<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>

これで問題が明らかになることを願っています。

于 2012-12-13T12:01:40.367 に答える
4

Struts 1について話している場合、それはすべてのアクションの一部を扱っているglobal-exceptionsので、アクションごとに宣言する必要はなく、重複を避けることができます。ExceptionHandlersException

Global-forwards同じ考えを持っています。異なるアクションで同じパスの転送がある場合は、1つだけを宣言することで重複を回避できglobal-forward、すべてのアクションでそれを使用できます。これによりglobal-forwards、jspsでハードコードされたURLを回避することもできます。たとえば、jspでグローバルフォワードのよう<forward name="loginLink" path="/login" /> に宣言してから、jspで 宣言することができます<html:link forward="loginLink">Login</html:link>

于 2012-12-13T11:41:36.540 に答える