一、什么是Spring MVC?
Spring MVC是spring的一个模块,基于MVC的一个框架,不需要中间整合层。
二、Spring MVC的优点?
1、Spring MVC是基于组件技术的,全部的应用对象,无论是控制器和视图,还是业务对象,都是组件,并且和spring提供的基础结构紧密集成。
2、不依赖与Servlet API(虽然如此,但在实现的时候还是要依赖与servlet)。
3、可以任意使用各种试图技术,而不仅仅局限于jsp。
4、支持各种请求资源的映射。
5、是易于扩展的。
三、Spring MVC的工作原理
1、客户端发送请求到dispatcherServlet。
2、dispatcherServlet查询handlerMapping找到请求的controller。
3、controller调用业务逻辑,返回ModelAndView。
4、DispatcherServlet查询ModelAndView,找到指定的视图。
5、视图将结果返回到客户端。
五、Spring MVC流程
1、用户发送请求到前端控制器(DispatcherServlet)。
2、前端控制器(DispatcherServlet)收到请求后,调用处理器映射器(handlerMapping)
3、处理器映射器(handlerMapping)找到具体的处理器(handler)(通过xml配置或者注解进行查找),生成处理器以及处理器拦截器,然后返回给前端控制器(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)向用户相应结果。
六、Spring MVC的控制器是单例模式吗?
是单例模式,所以在多线程访问的时候有线程安全问题。这种线程安全问题不能用同步解决,会影响性能,只需要在控制器里面不写字段就可以了。
七、Ssruts2和Spring MVC有什么区别?
1、Spring MVC的入口是一个servlet,即前端控制器,而struts2的入口是一个filter过滤器。
2、Spring MVC是基于方法开发的,即一个url对应一个方法,请求参数传递到方法的形参,设计为单例或多例模式,不过建议用单例。struts2是基于类开发,传递参数是通过类的属性,只能计为多例。
3、Spring MVC通过参数分析器将request请求内容解析,并给方法的形参赋值,将数据和视图封装成ModelAndView,最后将ModelAndView中的模型数据通过request域传输到页面,jsp解析用jstl。struts2采用值栈存储请求和响应的数据,通过OGNL存取数据,
八、必背
1、在Spring MVC中控制器的注解一般用@controller,表示是控制层,不能用别的来代替
2、@RequetMapping是一个用来处理请求地址映射的注解,可用在类或者方法上。用在类上,表示此类有相应请求的方法都是以该地址作为父路径。
3、直接在方法上面加@RequestMapping注解可以把某个请求映射到特定的方法上。比如想拦截get方式提交的方法可以这样写@RequestMapping(method=RequestMethod.GET).
希望能帮助到准备面试的你
网友评论