区分三层架构和Spring MVC
三层架构:
- 1. Dao数据访问层
- 2. Service业务处理层
- 3. Web层(J2EE的内容,一般指封装了Request,Response的)
Spring MVC:
- 1. M:Model,一般指Entity、Pojo、Model具体的看习惯了
- 2. V:View,一般指视图层,主要的交互种类有JSP、Freemark等
- 3. C:Controller,Em…这个就是我们接受前端发过来请求的J2EE接收器了(我是这么认为的,一般都会有个基类BaseConbtroller去处理这个请求,之后将Request里面的参数进行封装—AJAX请求)
Spring MVC的前世
对于Java程序员Servlet这个概念可能并不陌生,对的,说到这里我就很暴躁,以前在面试的时候会跟面试官得意洋洋的说:Jsp与Servlet的关系,那个JSP有一个Jasper解析器会将JSP解析成Servlet…然后,JSP里面也可以嵌套Java代码,吧啦吧啦。。。我对自己过去的行为感到抱歉,竟然还去认真的研究了下,甚至去找到了.class文件看一下,现在接触的都输Restful风格的编程,哇真是服,前端是前端的,后端是后端的前后端完全按照规范化走 JSP么? 姥姥不亲,舅舅不爱的~ 基本上被彻底抛弃了吧,下面说重点,以前在JSP+Servlet编程中,是如何实现信息交互的
- 1. 还是要从web.xml开始(以前偷偷查过,貌似这个文件会被Tomcat解析)
- 2. 这个文件里面配置了N个Servlet,一般而言一个Servlet对应一个URL(想想去吧,配置太多了)
- 3. 要增加功能,增加URL每次都要去修改配置文件,增加Servlet配置 —> 结果不言而喻,导致配置膨胀、代码膨胀
- 4. 前面说过,后端掺杂前端代码,前端掺杂后端代码,搅屎棍界的爸爸~
Spring MVC的今生
咳咳,我是一个被Java耽搁的段子手我这无处安放的灵魂阿说到了Spring MVC我们就需要说说它的有点在哪里?我们就拿传统的JSP + Servlet做对比
- 1.脏:前端掺杂后端,后端掺杂前端,说句不好听的,你自己写的代码,过了半个月,你自己都不知道半个月前写的什么玩意?
- 2.乱: 为什么说它乱呢?因为需要一个方法对应一个Servlet,每一个Servlet都需要在web.xml中进行配置
- 3.差: 耦合度极高,前端代码都掺杂里面去了,难以维护,三流程序员的标配。
个人喜欢,先阅读下源码的注释:
简单解释下:这是处理Http请求的,假定一个web的UI或者一个基于Http的远程服务请求,去注册中心List(我这么称呼的,好理解,后面代码会详细展现出来的)去瞅瞅,有没有关于这个请求的映射,更便于我们去处理方法与请求之间的映射与异常的处理
我说的: 在Spring中寻找是否有当前请求的映射,有的话就处理
Spring MVC的初始化
- 1. web.xml配置了一个DispatcherServlet(启动入口,这个DispatcherServlet后面我们会把主干的功能实现出来)
- 1). 这里面留存一个疑问: 为什么要配置DispatcherServlet以及为什么要配置如下参数
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>application.properties</param-value>
</init-param>
这个问题我们先放在这里
- 2.默认加载我们的IOC容器(AppliationContext)
- 1).从上面看来,SpringMVC是依赖于IOC这个容器的,那么他们具体的细致到底是什么呢?这里继续留下一个大大的问号
- 3.开始扫描SpringMVC的配置,一般来说就是扫描注解(新生代的我是这样子的,很少接触配置xml)、View的配置、插件(拦截器、转换器(JSON格式转换)、视图解析器),其中扫描的注解包括(Controller、RequestMapping、ResponseBody、Repository等)
- 4.解析成一个HandlerMapping的List,主要保存了url和具体的执行方法的对应关系(这一步为了验证前三步,别急接着看,妈蛋,今天七夕,人家去约会!我特么写博客,蛋蛋的)
Spring MVC的处理流程
先说下上面这张图
- 1. 当一个web请求过来之后,先走 “1”,这一步进行了什么处理呢?,细节较多,先当成前端控制器,后面会有代码进行详细描述。
- 2. HandlerMapping 是SpringMVC中完成Url到Controller映射的组件,DispatcherServlet接收Request,然后从HandlerMapping中插在处理request的Controller
- 3. Controller处理request并返回ModelAndView对象,Controller是SpringMVC中负责处理Request的组件
- 4. ModelAndView是封装结果视图的组件。
下次说SpringMVC的细节,今天七夕,要出去吃饭