1,SpringMVC概述
SpringMVC框架围绕DispatcherServlet这个核心展开,DispatcherServlet负责截获请求并将其分派给相应的处理器处理。
2,SpringMVC处理请求的流程
1) 整个过程始于客户端发送一个HTTP请求,Web应用服务器接收到这个请求后,如果匹配DispatcherServlet的请求映射路径,Web容器将该请求转交给DispatcherServlet处理。
2) DispatcherServlet接收到这个请求后,将根据请求的信息(包括URL、HTTP方法、请求报文头、请求参数、Cookie等)以及HandlerMapping(路由控制节点)的配置找到处理请求的处理器(Handler)。
3) 当DispatcherServlet根据HandlerMapping得到对应当前请求的Handler后,通过HandlerAdapter对Handler进行封装,再以统一的适配器接口调用Handler。
4) 处理器完成业务逻辑的处理后会返回一个ModelAndView(包含视图逻辑名和模型数据信息)给DispatcherServlet。
5) ModelAndView中的逻辑视图不是真正的视图对象,DispatcherServlet借由ViewResolver中的模型数据进行视图渲染。
6) 当得到真实视图对象View后,DispatcherServlet就使用这个View对象对ModelAndView中的模型数据进行视图渲染。
7) 最终客户端得到的响应信息,可能是一个普通HTML页面或者JSON数组之类
3,过滤器(Filter)和SpringMVC拦截器的对比
名称 | 使用范围 | 规范 | 使用的资源 | 深度 |
Java过滤器Filter | 是Servlet的规范规定的,只能用于Web程序中 | 是Servlet规范中定义的,是Servlet容器支持的 | Fliter只能过滤一下请求的东西 | 只在Servlet前后起作用 |
SpringMVC的拦截器 | 既可以用于Web程序,也可以用于Application、Swing程序中 | 是Spring容器内的,是Spring框架支持的 | 是Spring的组件,可以使用Spring里面的任何资源。对象 | 能够深入到方法前后、异常抛出前后,具有更大的弹性 |