Spring MVC

Spring容器是Spring MVC的父容器;
Spring应用的IOC容器通过tomcat的Servlet或Listener监听启动加载;
Spring MVC的容器由DispatcherServlet作为入口。

过程原理

  1. DispatcherServlet(前端控制器) 把请求分发到HandlerMapping (default: BeanNameUrlHandlerMapping)
  2. HandlerMapping匹配url请求的Handler Controller / Interceptor(拦截器) (根据xml / 注解)
  3. 返回给DispatcherServlet
  4. DispatcherServlet处理适配器执行Handler
  5. 处理器适配器执行完成后,Controller返回ModelAndView
  6. DispatcherServlet请求视图解析器, 解析后向DispatcherServlet返回View
  7. DispatcherServlet进行视图渲染,向用户响应结果

分工职责

  • 前置控制器DispatcherServlet
    作用:接收请求 返回结果
  • 映射处理器 HandlerMapping
    作用:根据请求映射为HandlerExecutionChain对象,查找对应的Handler
  • 处理器适配 HandlerAdapter
    作用:调用处理器相对应的处理方法,返回ViewAndModel
  • 视图解析器 ViewResolver
  • 视图的渲染 View

SpringMVC的优点?

  1. 方便解耦,简化开发,职责鲜明,分工明确
  2. AOP的很好支持,方便面向切面编程
  3. 对主流的框架提供了很好的集成支持
  4. Spring属于低侵入,代码污染极低

SpringMVC的控制器是不是单例模式,如果是,有什么问题,怎么解决?

是单例模式,所以在多线程访问的时候有线程安全问题,不要用同步,会影响性能,解决方案是在控制器里面不能写字段

SpringMVC怎样设定重定向和转发 ?

在返回值的前面加”forword”,就可以实现让结果转发;
在返回值的前面加上”redirect”,就可以让返回值重定向。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容