Spring MVC起步

 

第1章 MVC简介

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中的基本概念

抽茧剥丝,将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环境

针对初学者,step by step安装配置Maven, 搭建Spring MVC开发环境
 3-1 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实操

基于课程管理的业务需求,用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来处理我们的返回数据。


第5章 总结

 

 

 

 

 

posted on 2018-10-06 21:44  songsong_p_blue  阅读(179)  评论(0编辑  收藏  举报