<global-forwards>
我在struts 中有一个基本问题,为什么我们需要<global-exceptions>
在struts-config.xml 中。如果我们能用<action-mappings>
自己实现同样的事情。
2 回答
<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>
我希望这能澄清你的问题。
如果您谈论的是 Struts 1,它global-exceptions
是否为所有操作ExceptionHandlers
处理一些Exception
,因此您不必为每个操作声明它并避免重复。
Global-forwards
有同样的想法。如果您在不同的操作中具有相同路径的转发,则可以通过仅声明一个来避免重复,global-forward
并且所有操作都可以使用它。global-forwards
您还可以避免在您的 jsp 中使用硬编码的 URL,例如,您可以在您的 jsp 中声明一个 global-forward ,比如<forward name="loginLink" path="/login" />
然后 <html:link forward="loginLink">Login</html:link>
。