spring mvc基本概念和原理_第1页
spring mvc基本概念和原理_第2页
spring mvc基本概念和原理_第3页
spring mvc基本概念和原理_第4页
spring mvc基本概念和原理_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Spring

MVC基本概念和原理URL根据请求信息到处理类的某个方法数据处理请求参数的绑定,校验,格式化器、异常处理请求处理的增强基本概念基于请求驱动->使用请求-响应模型使用MVC架构模式的思想约定优于配置(惯例优先原则)灵活的URL易于集成其他视图技术(Velocity,FreeMarker)灵活的数据绑定,验证,格式化机制,绑定任何对象简单的异常处理对静态资源的支持对restful风格的支持强大的JSP

库使开发者着重于自己的业务逻辑MVC基于MVC编写一个web项目①如何灵活的处理一个请求?通过请求参数匹配,请求方法匹配,请求头参数匹配,通配符支持,重定向支持②请求参数怎么组装成对象,请求参数的验证和格式化怎么做?分散在每个servlet里面?哦③在每个请求前后需要记录日志怎么办?④在请求完成后需要 资源怎么办?请求中间出现了异常也要保证资源的⑤页面前端需要从JSP转换为JSON数据怎么办?使用spring

mvc

这些问题都是浮云,而且经过了实践的检验,大大简化开发体系结构和流程体系结构和流程①客户端发出一个http请求,Web服务器接收到这个请求,如果匹配DispatcherServlet的请求 路径(在web.xml指定),web服务器将请求转交给DispatcherServlet处理②DispatcherServlet根据请求信息(URL,METHOD,HEADER等)从的

HandlerMap

中找到最合适的Handler(自己写的Controller)。连同的器集合构成一个执行链。③DispatcherServlet根据Handler从的HandlerAdaptor中找出第一个支持当前

Handler的适配器,并调用handler,返回ModelAndView。调用Handler之前做了参数的绑定,校验和格式化等处理④Handler根据请求参数处理业务,并可将业务结果设置在Model中,也可指定视图名称,控制重定向等。⑤Handler完成业务逻辑的处理后返回一个ModelAndView给DispatcherServlet.ModelAndView包含视图逻辑名和模型数据信息⑥ModelAndView中的逻辑视图名并非真正的视图对象(View),无法直接应用数据,所以,DispatcherServlet通过ViewResolver解析逻辑视图名到真正的视图对象⑦得到View后,调用render方法渲染页面,向response中写入特定格式的流⑧客户端得到响应信息,可能是html页面也可能是json字符串。默认实现默认实现:源代码配置Spring的配置文件,默认DispatcherServlet会加载WEB-INF/[DispatcherServlet的Servlet名字]-servlet.xml配置文件第一步:将请求到处理方法第二步:将Http请求的参数(String类型)绑定到处理方法的对应参数(多种类型)第三步:匹配类型-类型转换第四步:数据校验-指定@valid注第五步:对请求结果的渲染解依据:通过URL:通过URL-示例:通过请求方法①请求方法是请求的不同方式,标准的请求方法集合中除GET,POST请求外,还包含PUT,DELETE,HEAD,OPTIONS等方法。OPTIONS询问可以执行哪些方法;HEAD类似于GET,

但是不返回body信息,用于检查对象是否存在,以及得到对象的元数据;PATCH部分文档更改;TRACE用于 服务器.:通过请求头或请求参数后的调用:通过反射第一步:将请求到处理方法第二步:将Http请求的参数(String类型)绑定到处理方法的对应参数(多种类型)第三步:匹配类型-类型转换第四步:数据校验-指定@valid注第五步:对请求结果的渲染解参数绑定参数绑定:示例参数绑定:是否必需参数参数绑定:表单对象绑定参数绑定:不需要注解支持的其他入参①HttpServletRequest,HttpServletResponse②Model,SessionStatus,HttpEntity,Errors,WebRequest,Map③InputStream/Reader,OutputStream/Writer④java.util.Locale,java.security.Principal参数绑定原理给交参数绑定原理第一步:将请求到处理方法第二步:将Http请求的参数(String类型)绑定到处理方法的对应参数(多种类型)第三步:匹配类型-类型转换和格式化第四步:数据校验-指定@valid注第五步:对请求结果的渲染解类型转换转换器的

调用自定义转换器,支持3种类型自定义转换器:示例自定义转换器:注入,三种注入方式格式化格式化格式化:示例第一步:将请求到处理方法第二步:将Http请求的参数(String类型)绑定到处理方法的对应参数(多种类型)第三步:匹配类型-类型转换第四步:数据校验-指定@valid注解时第五步:对请求结果的渲染解数据校验JSR303校验示例校验校验结果第一步:将请求到处理方法第二步:将Http请求的参数(String类型)绑定到处理方法的对应参数(多种类型)第三步:匹配类型-类型转换第四步:数据校验-指定@valid注第五步:对请求结果的渲染解时视图视图的作用是渲染模型数据,将模型里的数据以某种形式呈现给客户。视图对象可以是常见的JSP,也可以是PDF,JSON等。为了实现视图模型和具体实现技术的解耦,Spring定义了一个高度抽象的View接口:视图的实现类:视图和视图解析器视图和视图解析器ViewResolver

中只有一个方法resolveViewName

,提供viewname

和实际view的ContentNegotiatingViewResolver协商规则:①基于后缀名解析②基于请求头中的contentType③基于请求参数(format=json)可以配置三个属性:mediaTypes,viewResolvers,defaultViews对消息格式转换的支持消息转换器HttpMessageConverter<T>HttpMessageConverter<T>是3.0新添加的一个接口,负责将请求信息转换为一个对象(类型为T),或将对象输出为响应信息。启用转换器的2种方式示例:使用alibaba

fastjsonconverter示例:使用alibaba

fastjsonconverter消息转换器:实现的源码阿里巴巴FastJsonConvertor的实现FastJsonHttpMessageConverter继承了抽象类

HttpMessageConverter对请求方法的增强-

器Spring

MVC

器器。Spring

MVC的

器是DispatcherServlet提供的,在调用具体的请求方法前后或异常时执行的代码 。类似于Spring器接口的定义:Spring

MVC器器的获取:DispatcherServlet调用器顺序:器的配置普通的器:带有信息的器:器与过滤器过滤器过是滤S器er和vle

3器新的增区加别的:功能,可以对请求和响应进行

。不同点过滤器MVC

器可用范围Servlet规范定义的,所有Servlet容器支持spring

MVC定义的,spring框架支持控制深度只能在servlet前后使用深入到方法级别执行顺序配置顺序配置顺序/order排序业务处理不支持,无法注入业务实例支持器都可以做。过滤器可以做的事情,器功能更强大。对异常的处理异常处理SpringMVC通过HandlerExceptionResolver处理程序异常,包括:处理器

、数据绑定以及处理器执行时发生的异常。HandlerExceptionResolver接口:DefaultHandlerExceptionResolverAnnotationMethodHandlerExceptionResolver/ExceptionHandlerExceptionResolver为什么异常处理器可以使用多个?异常处理器处理过异常之后,器还能不能处理这个异常?异常处理完成之后,器的调用代码:对Spring

MVC测试的支持Spring

MVC的测试使用springtest框架和Junit4可以实现单元测试。可以测试整个流程,包括数据处理, 器,异常处理等。测试代码放在src/main/test下,可以与maven集成。Spring

MVC单元,成功/失败小结第一步:将请求到处理方法第二步:将Http请求的参数(String类型)绑定到处理方法的对应参数(多种类型)第三步:匹配类型-类型转换第四步:数据校验-指定@valid注第五步:对请求结果的渲染对消息格式转换的支持对请求方法的增强-

器异常处理测试支持解时Q&A1、请求如何给前端控制器?2、前端控制器如何根据请求信息选择页面控制器进行功能处理?3、如何支持多种页面控制器呢?4、如何页面控制器如何使用业务对象?5、页面控制器如何返回模型数据?6、前端控制器如何根据页面控制器返回的逻辑视图名选择具体的视图进行渲染?7、不同的视图技术如何使用相应的模型数据?8、

如何自定义

器?9、如何使HttpMessageConverter生效?练习:使用阿里巴巴FastJsonHttpMessageConverter

搭建restful形式的spring

mvc项目在联系1中使用 器,打印请求头中的Content-Type,看是否是application/json类型使用spring测试框架测试联系1中的项目参考资料1、

spring

》http

/link?url=gT6ZEb2SGjkqi12QvPYBJwDIiAaYcMSXDjacX9udXMqSq3IzymcpU-mJhBsyNVNNeJwETZmkSDIZ9hNg7JiWz_2、Spring

3.x

企业应用开发实战http

/link?url=t0k-6qMdQEyiT5jSvVcMZZEmaEs18h1otW2gxY4OqfAxfohrpPHRX0NzW2hUVLfix-UsY36l8RWq/ /web/wa-restful//blogs/subjects/kaitao-springmvcxeKh-1pD3、4、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论