springmvc 参数转换

题外:

spring3.1后对注解使用的handlermapping和adapter是RequestMappingHandlerMapping 和 处理器适配器RequestMappingHandlerAdapter,之前是DefaultAnnotationHandlerMapping和处理器适配器AnnotationMethodHandlerAdapter

题内:

之前通过url找到对应的类的处理方法,然后需要将报文中的参数转换为处理方法需要的参数,具体实现是靠adapter中的解析器实现的。adapter对应参数的解析,也是先注册解析器,然后判断那个解析器适合就用哪个,这些解析器可以自己构建,系统也提供一下默认的,通过getDefaultArgumentResolvers获得。每个解析器的实现类都会实现supportsParameter方法,用于判断是否支持处理方法中的参数。比如参数上有@requestbody,则RequestResponseBodyMethodProcessor这个解析器会被选中,这个解析器没有用databinder去做参数类型的转换(报文中的参数类型转换为处理方法中的参数类型),而是使用HttpMessageConverter作为转换器,用户可以注册各种实现了httpmesageConverter接口的类用于类型转换,当然系统也提供了一下默认实现类。一般@requestbody用于复杂类型的转换,入json、xml。又如参数上有@requestpara,他会选择RequestParamMethodArgumentResolver,这个解析器的转换器是databinder(Conversionservice),一般用于简单类型的转换,比如form,它一般是先从request.getParameter获取对应参数的字符串值,然后通过转换器进行转换。

转换器的选择是根据报文content-type和目标类型来匹配合适的转换器()

时间: 2024-11-07 15:48:42

springmvc 参数转换的相关文章

SpringMVC的@InitBinder参数转换

@Controller @RequestMapping("/index") public class IndexController { /** * 解决前端传递的日期参数验证异常 * * @param binder * @author hzj */ @InitBinder({"param", "date"})//指定校验参数 protected void initBinder(WebDataBinder binder) { // binder.

springmvc(4)注解简单了解

对于我这样的新人来说,因为是刚开始做项目,所以以前的技术不是用的很多,就比如springmvc来说,实际上使用的都是注解形式的,对于那些全部都是配置的来说,虽然也了解一些,但是实际上还是没试用过的. 下面就理一下注解的各种用法: @Controller:用于标识是处理器类: @RequestMapping:请求到处理器功能方法的映射规则: @RequestParam:请求参数到处理器功能处理方法的方法参数上的绑定: @ModelAttribute:请求参数到命令对象的绑定: @SessionAt

Springmvc简单入门

SpringMVC 目录 一.         HelloWorld以及前期相关的配置工作... 3 二.         RequestingMapping修饰类... 4 三.         RequestMapping修饰请求头.请求参数等... 4 四.         RequestMapping支持通配符的情况antPAth. 6 五.         使用PathVariable. 6 六.         HiddenHttpMethodFilter. 6 七.        

SpringMVC配置XML

核心架构的具体流程步骤如下: 1. 首先用户发送请求——>DispatcherServlet,前端控制器收到请求后自己不进行处理,而是委托给其他的解析器进行处理,作为统一访问点,进行全局的流程控制: 2. DispatcherServlet——>HandlerMapping, HandlerMapping将会把请求映射为HandlerExecutionChain对象(包含一个Handler处理器(页面控制器)对象.多个HandlerInterceptor拦截器)对象,通过这种策略模式,很容易添

SpringMVC【参数绑定、数据回显、文件上传】

前言 本文主要讲解的知识点如下: 参数绑定 数据回显 文件上传 参数绑定 我们在Controller使用方法参数接收值,就是把web端的值给接收到Controller中处理,这个过程就叫做参数绑定... 默认支持的参数类型 从上面的用法我们可以发现,我们可以使用request对象.Model对象等等,其实是不是可以随便把参数写上去都行???其实并不是的... Controller方法默认支持的参数类型有4个,这4个足以支撑我们的日常开发了 HttpServletRequest HttpServl

SpringMVC源码阅读:属性编辑器、数据绑定

1.前言 SpringMVC是目前J2EE平台的主流Web框架,不熟悉的园友可以看SpringMVC源码阅读入门,它交代了SpringMVC的基础知识和源码阅读的技巧 本文将通过源码(基于Spring4.3.7)分析,弄清楚SpringMVC如何通过类型转换完成数据绑定和属性编辑器的原理,并自定义属性编辑器 2.源码分析 进入RequestMappingHandlerAdapter,该类支持参数解析和数据返回,进入invokeHandlerMethod方法 794行构造WebDataBinder

SpringMVC(AbstractController,拦截器,注解)

1.Controller接口及其实现类 Controller是控制器/处理器接口,只有一个方法handleRequest,用于进行请求的功能处理(功能处理方法),处理完请求后返回ModelAndView对象(Model模型数据部分 和 View视图部分). 如果想直接在处理器/控制器里使用response向客户端写回数据,可以通过返回null来告诉DispatcherServlet我们已经写出响应了,不需要它进行视图解析 Spring默认提供了一些Controller接口的实现类以方便我们使用,

0105 springMVC开发基础

背景 已经明确了MVC的思想和SpringMVC的基本流程,下面就都具体的mvc开发细节知识了. @RequestMapping springMVC核心流程中,启动阶段会把注解@RequeestMapping注解所配置的内容保存到HandlerMapping中,然后等待请求到达. 看一下源码: 简单分一下类: 方法 说明 name,value,path 标识控制器方法的访问url,可以配置多个 method 处理的方法,http的标准方法,比如get,post等 params 参数 header

SpringMVC:Controller 及 RestFul风格

SpringMVC:Controller 及 RestFul风格 控制器Controller 控制器复杂提供访问应用程序的行为,通常通过接口定义或注解定义两种方法实现. 控制器负责解析用户的请求并将其转换为一个模型. 在Spring MVC中一个控制器类可以包含多个方法 在Spring MVC中,对于Controller的配置方式有很多种 我们来看看有哪些方式可以实现: Controller是一个接口,在org.springframework.web.servlet.mvc包下,接口中只有一个方