Java 为什么在struts中需要全局转发和全局异常?
在struts中我有一个基本问题,为什么我们需要在struts-config.xml中包含Java 为什么在struts中需要全局转发和全局异常?,java,jakarta-ee,struts,Java,Jakarta Ee,Struts,在struts中我有一个基本问题,为什么我们需要在struts-config.xml中包含和。如果我们可以通过本身实现同样的效果。如果您谈论的是Struts 1,全局异常是异常处理程序,它处理所有操作的一些异常,因此您不必为每个操作声明它并避免重复 全局转发也有同样的想法。如果在不同的操作中有具有相同路径的转发,可以通过只声明一个全局转发来避免重复,并且所有操作都可以使用它。使用全局转发还可以避免JSP中的硬编码URL,例如,您可以像 然后在jsp登录中 假设您正在验证不同URL(如updat
和
。如果我们可以通过
本身实现同样的效果。如果您谈论的是Struts 1,全局异常
是异常处理程序
,它处理所有操作的一些异常
,因此您不必为每个操作声明它并避免重复
全局转发
也有同样的想法。如果在不同的操作中有具有相同路径的转发,可以通过只声明一个全局转发
来避免重复,并且所有操作都可以使用它。使用全局转发
还可以避免JSP中的硬编码URL,例如,您可以像
然后在jsp登录中
假设您正在验证不同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>
您可以在下面的
中声明,而不是重复
<global-forwards>
<forward name="failure" path="/login.jsp"/>
</global-forwards>
现在,您可以删除操作映射中的
。<global-exceptions>
如果您收到java.Io异常而不是手动处理每个异常,您可以如下全局声明
<global-exceptions>
<exception type="java.io.IOException" path="/pages/error.jsp"/>
</global-exceptions>
我希望这能澄清你的问题。谢谢你的解释,如果有HTTP 500错误页面,需要转发回登录页面,我不同意user1900662-这是完美的长度,imo。它准确地回答了我的问题(这是谷歌的第一个结果,所以我想我不是唯一一个…)
<global-exceptions>
<exception type="java.io.IOException" path="/pages/error.jsp"/>
</global-exceptions>