struts-config.xmlに<global-forwards>なぜ必要なのかという基本的な質問があります。それ自体<global-exceptions>で同じことを達成できれば。<action-mappings>
2 に答える
<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>
これで問題が明らかになることを願っています。
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>。