springMVC
1、springMVC 的工作流程
前段发起请求 ---> DispatcherServlet --->通过 HandlerMapping 找到对应的处理链对象--->调用适配器执行 handlerAdapter--->返回对应的 ModleAndView--->经过 DispatcherServlet 返回给请求方。
2、Ajax 的请求原理
前段请求进来 会经过一个转换器 HttpMessageConverter(spirng 默认实现为 JackSon)把前段传递过来的 json 转换为 java 对象,请求完成后,写时把 java 对象转换为 json 字符串
3、Spring 与 SpringMVC 父子容器
3.1、为什么需要父子容器? 就功能来说可以不用父子容器 ,比如 springBoot
1)、所以父子容器主要有划分框架边界,service 与 dao 层 Spring 容器管理,controller 层交给 SpringMVC 管理
2)、规范整体架构:父容器无法范文子容器,子容器可以访问父容器 如 service 如法访问 controller
3)、方便框架切换 ,如由 springmvc 切换到 struts2,只需要切换 springMVC 容器的部分
3.2、是否可以把所有的 springMVC 容器的 bean 交给 spring 容器管理?
不可以,在生成 HandlerMethods 时,根据名称拿到 Beandefinition 解析的 requestMapping,并没有调用父容器,所以如果托管给 Spring 容器管理,则会出现,请求找不到 404 的错误
3.3、是否可以把所有的请求都给 SpringMVC 容器管理?
可以 父容器一般是获取子容器中获取不到的对象,所以放在一个容器中是可以的,但是一般不推荐这么做。【如果有 AOP 或者是事务,则需要把这部分放到 SpringMVC 容器中,不然一部分在 spring 容器中一部分在 SpringMVC 中 可能会导致 AOP 失效,当然事务也就会失效】
评论