spring mvc4 全局异常处理
2015-08-31 00:00
615 查看
摘要: spring mvc @ControllerAdvice 的一些简单用法
fastjson的 POM.XML配置
访问test.do
Ops! Something went wrong
IOException: this is io exception
访问呢ajaxTest.do
spring mvc 全局控制器完成
异常拦截控制器
@ControllerAdvice public class ExceptionControllerAdvice { @ExceptionHandler(Exception.class) public ModelAndView exception(Exception e) { //普通的请求可以这样拦截 ModelAndView mav = new ModelAndView("error/exception"); mav.addObject("name", e.getClass().getSimpleName()); mav.addObject("message", e.getMessage()); return mav; } @ExceptionHandler(AjaxException.class) public void Ajaxexception(Exception e, HttpServletResponse response) { //用于拦截ajax的请求 Map<String,Object> map=new HashMap<String, Object>(); map.put("name", e.getClass().getSimpleName()); map.put("message", e.getMessage()); JsonUtil.writeJsonData(map, response); } }
自定义ajax异常类
public class AjaxException extends Exception { //自定义ajax异常 public AjaxException(String message) { super(message); } public AjaxException() { super(); } }
将对象处理成json
这里使用的是alibaba的fastjsonfastjson的 POM.XML配置
<!-- fastJSON包 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.1.22</version> </dependency>
/** * 将数据以JSon的形式写入PrintWriter中的工具类 * @author Evil */ public class JsonUtil { public static void writeJsonData(Object object,HttpServletResponse response) { try { response.setContentType("application/json;charset=UTF-8"); response.setCharacterEncoding("UTF-8"); PrintWriter out = response.getWriter(); out.print(JSONArray.toJSONString(object)); out.flush(); out.close(); } catch (Exception e) { e.printStackTrace(); } } }
测试
控制器@Controller @RequestMapping(produces = ("text/html;charset=UTF-8")) public class TestController { @RequestMapping("test.do") public String test() throws Exception{ if(true){ throw new IOException("this is io exception"); } return null; } @RequestMapping("ajaxTest.do") public String ajaxTest() throws AjaxException{ if(true){ throw new AjaxException("this is io exception"); } return null; } }
访问test.do
Ops! Something went wrong
IOException: this is io exception
访问呢ajaxTest.do
{"message":"this is io exception","name":"AjaxException"}
spring mvc 全局控制器完成
相关文章推荐
- 分享微信开发Html5轻游戏中的几个坑
- 一个jar包里的网站
- 一个jar包里的网站之文件上传
- 一个jar包里的网站之返回对媒体类型
- Zend的MVC机制使用分析(二)
- ASP.NET MVC 4 捆绑和缩小实例介绍
- ASP.NET MVC中将控制器分离到类库的实现
- asp.net实现在非MVC中使用Razor模板引擎的方法
- ASP.NET MVC中的AJAX应用
- 如何在MVC应用程序中使用Jquery
- ASP.NET MVC小结之基础篇(二)
- ASP.NET小结之MVC, MVP, MVVM比较以及区别(一)
- Asp.net实现MVC处理文件的上传下载功能实例教程
- ASP.NET MVC小结之基础篇(一)
- spring+html5实现安全传输随机数字密码键盘
- Spring中属性注入详解
- Flex中最好的MVC框架Mate框架
- struts2 spring整合fieldError问题
- ASP.NET MVC学习笔记
- 关于php mvc开发模式的感想