原标题:Java全国统一卷之SpringMVC
在Java中大家都会或多或少的接触学习SpringMVC框架,这可能已经成为全国统一卷了。今天给大家分享一下一些最基础的东西,其中,MVC的面试必问部分,感觉对正在找工作的小伙伴,会有一点帮助吧,就是MVC的执行流程。
1、SpringMVC的相关概念
2、SpringMVC的执行流程(面试)
3、SpringMVC中的异步文件上传
4、SpringMVC中的类型转换器
1,SpringMVC是一种基于Java,实现了Web MVC设计模式,请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将Web层进行职责解耦。基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,SpringMVC也是要简化我们日常Web开发。是一个MVC的Web层框架,它采用请求响应模型它可以简化Web开放,springmvc版hello world。编写SpringMVC的配置文件,它存放的路径有2种方式,存放在WEB-INF/下面,但是它的名字有规则,这就是所谓的约定-契约。它必须在web.xml中配置一个DispatcherServlet的servlet-name节点的-servlet.xml,存放在resources下面,不过需要在web.xml中配置一个DispatcherServlet中的servlet-name节点中配置init-param节点。在web.xml中添加一个Servlet,这个Servlet必须是DispatcherServlet,在配置的时候要加上on-load-startup,初始值<=1的整数。然后在里面关联上springmvc-servlet.xml配置文件,把它作为Servlet的上下文参数。
有一个新的请求,是sayHello,它要跳到sayHello.jsp视图。该如何处理?方法:在springmvc的配置文件中添加一个bean,同时编写一个新的控制器类Controller.这和传统的Servlet来讲是不是觉得差不多。所以早期的SpringMVC框架不流行。最后流行起来的原因是:SpringMVC的版本进行了升级,提供了注解驱动版。注解驱动版可以实现1个控制器对应多个请求。
2、SpringMVC的核心组件,Handler处理器,必须要继承AbstractController处理器映射器BeanNameUrlHandlerMapping:通过请求的名字找到处理器(Controller类)SimpleUrlHandlerMapping:简单的url找到处理器的处理器映射器DefaultAnnotationHandlerMapping:默认的注解方式的处理器映射器,使用注解的时候不需要用户去写。视图解析器作用:是根据逻辑视图名找到物理视图的解析器,渲染是输出。ModelAndView:模型视图对象,它的作用是用来封装视图和模型数据。DispatcherServlet :是spingMVC框架启动的入口,所以学习源代码,就是看这个类和它关联的类,HandlerAdapter:处理器适配器
springMVC的执行流程,用户发送请求到DispatcherServlet,DispatcherServlet调用HandlerMapping。HandlerMapping根据请求映射url找到HandlerIntercepter拦截器组和Handler。然后框架把HandlerIntercepter和Handler对象封装到一个HandlerExecutionChain对象中.将该对象返回给DispatcherServlet.调用处理器适配器HandlerAdapter,找到合适的Handler,并调用Handler,进行用户请求的处理。(编码的地方)Handler处理完毕后,会创建一个ModelAndView对象,该对象封装2个内容,分别是逻辑视图名(真实的页面的对应的一个逻辑名)和Model,该Model里面放物理视图需要的数据,这些数据是来渲染到物理视图的。ModelAndView=Model(Map结构,存页面绑定的数据)+View(逻辑视图名)然后将这个对象返回.HandlerAdapter将ModelAndView返回给 DispatcherServlet获得ModelAndView,利用ViewResolver(视图解析器)解析出物理视图名。将物理视图给DispatcherServlet在ModelAndView获得封装的Model中的数据,对物理视图进行渲染。渲染视图完毕后,将视图响应给浏览器。
总结: 中央处理器---映射处理器----映射适配器------ModelAndView()带回中央处理器-----视图解析器----解析View和获得Model数据-----渲染视图----返回浏览器。
3.文件的异步上传,后面有核心代码。文件按上传部分。
4.MVC类型转换器的原理说明:在javaweb中,当用户发送了请求后,请求的参数由容器填充到HttpServletRequest对象中。填充到request中的值是字符串。每次后台拿到前台传递的值,可能要自己进行类型的转换。那么springmvc中就考虑到了这个问题,它有一套机制来解决字符串转成对象的问题。这就是所谓的类型转换器。1)在springmvc中,当用户通过表单或者url发送请求的时候,springmvc会把httpServletRequest和请求的参数的实例给核心对象DataBinder。2)然后核心对象DataBinder会去调用ConverionService组件把参数进行转换,还会进行格式化。继续把请求的消息填充到入参对象中。然后调用validator组件对已经绑定的入参对象进行合格性校验。最终把生成的数据绑定到BindingResult对象中。如果有异常,异常信息就会到BindingResult中。
在调用Handler之前会对数据进行转换和格式化。
责任编辑: