如何防止在Spring MVC 3.0应用程序的JSP上出现原始异常信息



在测试我的Spring应用程序时,我上传的文件超过了应用程序中配置的最大允许大小。

因此,JSP上出现了以下消息,对用户可见:
Error
Exception: org.springframework.web.multipart.MultipartException: 
something went wrong here; nested exception is 
org.apache.commons.fileupload.FileUploadBase$FileUploadIOException

为了在JSP上为用户显示更加用户友好的消息,我需要更改哪些内容?

例如:

Uploaded file exceeds maximum allowed size of 25MB.

我以前没有做过Spring MVC,但我认为Spring可以做到

使用消息资源(ResourceBundle)。您必须捕获异常并创建一个错误页面,其中可以显示错误消息。

Spring使用ResourceBundleMessageSource作为消息资源。这个示例(尽管太简单)向您展示了如何配置和使用它。

使用HandlerExceptionResolver

public class MyExceptionResolver implements HandlerExceptionResolver{
    public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex){
        return new ModelAndView("jsp_to_show_error_message.jsp").
                 addObject("message", ex.getMessage());
    }
}

创建一个新的jsp jsp_to_show_error_message.jsp,并将${message}放在其中的某个位置。在xml中配置MyExceptionResolver。如果你正在使用基于注解的控制器,请阅读这里

不考虑Spring, Servlet API提供了将自定义错误页面附加到某些异常的可能性。在这个特定的示例中,只需将以下条目添加到web.xml

<error-page>
    <exception-type>org.springframework.web.multipart.MultipartException</exception-type>
    <location>errors/upload.jsp</location>
</error-page>

这样你就可以在默认的网页布局中提供一个完全自定义的错误页面,样式为errors/upload.jsp

最新更新