您的位置:首页 > 编程语言 > Java开发

springMVC的自定义参数解析器HandlerMethodArgumentResolver的使用

2017-12-29 14:47 666 查看
springMVC是比较流行的表现层框架,扩展性比较好,在项目中遇到一个问题:客户端传的参数是与公司规范报文(xml)映射的对象,规范XML是一个四层结构,节点包含四层,按照XML映射关系,将每一层映射为一个实体对象;对象的结果就是父-子-孙-曾孙。而这种结构存储到数据库时,效率极差。因此将存储到数据库的实体对象简化为两层结构,将不会出现循环的节点都放到父类中,出现循环的节点放到子类中。这种情况就需要对前端传入的复杂对象转换为简单对象。而在代码中硬编码的方式是比较low的。就利用springMVC的自定义解析器。

1、创建自定义注解

@Target(ElementType.PARAMETER)

@Retention(RetentionPolicy.RUNTIME)

public @interface Json {

}

2、创建自定义解析器实现HandlerMethodArgumentResolver接口,实现其中两个方法。其中supportsParameter用来判断方法形参里是否有自定义注解@Json,如果有则返回true。返回true时就会调用自定义的解析器解析方法。

3、实现resolveArgument方法,此为解析和绑定的方法。方法的形参中MethodParameter对象是方法形参的对象,NativeWebRequest是请求对象。通过这两个对象就可以获得请求参数。

获得客户端传的json对象的例子:

HttpServletRequest request = webRequest.getNativeRequest(HttpServletRequest.class);

        HttpInputMessage inputMessage = new ServletServerHttpRequest(request);

        InputStream inputStream = inputMessage.getBody();

从输入流中就可以读取客户端发送的json数据
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐