java中的控制器,浅谈java控制器拦截之ControllerAdvice

一、Controller跨域jsonp格式返回

/**

* JSONP支持

*/

@ControllerAdvice(basePackages = "com.kugou.fanxing.romantic.controller")

public class JsonpAdvice extends AbstractJsonpResponseBodyAdvice{

public JsonpAdvice() {

super("jsonCallBack","jsonpcallback");

}

}

二、Controller全局异常统一拦截

/**

* 统一异常拦截

*/

@ControllerAdvice(assignableTypes = {AController.class})

public class MobileExceptionHandler {

@ExceptionHandler(value = BizException.class)

@ResponseBody

public Result jsonErrorHandler(HttpServletRequest req, BizException e) {

return Response.failed(e);

}

@ExceptionHandler(value = {Exception.class})

@ResponseBody

public Result jsonErrorHandler(HttpServletRequest req, Exception e) {

return Response.failed(ErrCode.UNKNOWN_ERROR);

}

}

三、Controller全局共享数据

@ControllerAdvice

public class GlobalShareDataHandler{

/**

* 全局数据绑定,所有controller都可以通过Model对象拿到这个map

* Map map = model.asMap();

* System.out.println(map);

* @return

*/

@ModelAttribute(name = "md")

public Map mydata() {

HashMap map = new HashMap<>();

map.put("age", 99);

map.put("gender", "男");

return map;

}

}

四、Controller全局输入参数预处理(加一个前缀,避免参数重名)

/**

* 输入参数b的每一个字段名前加上前缀b.

*/

@ControllerAdvice

public class GlobalBinderHandler{

@InitBinder("b")

public void b(WebDataBinder binder) {

binder.setFieldDefaultPrefix("b.");

}

}

@RestController

public class Hello {

@PostMapping("/book")

public void addBook(@ModelAttribute("b") Book book, @ModelAttribute("a") Author author) {

System.out.println(book);

System.out.println(author);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值