【一篇搞懂】SpringMVC学习丨黑马程序员(学习笔记)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


一、前言🚀🚀🚀

在这里插入图片描述

☀️
人生苦短,抓紧偷懒


本文简介:本人是大二软件工程专业,java后端方向,学习路线:java基础->JDBC->Maven->MyBatis->Spring->SpirngMVC,通过做笔记分享到博客上的形式,激励自己学习,同时方便复习。由于水平为入门级别,如有错误,希望大佬们评论或私信斧正 Thanks♪(・ω・))ノ



二、SpringMVC简介及使用详解:☀️☀️☀️

1.SpringMVC简介

  SpringMVC是一种基于java实现MVC模型轻量级web框架。做表现层的开发框架技术。

1.1 SpringMVC对比Servlet

  SpringMVC技术与Servlet技术功能等同,均属于web层开发技术。springMVC可以用更少的代码结构简洁
这里是对比一下这两种技术的代码实现。

在这里插入图片描述

  那么Servlet是怎么实现的呢,首先设置当前Servlet请求路径@webServlet),这个路径用于用户访问
  下面覆盖了请求响应
  通过PrintWriter对象写数据到前端页面返回数据是用手工书写的形式定义的,并没有使json相关的工具类转换对象得到,而其他的三个类与这个类的数据基本相似,由于是模拟,所以没有做具体的数据查询,可以看一下,仅仅是打印输出语句和返回的json数据有所不同,下边启动服务器,先执行功能,看一下运行效果。

在这里插入图片描述在这里插入图片描述  
  
  以上的开发是属于之前我们学的Servlet的开发,接下来学习我们SpringMVC的开发。
只有一个类,就包含了四个操作,运行完后发现结果也是OK的。

在这里插入图片描述
在这里插入图片描述
  

对比:

在这里插入图片描述
我们要是做Servlet开发,假如需要接受十个参数,那你接受请求参数这一行是不是要写十句呢,再看看SpringMVC技术开发的表现层,有没有写接受请求参数,他压根没写,留一个方法的参数,springMVC就是通过形参接受浏览器传递过来的参数程序越复杂,使用这个技术开发效率越高。

在这里插入图片描述

servlet技术用来做什么? 接受请求参数,然后产生响应结果

  

在这里插入图片描述
  

1.2 回顾web程序的工作流程

  没学之前的理解:web程序通过浏览器访问页面,然后输入参数,将参数请求发到服务器,然后服务器响应数据到后端,然后后端再返回。
  学完后:web程序通过浏览器访问页面,前段页面使用异步提交的方式发送请求后端服务器后端服务器采用表现层、业务层、数据层三层架构的形式进行开发,页面请求发送的请求由表现层接收,获取用户请求参数后,将参数传递业务层,再用业务层访问数据层,得到用户需要访问的数据后,将数据返回表现层表现层拿到数据后,将数据转为json格式发给前端页面。前端页面接受数据解析数据,并组织成用户浏览的最终页面信息交给浏览器

在这里插入图片描述

在这里插入图片描述

  之前我们做数据层是学jdbc技术,后面再学mybatis技术替代jdbc,加速开发。现在学的springMVC技术代替selvet,是用来做表现层的。

在这里插入图片描述

2.SpringMVC入门案例

2.1 案例介绍

先导入spirngMVC的jar包,版本跟我们前面的spirng版本一样5.2.10。把这个东西导进去后,就可以做springMVC的控制器类了,也就是能代替servlet的功能了。

@Controller,把它标志成bean。我们可以设置任意一个方法,返回任意类型的返回值,比如我们要返回json类型,那就是字符串类型了。
对于这个操作要怎么用页面调用它呢,那就要用到@RequestMapping()这个。

在这里插入图片描述

springMVC程序本身还是spring程序,那就需要一个spring配置类。

在这里插入图片描述

在这里插入图片描述

一共就这么四步。

2.1.1 导入坐标

在这里插入图片描述

这个spring-web这个jar是spring做web开发必导的一个包。

2.1.2 做控制器类

  1.先声明为springbean,可以使用@Component,不过在这里不能用这个,这里需要做一个spirngMVC的一个专用的声明bean的一个注解,@Controller
最后return一个json数据。

在这里插入图片描述

2.2 做spring的配置(加载bean)

在这里插入图片描述

2.3 定义一个servlet容器启动的配置类

在这里插入图片描述
这里其实就可以了,

2.4 在pom配置文件加tomcat

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  
  
在这里插入图片描述

这里改一下,现在你的控制器就能控制两种业务了。
在这里插入图片描述

专门用来加载spirngMVC的核心配置。
在这里插入图片描述

设置请求路径,哪些东西交给springMVC去处理,固定格式,以后写个/就可以了 。
在这里插入图片描述

第三个,专门用来加载spring的配置的。

在这里插入图片描述

2.2 入门案例工作流程分析

  

在这里插入图片描述

在这里插入图片描述

到这里,我们服务器初始的过程就算完成了。

在这里插入图片描述

2.3 bean加载控制

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.4 PostMan工具介绍

在这里插入图片描述
  为什么要用这个软件,你用post你是不是要写个表单,你要是发ajs请求呢,不仅写表单了,还要写一组js代码。那我告诉你,使用这个东西,这些东西通通不用做。

PostMan基本使用

在这里插入图片描述

在这里插入图片描述

3. 请求与响应

3.1 设置请求映射路径

  由于后期我们主要是做异步调用,所以说响应这一块,咱们主要集中在json数据响应上面。
在这里边配置文件已经做好了,这里是用简化开发格式(写配置类的这个形式)。
然后呢,对应的配置类就是一个非常简单的扫描。

在这里插入图片描述
在这里插入图片描述

解决方法: 设置模块名作为请求路径前缀。

在这里插入图片描述

3.2 请求方式

在这里插入图片描述
在这里插入图片描述

3.3 5种类型传递类型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

3.4 json数据传递参数

在这里插入图片描述

1.导坐标

在这里插入图片描述

2.发json数据

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

3.5 日期类型参数传递

  面对这样的类型,mvc怎么处理呢?
在这里插入图片描述

专门用来转日期的。那么它内部是怎么工作的呢。
在这里插入图片描述

在这里插入图片描述

我们打开看一下,发现它有这么多的实现类。有各种各样的实现类,帮组转换。

在这里插入图片描述

在这里插入图片描述

3.6 响应

  以前我们学servlet的时候,主要响应的是响应页面,学了异步提交之后是响应数据,包括纯文本的数据,json的数据。这里是多做了一个模块,跟前面做的非常相似。多了一个页面,page.jsp。

这里重启一下,启动以后到浏览器去上去 访问,因为现在是跳页面了,打开以后如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  其实对于我们springMVC来说,想跳页面非常简单,你只需要把你的页面名称写在这,然后返回字符串就可以。 这就是响应页面。
但是我们以后主要是做异步提交,所以我们做页面就比较少。

在这里插入图片描述

这里需要加这个**@ResponseBody**,否则会报错,这里说明我们前面写的全都不是json数据,而是字符串数据。对于springMVC来说,它这里的返回值默认字符串。也就是说我们响应的东西不再是页面,要我们自定义,那就得用到**@ResponseBody**了。

在这里插入图片描述

小总结
在这里插入图片描述

在这里插入图片描述

这才是真正的转json数据。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

转json底层原理是用到了这个接口:

在这里插入图片描述

4. REST风格

在这里插入图片描述

访问网络资源的形式。

4.1 REST风格简介

在这里插入图片描述

在这里插入图片描述
怎么区分???通过请求的method

在这里插入图片描述
在这里插入图片描述

4.2 REST入门案例

其实视频看完,到最后就改了method(请求方法)、value(访问路径)。

在这里插入图片描述

小总结:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

4.3 REST快速开发

  先看看REST风格有哪些不合理的地方,第一个,你这里做save和update,这里两个value都是/books,他们两个唯一的区别就是请求的东西不一样,这个地方的重复性能简化吗。
  第二个,我们每个方法前面都要加**@ResponseBody**,能不能简化。

在这里插入图片描述

到这里咱们的这个简化开发其实就干完了。

在这里插入图片描述

这一节讲了两个注解。
在这里插入图片描述
在这里插入图片描述

4.4 案例:基于RESTful 页面数据交互
4.4.1 后台接口开发

  在这个案例中我们不做数据层dao,持久化的操作,所以我们的目标就是锁定在数据可以正常的提交到后台,并且后台的数据可以到我们的页面上正常的展示。

  看一下我们要做到的效果,进入到浏览器里面,我们要求到1.后台我们给到数据(模拟数据)后,它能够正常的展示,并且我们点击新建,输入一下数据后,点击确定,提交过去,后面能够接受到。

在这里插入图片描述

开始:

1.我们把后台那个接口,也就是Controller给它做出来,然后使用postman把它测通,这是第一步。
2.我们把前端页面考进来,然后让页面跑起来。
3.我们在页面上通过where发送ajs异步提交, 去访问我们后台的这些表现层接口,能够发送数据并且进行回显。

1.做后台的功能:Mvc的配置,在这里有三句话,1:这是一个配置类,2:扫controller,3:开启webMvc它里面功能比较多,包括转json等这些东西都归它管。

在这里插入图片描述

2.web容器的配置类,固定的东西就不说了。

在这里插入图片描述

3.下面是我们的domain,一会我们要封装数据,id、名称、描述。

在这里插入图片描述

  4.1new创建一个BookController,用REST风格变化,原来写@Controller,现在写 @RestController(它代表两个东西,一个@Controller,一个@ReSponxxd)。还有一个@RequestMappign映射路径,(“/books”)。

在这里插入图片描述

  4.2对于保存来说,最后反馈给页面一个信息,叫做保存成功就ok了,在这我们用String接收。查询全部的功能,我们来一个getAll,我们暂定返回类型为List<Book .>,这种写法不是通用的写法,后期我们还要改。由于我们没有数据层的支持,所以这里的操作全都是模拟数据。

在这里插入图片描述

模拟数据:到这里,咱们这两个业务功能就做好了。

在这里插入图片描述

5.回忆一下,对于sava要用post提交形式,不需要写任何参数/路径,下面那个查询就用get,查询全部也不用路径,要是查询单个就让它把id传过来。到这里这套操作就全部做完了。

6.接下来就是在postman中,写两个接口来测试它了。

7.1创建目录,叫做bookcase

在这里插入图片描述

7.2然后再创建请求

在这里插入图片描述

第一个是post请求,路径写http://localhost/books,然后它要带我们的json数据,选raw。

id我们不传,一共剩下三个属性,如下图:这组请求就做好了,通常我们crol+save 一下,

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8.启动服务器,然后点一下测试保存图书,send发过去了,发现数据并没有过来,什么原因?
原来是sava传参那里忘记加@RequestBody,之后发现数据都过来了。到这里我们就完成了后端接口的制作与测试。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.4.2 页面访问处理

1.前段页面的数据复制粘贴过来。然后进html页面,咱们把服务器启动一下,到浏览器访问一下。
发现是404,没有访问到。

在这里插入图片描述
在这里插入图片描述

  什么原因呢?看一下报错,它认为你现在发的一个请求去访问pages/books.html这个操作没问题,但是是springMVC把它拦截走了,它认为你应该有一个配置叫这个名字。我们的需求是我们要访问这个的页面,然后你要把我这个东西给放行了(spirng不要处理,交给Tomcat处理)本来像这些css、js是由Tomcat服务器处理的,结果现在springMVC把它拦走了。其实就是这个东西。

在这里插入图片描述
在这里插入图片描述

  那要怎么做的,对于一些静态资源的访问,我们不要过springMVC,我们应该给它放行了,其实方案有很多,这里介绍一个比较实用一点的。
  我们设定一个功能类专门来做这件事,创建一个新的类SpringMvcSupport(spirngmvc支持类), 要继承如下这个接口。但是继承以后这里面是没有任何提示的,我们要去覆盖这个工具类里面的方法,与资源有关,点击OK。

在这里插入图片描述
在这里插入图片描述

  这里表示只有是以pages开头的都能访问到,那它应该访问谁呢,访问我们当前pages目录下的东西。然后还需要加一个东西,就是必须让springMVC启动的时候,加载这一组操作,两种方式:一、把它@EnableWebMvc 二、扫的时候把这个东西给它扫进去就行了。

在这里插入图片描述

这里来个@Configuration,做成一个配置类,然后在下面那个地方把它扫进去,然后就OK了。

在这里插入图片描述

在这里插入图片描述

以后要是其他一些东西也是访问不了,在这里逐一添加就行了,把js、css也放行了。

在这里插入图片描述

**到这里,放行非springmvc的请求就完成了,第一步完成。

在这里插入图片描述

2.接下来要把我们的页面和后面controal的功能绑定在一起。
前面:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  
  
  
  
    
  
  
  
  

后序还在更新中~~~

Alt

三、总结:🍓🍓🍓

例如:以上就是今天要讲的内容。
Alt

  • 25
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值