本文主要是介绍java框架-SpringMVC,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
SpringMVC
MVC是Model-View-Control的简称,即模型-视图-控制器。视图向用户显示相关数据,可以接收用户输入的数据,可以向模型查询业务状态但是不可以改变业务状态,还可以接受模型发出的数据从而更新事件。模型代表业务数据和业务逻辑,数据发生改变时负责通知视图,同一个模型可以被多个视图重用。控制器处理逻辑控制实体数据在视图层显示,用于接收Web页面发来的请求,并调用相应模型组件去处理请求。
MVC执行流程:用户向服务器发送请求,请求被spring前端控制器(Servlet DispatcherServlet)捕获;DispatcherServlet对请求URL进行解析得到请求资源标识符URI,根据URI调用HandlerMapping获得该Handler配置的所有相关对象,最后以HandlerExecutiionChain对象形式返回;DispatcherServlet根据获得的Handler选择一个合适的HandlerAdapter;提取Request中的模型数据,填充Handler,开始执行handler(controller)。在填充过程中根据配置做出一些额外的工作HttpMessageConveter将请求消息(Json、xml等数据)转化为一个对象,将对象转化为指定响应信息。(数据转换,转换相应数据格式;数据格式化,将字符串转化为相应格式;数据验证,验证数据的长度格式的有效性,将验证结果存储到BindingResult或者Error中);Handler执行完成以后,向DispatcherServlet返回一个ModelAndView对象;根据返回的ModelAndView选择一个适当的ViewResolver返回给DispatcherServlet来渲染视图;将渲染结果返回给客户端。
MVC设计模式优缺点:各部分各司其职,互不干涉有利于开发组件的分工,有利于组件的重用;系统结构与实现复杂,试图与控制器过于紧密,不适用于小中型应用程序。
SpringMVC案例分析:浏览器发送一个请求地址;Tomcat接受请求,经过解析封装出Request和Responsible对象,然后移交给应用程序;DispatcherServlet拦截请求的路径,DispatcherServlet经过分析将请求转发到定义的Controller(@requsetMapping)上;Controller经过处理给出一个返回路径;DispatcherServlet拿到这个请求返回一个路径找到对应的jsp进行渲染。
SpringMVC核心组件:HandlerMapping(处理器映射器)负责根据请求找到相应的处理器、HandlerAdapter(处理器适配器)统一适配器接口,对处理器进行一个封装,可以统一调用、ViewReslover(视图解析器)根据逻辑视图匹配到真正的视图。
自定义类型转换器的流程:自定义接口实现转换器(Converter)、声明类型转换器、使用类型转换器。
SpringMVC返回值的处理:返回的是字符串(作为视图的名称、进行资源跳转、重定向的传值:RedirectAttributes实现session之间的数据共享);无返回值;返回值是其他类型(返回模型视图对象、返回值解析成json数据@ResponseBody)
SpringMVC常用的注解:@RequestParam(主要用于SpringMVC后台控制层获取参数和前端参数和方法形参不一致时。支持三个属性:value用于指定前端传入参数的名称、required用于指定此参数是否必传、defaultValue当参数为非必传参数且前端没有传入参数时指定一个默认值)、@RequestHeader主要用于从请求头中获取参数支持属性与前者一样、@CookieValue用于从Cookie中取值、@RequestBody用于接收前端传入的消息体,只有post才有消息体、@ResponseBody将返回值异步响应为json数据、@SessionAttributes(value={“A”,“B”…})将ModelMap中的内容存放到Session中、@ModleAttribute()向请求域中添加信息:将注解放到参数位置从表单中获取数据并将此数据以表单控件的key存放到请求域中,表单中的数据被封装成自定义的pojo对象注解中的key可以任意命名;将注解放到方法上面,注解中的key可以任意赋值,为当前的controller中所有可以访问的方法提供公共数据。@RequestMapping设置控制访问的路径、@PathVariable从REST风格中的URL获取参数的注解。
SpringMVC的上传与下载:文件的上传(form表单的method必须是post,enctype必须是multipart/form-data,必须有一个type=file的上传文件项);下载使用内部工具类ResponseEntity完成。
SpringMVC的常用配置:中文乱码配置器(提供一个全局过滤器在web.xml中配置即可)、静态资源处理(对于一些静态资源如js、css是不需要handler处理的,因此需要告诉DispatcherServlet直接去找对应的资源)、异常处理机制(自定义异常处理器、内置异常处理器,在springxml中配置bean、局部异常处理@ExceptionHandler可以处理个别controller异常)。
SpringMVC拦截器:类似于Servlet中的过滤器,用于对处理器进行预处理和后处理。拦截器的使用(单个拦截器、拦截器链)。
这篇关于java框架-SpringMVC的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!