异常处理器
- SpringMVC提供全局异常处理器进行统一的异常处理,一个系统只能有一个异常处理器。
- 系统的dao、service、controller层出现异常的时候都throws Exception向上抛,最后由SpringMVC前端控制器交由异常处理器进行异常处理(对异常进行包装处理)。如下如所示:
为什么需要全局异常处理器
- 如上图所示,如果没有全局异常处理器,不管是dao层、Service层还是Controller层出现异常时,会直接将异常信息返回到客户端,而这些异常信息不经过包装,可能会包含项目的包名、SQL查询语句、数据库的IP信息等,这将会造成严重的安全隐患。恶意用户可以通过发送不正确的查询语句时,从异常信息中提取可以危害到服务端安全的信息,造成服务端出现安全威胁。
- 如下是我模拟的一个服务端异常
当用户访问服务端经过这个语句时,会出现除数为0的异常,当不设置全局异常处理器时,客户端得到的异常信息如下图所示:
如红线部分所示,这会暴露服务端的包名,文件结构信息。这是一个安全隐患。 - 因此我们需要统一的异常处理器,在异常信息返回客户端之前,对异常信息进行包装,展示必要的信息。异常处理器的功能就是对异常信息