第1章 MVC简介
1-1 Spring MVC起步课程简介
1-2 前端控制器
MVC不仅仅是java社区所独有的概念,早在java诞生之前的SmallTalk以及Python之中都有MVC的概念。
MVC实际上是一种我们开发web应用程序的通用架构方式。
前端控制器(Front Controller)
1-3 MVC概念
Controller和视图之间并不耦合,它们之间可以没有任何联系,但是因为Controller需要根据页面的要求产生合适的数据,而我们的页面呈现又不能脱离业务逻辑凭空展开,一定是基于我们的业务逻辑,所以他们之间是既独立,又协同的。
例:前端页面开发
后端逻辑开发
第2章 Spring MVC中的基本概念
2-1 Spring MVC的静态概念
Spring MVC作为一种前端控制器的实现形式,DispatcherServlet就是它的前端控制器
MVC将我们的数据业务逻辑和我们页面实现的分离其实核心就是通过DispatcherServlet实现的。
Controller:它就是调用业务逻辑生成Model的地方。
Handler是在DispatcherServlet内部使用的类,它其实就是Controller的表现形式。
在我们的DispatcherServlet当中其实最终调用的Controller是以Handler形式出现的。
HandlerAdapter适配器模式,就是将各种不同类型的Handler适配成我们DispatcherServlet可以使用的Handler。
这样,我们的DispatcherServlet就可以很轻松的去调用我们的控制器。
Handler是DispatcherServlet调用Ctroller的一种中间过渡对象。
Interceptor(拦截器)
Mapping,前端控制器DispatcherServlet与Ctroller之间映射关系的一种类。
HandlerMapping的作用:就是告诉我们的DispatcherServlet这个请求到来之后由哪一个Ctroller来响应我们这个请求。
在我们HandlerMapping工作完毕之后,它可以给我们的DispacherSevlet一个HandlerAdaptor,这个HandlerAdaptor里面就包括了核心的内容是某个具体的Ctroller实例
第二方面就是这个Ctroller需要包裹的HandlerInterceptor,它们会构成一个执行的链条往下走。
ModelAndView:Model的具体表现
ViewResolver(视图解析器),它会告诉DispacherSevlet你需要用哪一个视图来进行视图的呈现(哪个视图是用来解析当前这种场景的)。因此,它的作用就是根据我们的配置找出那一个我们需要的视图对象,比如我们的JSTL,JSP等等。
View:负责呈现页面
2-2 Spring MVC的动态概念
Ctroller是必须要自己写的
去掉黑色字体,斜体的字体隐藏,只有粗体是必须要写的,剩下的一些仅仅是配置
第3章 配置Maven环境
Maven:构建与依赖管理工具
POM
依赖管理
坐标
POM文件的样例
有时候你只是想使用spring、titles的功能,但是spring、titles需要依赖一些其它jar包,而这些所依赖的对象又可能还会再依赖,这样传递关系也许会很长,层次会很深,导致我们这个/WEB-INF/lib下的jar包数量非常之多,容易导致缺失依赖的包
Maven的依赖管理,仅仅是在我们的POM之中配置一些依赖项,比如dependency
通过以上四个属性可以唯一标识一个我们所需要的产品以及包,这里面packaging属性是可以缺省的,它的缺省值是jar,表示我们依赖的是一个jar包,其他值还可能是war包,也可能是一个pom对象,pom对象其实就是用来处理传递依赖的事情。
用xml文件就可以管理我们整个项目的依赖管理,包括直接依赖与传递依赖。
3-2 Maven的安装
下载apache-maven-3.3.1-bin.zip
环境变量配置:
命令行输入mvn -version可以查看是否安装成功以及安装的相应版本。
3-3 Maven的配置
Mirror在计算机的世界里通常都是指中心或者核心东西的一个副本
maven核心仓库的一个副本就称之为一个mirror
对镜像配置之后,每次对maven的访问都将去这个库来进行下载我们所需要的软件包,这样就降低了中心仓库的负载。
自己总结:经过测试,配置成 <url>http://maven.aliyun.com/nexus/content/groups/public/</url> 的镜像库,速度更快!
<mirror> <id>alimaven</id> <mirrorOf>central</mirrorOf> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> </mirror>
3-4 用Maven创建项目
下载eclipse(kepler 4.3的版本)
maven插件 m2e
mvn命令的典型格式,通过mvn调用maven的运行环境,后面紧接着一个是调用某种插件,并且将插件上的某种目标运用,后面是一连串的这个插件所需要的参数。
artifactId:它的值会成为我们所创建的目录结构的根目录的名称。archetypeArtifactId指明了我们创建目录类型的一个类型。
第4章 Spring MVC实操
4-1 从配置文件开始
这个标准之下,我们的jsp页面会默认的将我们的EL表达式语言关闭
改成以下的样式,我们的web应用就可以默认的支持EL
Model(模型类):业务需求
4-2 Controller-基础代码
4-3 Controller-现代方式
Ctrl+c停掉jetty
cls清屏
4-4 Controller-传统方式
通过@Controller声明了一个Controller;
通过@RequestMapping来映射了我们的URL和我们的方法,RequestMapping标记通常出现在我们的类级别和我们的方法级别,二者共同组合完成了我们对一个URL映射请求的拦截;
通过URL template结合使用@RequestParam and @PathVariable两个标记可以将URL路径之中的参数绑定到我们Controller Method中的入参;
同时也可以通过使用HttpServletRequest或者HttpSession之类的对象来获取我们想要的结果。
4-5 Binding
我们的页面是由一些html标签所代表的各种页面控件所组成的,它们都是一个平坦的对象,比如说,一个input字段是有一个名字的,页面上所有的这些字段共同构成了我们的表单数据,
而在我们的后台,则是由我们的模型对象来代表我们的现实世界,如何将二者进行关联呢?这就是我们绑定。名称匹配:页面上的控件的名称要和我们模型对象中的属性名称一致
4-6 FileUpload--单文件上传
快捷键F3 查看源代码
4-7 JSON(上)
JSON:轻量级的数据交换格式
4-8 JSON(中)
4-9 JSON(下)
SpringMVC中通过使用ContentNegotiatingViewResolver这么一个特殊的类来将我们不同的数据呈现请求转化到不同的View,注意这里,是将相同格式的数据,分发的不同的数据呈现请求。这其中就包含我们的JSON,这是一个通用的处理方式。
其次在我们服务端代码中,我们使用了ResponseEntity这么一个泛型的类,来处理我们的返回结果,将返回的数据模型包裹在这个类之中,就可以将泛型数据转化为JSON格式。
使用@ResponseBody/@ResquestBody来处理我们的返回数据。