未完 Spring MVC

[b]Annotations for Http params:[/b]
@RequestBody
@PathVariable
@RequestParam
@ModelAttribute


[b]@ExceptionHandler & @ControllerAdvice(这个advice注解是在 spring 3.2 之后才有的) 及基于它们两个的 Spring MVC 异常处理[/b]:
问题: spring MVC 在 json 反序列化(如通过 @RequestBody 反序列化一个 enum)出错时,只返回 400,后台无任何 log!导致错误的排查比较困难。
。。。
[url]http://stackoverflow.com/questions/6175600/spring-mvc-request-body-error-handling[/url]
解决:
。。。
[url]http://www.mkyong.com/spring-mvc/spring-mvc-exceptionhandler-example/[/url]
[url]http://www.javacodegeeks.com/2013/06/spring-mvc-error-handling-flow.html[/url]


Validation:
[url]http://jinnianshilongnian.iteye.com/blog/1733708[/url]


Spring MVC 的 单元测试:
1 使用 MockHttpServletRequest & MockHttpServletResponse 等:
[url]http://stackoverflow.com/questions/1401128/how-to-unit-test-a-spring-mvc-controller-using-pathvariable[/url]
JSON REST请求的话,参照下面链接设置MappingJacksonHttpMessageConverter:
[url]http://stackoverflow.com/questions/9138555/spring-framework-test-restful-web-service-controller-offline-i-e-no-server-n[/url]
需要注意的是,这种方式无法对Controller的@Valid做验证。
2 如果 Spring 版本为 3.1+,可以考虑使用spring-test-mvc,使用它做spring mvc的单元测试,Controller的@Valid可以很好的被验证到:
[url]http://stackoverflow.com/questions/12308213/how-do-i-get-spring-mvc-to-invoke-validation-in-a-junit-test[/url]
引入spring-test-mvc的maven依赖后,测试很简单,如下:

EmailRest controller = applicationContext.getBean(EmailRest.class);
MockMvc myMockController = MockMvcBuilders.standaloneSetup(controller).build();
DefaultRequestBuilder requestBuilder = MockMvcRequestBuilders.post("/send").contentType(MediaType.APPLICATION_JSON)
.body("{\"email\":\"xxx@yyy.com\",\"subject\":\"您有新的好友请求,请登陆处理\",\"tag\":\"contactrequest\",\"content\":\"1234567890\"}".getBytes());
ResultActions ra = myMockController.perform(requestBuilder);
3 使用 spring 的 restTemplate
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值