黑马SSM学习日记 | day03

SpringMVC

  • SpringMVC是一种表现层框架技术,用于简便开发,可以替代servlet
  • 需要创建一个类实现AbstractDispatchServletInitializer接口,并实现三个方法,
  • Springmvc 需要创建servlet容器,然后springmvc对应的bean放入容器,让tomcat能运行

工作流程

启动阶段

  • tomcat启动,并将dispatchservlet加载进servlet容器
  • 然后执行创建Spring MVC的IOC容器的方法,创建一个WebApplicationContext,它是Spring的IOC容器,但是为Spring MVC服务
  • 然后读取Java配置类,确定扫描路径
  • 然后再读取bean类,并将其放入WebApplicationContext,
  • 扫描每个Controller和@RequestMapping,建立映射关系,比如 /save -> UserController.save(),这些映射放于HandlerMapping组件中,至此,spring mvc初始化完成

bean的加载控制

  • Spring MVC Bean和 Spring Bean都是IOC bean,但是由于它们所处的层级不同,生命周期不同,所以要由不同的ApplicationContext管理;
  • Spring MVC Bean由WebApplicationContext管理,而Spring Bean(Service、DAO)由Root ApplicationContext管理
  • DispatchServlet负责初始化并使用WebApplicationContext

请求与相应

responseBody注解将控制器的返回值作响应体,里面真正在起作用的是类型转换器HttpMessageConverter

rest风格 representation state transfer

  • 简化开发
  • 隐藏资源的访问行为

restController注解其实是替代了controller和resposebody,设置开发为rest风格

SSM整合

为了不产生歧义,就需要对表现层数据封装,返回统一格式

拦截器

  • 过滤器Filter是servlet技术,而拦截器Interceptor是SpringMVC技术
  • 过滤器对所有访问增强,而拦截器只对SpringMVC的访问增强
  • 创建一个Interceptor类实现HandlerInterceptor接口,重写preHandle方法,只有preHandle方法return true之后,才会放行

总的流程

首先,请求到达tomcat(servlet容器),tomcat根据配置,将请求交给spring mvc的dispatchservlet,然后dispatchservlet会去查找HandlerMapping(用到了之前的那个map),然后去执行controller方法(其实这里是利用反射invoke()执行的)。如果方法加了ResponseBody,Spring 会将对象转为JSON格式,然后tomcat再将这个JSON格式的数据返回给前端。

  • 在项目启动的时候,Spring会扫描所有的Controller,解析其中的RequestMapping,把这些URL和方法一一映射起来,存放在一个map里面
  • 当请求来了的时候,dispatchservlet会拿着这个url去map里面直接get,速度极快

今日学习心得

把Spring MVC看完,终于明白之前为什么要那么写了,终于明白之前的哪些注释是啥意思了。对我来说,让我更加高兴的是,终于明白这个前端请求怎么与后端服务串起来,怎么访问到对应的资源,解答了很多以前的疑惑。现在看着这些注释,脑子里不再是一团浆糊了。继续加油!

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务