1.返回给页面的json工具类java
public class JsonResultUtil { @SuppressWarnings({ "rawtypes", "unchecked" }) private static Map<String,Object> json = new HashMap(0); public static Map<String,Object> success(){ return success(0,"操做成功"); } public static Map<String,Object> success(Integer code,String message){ json.put("code", code); json.put("msg", message); return json; } public static Map<String,Object> error(Integer code,String message){ json.put("code", code); json.put("msg", message); return json; } }
2. 流程状态枚举类json
public enum ResultEnum { NORMAL(0,"正常"), FLOW_END_ERROR(804,"【操做失败】流程已结束, 请联系系统管理员"), ; ResultEnum(Integer code,String message){ this.code = code; this.message = message; } private Integer code; private String message; public Integer getCode() { return code; } public String getMessage() { return message; } }
3.编写统一异常处理类(Spring只有抛出RuntimeException这个异常类才会执行事务的回滚)ide
public class MyException extends RuntimeException{ private Integer code; public MyException(ResultEnum resultEnum){ super(resultEnum.getMessage()); this.code = resultEnum.getCode(); } public MyException(Integer code,String message){ super(message); this.code = code; } public Integer getCode() { return code; } public void setCode(Integer code) { this.code = code; } }
4. 在Service层编写业务(抛出异常后不执行后面的代码)工具
@Service public class UserServiceImpl implements UserService{ @Autowired private UserDao userDao; @Override @Transactional public void ex(){ User user = new User(); user.setName("_Artisan"); userDao.save(user); if(2>1){ throw new MyException(ResultEnum.FLOW_END_ERROR); } System.out.println("###### haha #######"); } }
5. 在Controller捕获异常(抛出异常后面的代码仍然执行),返回给错误信息给页面。页面接收到信息可作对应的弹窗提示测试
@Controller public class UserJson implements ModelDriven<User>{ private User user; @Autowired private UserService userService; private Map<String,Object> json = JsonResultUtil.success(); private void printJson(Object o) { getPrintWriter().write(JSONObject.toJSONString(o)); } // 测试 public void test(){ try{ userService.ex(); }catch(MyException e){ json = JsonResultUtil.error(e.getCode(), e.getMessage()); } printJson(json); } public PrintWriter getPrintWriter() { if(null == printWriter){ try { printWriter = getResponse().getWriter(); } catch (IOException e) { e.printStackTrace(); } } return printWriter; } @Override public User getModel() { if (s == null) { s = new User(); } return s; } // 省略User get、set的方法 }