SpringMVC介绍
MVC设计模式介绍:MVC全名 (模型)Model-(视图)View-(控制)Controller的缩写,是一种用于设计创建 Web 应用程序表现层的模式。MVC 中每个部分各司其职:<br>
Model(模型):模型包含业务模型和数据模型,数据模型用于封装数据,业务模型用于处理业务。
View(视图):通常指的就是我们的 jsp 或者 html。作用一般就是展示数据的。通常视图是依据模型数据创建的。
Controller(控制器):是应用程序处理用户交互的部分<br>
SpringMVC的执行流程
接收请求->返回响应,跳转页面<br>
SpringMVC工作流程(开发流程)
大致工作流程
1.配置DispatcherServlet的前端控制器<br>
2.开发具体业务逻辑的Handler<br>
3.xml配置Controller扫描器,配置springmvc三大件
4.将springmvc.xml路径告诉springmvc(DispatcherServlet)<br>
请求处理流程
1.用户发送请求到前端控制器DispatcherServlet<br>
2.DispatcherServlet收到请求后调用HandlerMapping处理器映射器<br>
3.HandlerMapping处理器映射器根据传递的Url去找对应的Handler(后端处理器),生成处理器对象和拦截器对象(有则生成),一并返回给DispatcherServlet<br>
4.DispatcherServlet调用HandlerAdapter处理器适配器去调用Handler<br>
5.处理器适配器执行Handler逻辑
6.Handler执行完成后返回ModelAndView给处理器适配器
7.处理器适配器去给前端控制器DispatcherServlet返回ModelAndView<br>
8.前端控制器请求视图解析器进行视图解析<br>
9.视图解析器向前端控制器返回View<br>
10.前端控制器进行视图渲染,就是将模型数据(在ModelAndView对象中)填充到request域中<br>
11.前端控制器向用户响应结果<br>
SpringMVC九大组件
HandlerMapping(处理器映射器):HandlerMapping 是用来查找 Handler 的,也就是处理器,具体的表现形式可以是类,也可以是方法。<br>
HandlerAdapter(处理器适配器):HandlerAdapter 是一个适配器。因为 Spring MVC 中 Handler 可以是任意形式的,只要能处理请求即可。但是把请求交给 Servlet 的时候,由于 Servlet 的方法结构都是doService(HttpServletRequest req,HttpServletResponse resp)形式的,要让固定的 Servlet 处理方法调用 Handler 来进行处理,便是 HandlerAdapter 的职责。
HandlerExceptionResolver:HandlerExceptionResolver 用于处理 Handler 产生的异常情况。它的作用是根据异常设置ModelAndView,之后交给渲染方法进行渲染,渲染方法会将 ModelAndView 渲染成页面。<br>
ViewResolver:即视图解析器,用于将String类型的视图名和Locale解析为View类型的视图,只有一个resolveViewName()方法。
RequestToViewNameTranslator:RequestToViewNameTranslator 组件的作用是从请求中获取 ViewName.因为 ViewResolver 根据ViewName 查找 View,但有的 Handler 处理完成之后,没有设置 View,也没有设置 ViewName,便要通过这个组件从请求中查找 ViewName。<br>
LocaleResolver:ViewResolver 组件的 resolveViewName 方法需要两个参数,一个是视图名,一个是 Locale。LocaleResolver用于从请求中解析出 Locale,比如中国 Locale 是 zh-CN,用来表示一个区域。这个组件也是 i18n 的基础。
ThemeResolver:ThemeResolver 组件是用来解析主题的。<br>
MultipartResolver:MultipartResolver用于上传请求,通过将普通的请求包装成 MultipartHttpServletRequest 来实现。<br>
FlashMapManager:FlashMap 用于重定向时的参数传递,比如在处理用户订单时候,为了避免重复提交,可以处理完post请求之后重定向到一个get请求,这个get请求可以用来显示订单详情之类的信息。<br>
配置文件中相关配置
springmvc.xml
配置扫描包路径
自动注册最合适的处理器映射器,处理器适配器(调用handler方法)
配置springmvc的视图解析器
静态资源配置的两种方案
web.xml
配置DispatcherServlet
Restful风格支持
概念:Restful 是一种 web 软件架构风格,它不是标准也不是协议,它倡导的是一个资源定位及资源操作的风格。
和原本的请求url的区别
原本:http://localhost:8080/user/queryUserById.action?id=3<br>
RestFul:http://localhost:8080/user/3
RESTful风格URL:互联网所有的事物都是资源,要求URL中只有表示资源的名称,没有动词。
RESTful风格资源操作:使用HTTP请求中的method方法put、delete、post、get来操作资源。分别对应添加、删除、修改、查询。不过一般使用时还是 post 和 get。put 和 delete几乎不使用。<br>
RESTful风格资源表述:可以根据需求对URL定位的资源返回不同的表述(也就是返回数据类型,比如XML、JSON等数据格式)。
Restful应用场景
Get
Post
Put
Delete
与Ajax之间进行交互
@RequestBody: 用于获取请求体中的内容,如{"id":"1","name":"李四"}
@ResponseBody:用于直接返回,就不会再走视图解析器了,类似response.getWriter().write()