У меня есть основной вопрос в struts, почему нам нужно иметь <global-forwards>
и <global-exceptions>
в struts-config.xml. Если мы сможем достичь одних и тех же вещей с самим <action-mappings>
.
Почему нам нужны глобальные и глобальные исключения в стойках?
Ответ 1
<global-forwards>
Считайте, что вы проверяете пароль пользователя для разных URL-адресов, таких как update.do, insert.do delete.do и т.д. Если это действительный пользователь, вам необходимо выполнить необходимое действие. Если вы не перешли на страницу входа в систему. отображения ниже
<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>
Надеюсь, это прояснит вашу проблему.
Ответ 2
Если вы говорите о Struts 1, global-exceptions
являются ExceptionHandlers
, которые имеют дело с некоторым Exception
для всех действий, поэтому вам не нужно объявлять его за действие и избегать дублирования.
Global-forwards
имеют ту же идею. Если у вас есть переходы с одним и тем же путем в разных действиях, вы можете избежать дублирования, объявив только один global-forward
, и все действия могут его использовать. С помощью Global-forwards
вы также можете избежать кодированных URL-адресов в jsps, например, вы можете объявить глобальный-вперед, например <forward name="loginLink" path="/login" />
а затем в jsp <html:link forward="loginLink">Login</html:link>
.