Servlet底层API参数解析
这一节是探索使用ServletAPI作为参数时,怎么解析这个参数,是由27个解析器中那个解析器解析
控制器方法
@RequestMapping("/haha")
public String testhaha(HttpServletRequest request){
request.setAttribute("msg","hello");
request.setAttribute("code","200");
return "forward:/requestParam";
}
有了上面的经验,直接来到确定参数解析器argumentResolvers这一步,在HandlerMethodArgumentResolverComposite-->>getArgumentResolver。
经过for循环将控制器参数和参数解析器挨个比较后,找到了ServletRequestMethodArgumentResolver-->>supportsParameter来作为参数解析器,在这个方法里面,或逻辑确定是否有其中一个来处理这个参数
public boolean supportsParameter(MethodParameter parameter) {
//首先获取控制器参数的类型,是一个HttpServlet类型的
Class<?> paramType = parameter.getParameterType();
return (WebRequest.class.isAssignableFrom(paramType) ||
ServletRequest