一、什么是MVC模式?
MVC:MVC是一种设计模式。 MVC的原理图: 解释: M-Model 模型(完成业务逻辑:有javaBean构成,service+dao+entity) V-View 视图(做界面的展示 jsp,html……) C-Controller 控制器(接收请求—>调用模型—>根据结果派发页面)
二、什么是SpringMVC?
SpringMVC是一个MVC开源框架,SpringMVC = Struct2 + Spring ,SpringMVC相当于Struts2加上Spring的整合,这里有一个疑问就是,SpringMVC和Spirng有什么关系呢?这个在百度百科上有一个很好的解释:意思就是说,SpringMVC是Spring的一个后续产品,其实就是在Spring原有的基础之上,又提供了Web应用的MVC模块,可以简单得把SpringMVC理解成为是Spring的一个子模块(类似于IOC,AOP这样的模块),网络上经常有人说SpringMVC和Spirng无缝集成,其实SpringMVC就是Spring的一个子模块,所以根本不需要同Spring进行整合。
三、SpringMVC的工作原理
我们先来看一张图 解释: 1、用户发送请求至前端控制器DispatcherServlet. 2、DispatcherServlet收到用户的请求之后调用HandlerMapping处理器映射器. 3、HandlerMapping处理器映射器根据配置或者是注解找到最终要执行的Handler处理器(这里的Handler处理器其实也就是Controller,也叫后端控制器。),并生成处理器对象及处理器拦截器(如果有则生成)一并返回给Dispatcher. 4、DispatcherServlet调用HandlerAdapter处理器适配器。 5、HandlerAdapter处理器适配器根据特定的HandlerAdapter处理器适配器要求的规则执行不同类型的Handler处理器。 6、Handler(Controller)执行完后返回一个ModelAndView给HandlerAdapter处理器适配器。 7、HandlerAdapter处理器适配器将Controller执行返回的结果ModelAndView返回给DispatcherServlet. 8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器。 9、ViewReslover视图解析器根据逻辑视图名解析成物理视图名(具体的页面地址),再生成View视图对象,包括(JstlView、FreemarkerView、PdfView等),再返回给DispatcherServlet。 10、DispatcherServlet根据View将模型数据填充到视图中,既进行视图渲染。 11、DispatcherServlet响应用户
四、Spirng工作原理中各组件的作用
组件: 1、前端控制器DispatcherServlet(不需要工程师开发),由框架提供。 作用:接收请求,响应结果,相当于转发器,中央处理器。 解释:用户请求到达前端控制器,它就相当于mvc模式中的c,dispatcherServlet是整个流程控制的中心,由它 调用其它组件处理用户的请求,dispatcherServlet的存在降低了组件之间的耦合性。
2、处理器映射器HandlerMapping(不需要工程师开发),由框架提供。 作用:根据配置或者是注解找到最终要执行的Handler处理器(这里的Handler处理器其实也就是Controller,也叫后端控制器。),并生成处理器对象及处理器拦截器(如果有则生成)一并返回给Dispatcher.SpringMVC提供了不同的映射方式如,配置文件方式、注解方式、师兄接口方式等。
3、处理器适配器HandlerAdapter 作用:HandlerAdapter处理器适配器根据特定的HandlerAdapter处理器适配器要求的规则执行不同类型的Handler处理器,其中Handler(Controller)执行完后返回一个ModelAndView给HandlerAdapter处理器适配器,可以通过拓展适配器可以对更多类型的处理器进行执行。
4、处理器Handler(需要工程师开发) 解释:Handler 是继DispatcherServlet前端控制器的后端控制器, 在DispatcherServlet的控制下Handler对具体的用户请求进行处理。由于Handler涉及到具体的用户业务请求,所以一般情况需要工程师根据业务需求开发Handler。 这里有一个需要注意的点:编写Handler时按照HandlerAdapter的要求去做, 这样适配器才可以去正确执行Handler。
5、视图解析器View Resolver(不需要工程师开发),由框架提供。 作用:ViewReslover视图解析器根据逻辑视图名解析成物理视图名(具体的页面地址),再生成View视图对象,SpringMVC框架提供了很多的View类型中,其中包括JstlView、FreemarkerView、PdfView等,再返回给DispatcherServlet。
6、View:View是一个接口,其实现支持不同的View类型,SpringMVC框架提供了很多的View类型中,其中包括JstlView、FreemarkerView、PdfView等。
关于SpringMVC的工作原理是挺复杂的,但是也不难理解!
五、SpringMVC常用的注解有哪一些?
@RequestMapping:用于处理用户请求的URL映射的注解,该注解可用于类上,也可以用于方法上。如果在类上表示类中的所有请求的方法都是以该地址作为父路劲的。
@RequestBody:该注解用于实现接收HTTP请求的JSON数据,并将传过来的Json数据转换为Java对象。
@ResponseBody:该注解实现将Controller方法中返回的对象自动转化为Json对象响应给用户。
|