[关闭]
@wxf 2018-01-20T23:23:54.000000Z 字数 1790 阅读 708

SpringMVC相关问题整理

面试系列


简单的谈一下SpringMVC的工作流程

799093-20160724233025857-1256444961.jpg-49.8kB

  1. 用户发送请求至前端控制器DispatcherServlet
  2. DispatcherServlet收到请求调用HandlerMapping处理器映射器。
  3. 处理器映射器找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
  4. DispatcherServlet调用HandlerAdapter处理器适配器
  5. HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。
  6. Controller执行完成返回ModelAndView
  7. HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
  8. DispatcherServlet将ModelAndView传给ViewReslover视图解析器
  9. ViewReslover解析后返回具体View
  10. DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
  11. DispatcherServlet响应用户

SpringMVC与Struts2的主要区别

如何解决POST请求和GET请求中中文乱码问题

常用框架的线程安全性问题

Servlet是单例多线程的方式来处理请求的。
Struts1是单例多线程的方式来处理请求的。
Struts2是多例单线程的方式来处理请求的,所以不存在线程安全问题。
SpringMVC是单例多线程的方式来处理请求的。因为Spring的IOC容器默认管理的bean是单实例的。
注意:当使用Spring管理Struts2的Action时,需要在Action中添加@Scope("prototype")注解进行修饰,从而使Action成为多例形式。这符合Struts2的要求,Struts2为每一个请求创建一个新的Action实例。当请求结束时,bean就会被jvm销毁并作为垃圾收回。

如何理解MVC模式(模型-视图-控制器)

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注