Struts2 高级特性:异常处理与错误页面配置

需积分: 1 0 下载量 79 浏览量 更新于2024-09-12 收藏 3KB TXT 举报
"struts2高级部分的总结,涵盖了struts2在处理异常、开发模式下错误处理以及全局结果配置等内容。" 在Struts2框架中,处理动作执行和结果映射是其核心功能之一。当用户请求到达时,通常会通过`UserAction`中的某个方法(如`saveUser`)触发,该方法会抛出一个异常。这个异常会被`DefaultActionInvocation`的`invoke`方法捕获,然后传递给`DefaultActionProxy`的`execute`方法,最终由`Dispatcher`进行处理。 在处理异常的过程中,`Dispatcher`会调用`serviceAction`方法。如果处于开发模式(`devMode`为`true`),Struts2会针对`ConfigurationException`这类配置异常做出不同的响应。它首先会在日志中记录一个错误信息,然后使用`sendError`方法将HTTP状态码设置为404(NOT_FOUND),并传入异常对象。对于其他未指定的异常,也会使用`sendError`方法,但此时会设置HTTP状态码为500(INTERNAL_SERVER_ERROR)。`sendError`方法不仅会显示错误页面,还会依据配置渲染错误信息,通常默认使用的是`error.ftl`模板。 如果`devMode`为`false`,Struts2会以更友好的方式处理错误,通常会转向一个全局定义的错误处理器,以统一处理错误页面。例如,通过在配置文件中设置`<global-results>`,可以定义一个名为`errHandler`的结果类型为`chain`的结果,它将链接到名为`errorProcessor`的动作,以便进行错误处理。 此外,Struts2的全局结果配置允许开发者定义一组通用的结果,这些结果可以被所有动作共享。这样,当没有匹配到特定的Action或结果时,系统可以根据预设的全局结果来决定下一步的操作,提供了一种灵活的错误处理和页面跳转机制。 Struts2的高级部分涉及了异常处理的策略,特别是开发模式下的错误处理方式,以及如何通过全局结果配置实现统一的错误处理流程。理解和掌握这些内容对于开发健壮的、具有良好用户体验的Struts2应用至关重要。