SpringMVC知识点
- 什么是SpringMVC?
(1) SpringMVC是Spring全家桶中的一个模块,基于MVC框架,无需中间整合层来整合
- SpringMVC的优点
(1) 基于组件技术。全部的应用对象,无论控制器和视图,还是业务对象之类的都是java组件。并且和Spring提供的其他基础结构紧密集成
(2) 可以任意使用各种视图技术,而不仅仅局限于JSP
(3) 支持各种请求资源的映射策略
(4) 易于扩展
- SpringMVC工作原理
(1) 客户端发送请求到DispatcherServlet
(2) DispatcherServlet查询handleMaping找到处理请求的Controller
(3) Controller调用业务逻辑后,返回ModelAndView
(4) DispatcherServlet查询ModelAndView,找到指定视图
(5) 视图将结果返回到客户端
- SpringMVC流程(重点建议直接背会)
(1) 用户发送请求至前端控制器DispacherServlet
(2) DispacherServlet收到请求调用HandlerMapping处理器映射器
(3) 处理器映射器找到具体的处理器(可根据xml、注解进行查找),生成处理器对象
(4) DispacherServlet调用HandlerAdapter处理器适配器
(5) HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)
(6) Controller执行返回ModelAndView
(7) HandlerAdapter将Coontroller执行的结果ModelAndView返回给DispacherServlet
(8) DispacherServlet将ModelAndView传给视图解析器ViewResolver
(9) ViewResolver解析后传给具体的View
(10) DispacherSelver根据View进行视图渲染
(11) DispacherServlet相应用户
- SpringMVC的控制器是不是单例模式?如果是,有什么问题?如何解决?
(1) 是单例模式及,所以在多线程访问的时候有线程安全问题,不要使用同步,会影响性能,解决方案是在控制器中不能写字段
- @RequestMapping注解用在类上有什么作用?
(1) 是一个用来处理请求地址映射的注解,可用在类上或者方法上。用在类上,表示类中所有方法都以该地址作为父路径
- SpringMVC和AJAX如何实现相互调用的?通过jackson框架就可以把java里面的对象直接转化为js可以识别的JSON对象,具体步骤如下:
(1) 加入Jackson.jar
(2) 在配置文件中配置json的映射
(3) 在接受AJAX方法里面可以直接返回Object、list等,但是方法前面要加上@ResponseBody注解
- 谈谈SpringMVC的执行流程
(1) 系统在启动的时候根据配置文件创建Spring的容器,首先是发送Http请求到核心控制器DispacherServlet,Spring容器通过映射器去寻找业务控制器,使用适配器找到相应的业务类,在进业务类时进行数据封装,在封装前可能涉及到类型转换,执行完业务类使用ModelAndView进行视图转发,数据放在model中,用map传递数据进行页面展示