springboot中是怎样把HttpServletRequest传入到controller中的?

@Controller
public class TestController{

    public String getUserId(HttpServletRequest request){
        return (String)request.getSession().getAttribute("userId");
    }
    public String getOrganId(HttpServletRequest request){
        return (String)request.getSession().getAttribute("organId");
    }
}

比如上面代码,springboot为什么会自动把request传入到方法中?
或者说controller的方法可以自定义,五花八门,springboot是如何知道怎么,传参的呢?

阅读 10.9k
2 个回答
  1. 不是spring-boot,是spring-mvc
  2. 可以处理的参数类型很多,但是也有处理不了的,详见文档/源码

题主是不是一上来接触了SpringBoot?还是要慢慢来啊。
首先HttpServletRequest是由如tomcat这种Servlet容器创建的。
Tomcat 创建的 Request 和 Response 的类结构图。

clipboard.png

至于这个HttpServletRequest是怎么传到你对应的controller方法内的,实际上就是SpringMVC里面的DispatchServlet起的作用。描述起来很大一堆,推荐题主去看一下对应的源码或者文章。这里也给一张图。

clipboard.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题