什么是SpringMvc
SpringMvc 是 spring 的一个模块 , 基于MVC的一个框架 , 无需中间整合层来整合 .
SpringMvc 的优点
-
它是基于组件技术的.全部的应用对象,无论控制器和视图,还是业务对象之类的都是 java 组件.并且和 Spring 提供的其他基础结构紧密集成.
-
不依赖于 Servlet API(目标虽是如此,但是在实现的时候确实是依赖于 Servlet 的)
-
可以任意使用各种视图技术,而不仅仅局限于 JSP
-
支持各种请求资源的映射策略
-
它应是易于扩展的
SpringMVC 工作原理
-
客户端发送请求到 DispatcherServlet
-
DispatcherServlet 查询 handlerMapping 找到处理请求的 Controller
-
Controller 调用业务逻辑后,返回 ModelAndView
-
DispatcherServlet 查询 ModelAndView,找到指定视图
-
视图将结果返回到客户端
SpringMVC 流程
-
用户发送请求至前端控制器 DispatcherServlet。
-
DispatcherServlet 收到请求调用 HandlerMapping 处理器映射器。
-
处理器映射器找到具体的处理器(可以根据 xml 配置、注解进行查找),生成处理器对象 及处理器拦截器(如果有则生成)一并返回给 DispatcherServlet。
-
DispatcherServlet 调用 HandlerAdapter 处理器适配器。
-
HandlerAdapter 经过适配调用具体的处理器(Controller,也叫后端控制器)。
-
Controller 执行完成返回 ModelAndView。
-
HandlerAdapter 将 controller 执行结果 ModelAndView 返回给 DispatcherServlet。
-
DispatcherServlet 将 ModelAndView 传给 ViewReslover 视图解析器。
-
ViewReslover 解析后返回具体 View。
-
DispatcherServlet 根据 View 进行渲染视图(即将模型数据填充至视图中)。
-
DispatcherServlet 响应用户。
SpringMvc 和 AJAX 相互调用
通过 Jackson 框架就可以把 Java 里面的对象直接转化成 Js 可以识别的 Json 对象。
具体步骤如下 :
1)加入 Jackson.jar
2)在配置文件中配置 json 的映射
3)在接受 Ajax 方法里面可以直接返回 Object,List 等,
但方法前面要加上@ResponseBody 注解
SpringMvc 里面拦截器的写法
有两种写法,一种是实现接口,另外一种是继承适配器类,然后在 SpringMvc 的配置文件中 配置拦截器即可:
<!-- 配置 SpringMvc 的拦截器 -->
<mvc:interceptors>
<!-- 配置一个拦截器的 Bean 就可以了 默认是对所有请求都拦截 -->
<bean id="myInterceptor" class="com.et.action.MyHandlerInterceptor"</bean>
<!-- 只针对部分请求拦截 -->
<mvc:interceptor>
<mvc:mapping path="/modelMap.do" />
<bean class="com.et.action.MyHandlerInterceptorAdapter" />
</mvc:interceptor>
</mvc:interceptors>
SpringMvc 的执行流程
系统启动的时候根据配置文件创建 spring 的容器,
首先是发送 http 请求到核心控制器 disPatherServlet,
spring 容器通过映射器去寻找业务控制器,使用适配器找到相
应的业务类,在进业务类时进行数据封装,在封装前可能会涉
及到类型转换,执行完业务类后使用 ModelAndView 进行视图
转发,数据放在 model 中,用 map 传递数据进行页面显示.