一直在纠结于标题取什么名字好,读起来好拗口,算了,回归正题。
在网上看到SpringMVC配置异常处理都是返回一个jsp页面给客户,但是很多公司(包括我公司)的前端都是ExtJs,所有的请求都是Ajax请求,这样当后台发生异常时客户什么也看不到,也没有什么提示信息出来,公司以前用的是Struts2(现在还是),用的是一个拦截器,
public String intercept(ActionInvocation paramActionInvocation) throws Exception {
try{
paramActionInvocation.invoke();
}catch(Exception e){
String message = e.getMessage();
if (message == null){
message = "各种错误";
}
ServletActionContext.getResponse().getWriter().print("{failure:true, msg:'" + message + "'}");
}
return null;
}
这样前台就能弹出信息了。注意还要在把struts中默认的的异常拦截器去掉。
跑题了,SpringMVC中类似,只不过用的不是拦截器,是框架提供的异常处理支持。
一种方法是在Controller类中使用@ExceptionHandler注解,但是局限是只能在该类中使用。
@ExceptionHandler
public @ResponseBody String handleException() {
return "ajax 错误信息";
}
另一种方法是实现HandlerExceptionResolver接口,并注册之。
resolveException方法代码:简单。
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
response.setCharacterEncoding("UTF-8");
try {
PrintWriter writer = response.getWriter();
writer.write("ajax 错误信息");
writer.flush();
} catch (IOException e) {
}
return null;
}
分享到:
相关推荐
本例子提供了2中 springMVC 上传的例子,通过 ajax 提交的方式,通过 Form 提交的方式,同时获取上传后文件名称,支持多个文件上传。
springmvc返回json的全局异常统一处理demo,有问题可以留言。
springMVC支持ajax的jar包,包括 jackson-annotations-2.1.5.jar jackson-core-2.1.4.jar jackson-databind-2.4.3.jar
springmvc+ajax上传例子
使用springMVC+ajax+json的一个小demo,希望对读者有用
springmvc接收ajax请求注意事项
springMVC jQuery ajax交互的简单的应用,一个可以参照的文件
通过aop拦截获取json请求数据,对数据进行处理判断,如果不合法则抛出异常,配置全局异常处理类,在异常处理类中直接将处理结果返回调用处,减少每次在方法中解析json数据然后在判断,减少代码冗余
springmvc异常处理的博文如下: http://blog.csdn.net/dlf123321/article/details/50756003
springmvc 上传下载文件,支持 ajax,form 提交,支持 multiple 方式上传文件
Springmvc与Ajax交互实例
SpringMVC+Ajax异步文件上传+短视频背景+a标签绑定文件域
SpringMVC利用Ajax,JQuery交互Json
Ajax实现异步请求+基于SpringMVC
使用Ajax从页面向控制层请求数据,并将提交的数据再次返回,国外网站下载代码,很有参考意义。请使用Eclipse工具
Maven+SpringMVC实现统一异常处理
异常一层一层的向上抛出,但是开发人员肯定不想要用户看到代码出错,因此需要将异常屏蔽了,SpringMVC提供了异常处理的手段。
NULL 博文链接:https://stillcoolme.iteye.com/blog/2313624
统一异常处理会区分前端是否ajax请求,自动返回json数据格式,要求开发人员在处理ajax请求时统一封装成一个对象返回,以符合代码统一规范。 此工程在idea环境编写,导入请自己新建工程手工复制代码导入。
http://blog.csdn.net/madcode2222222222222/article/details/78326347