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