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

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

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

文章目录

一、前言🚀🚀🚀二、SpringMVC简介及使用详解:☀️☀️☀️1.SpringMVC简介1.1 SpringMVC对比Servlet1.2 回顾web程序的工作流程

2.SpringMVC入门案例2.1 案例介绍2.1.1 导入坐标2.1.2 做控制器类2.2 做spring的配置(加载bean)2.3 定义一个servlet容器启动的配置类2.4 在pom配置文件加tomcat

2.2 入门案例工作流程分析2.3 bean加载控制2.4 PostMan工具介绍

3. 请求与响应3.1 设置请求映射路径3.2 请求方式3.3 5种类型传递类型3.4 json数据传递参数3.5 日期类型参数传递3.6 响应

4. REST风格4.1 REST风格简介4.2 REST入门案例4.3 REST快速开发4.4 案例:基于RESTful 页面数据交互4.4.1 后台接口开发4.4.2 页面访问处理

后序还在更新中~~~三、总结:🍓🍓🍓

一、前言🚀🚀🚀

☀️ 人生苦短,抓紧偷懒

本文简介:本人是大二软件工程专业,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,这种写法不是通用的写法,后期我们还要改。由于我们没有数据层的支持,所以这里的操作全都是模拟数据。

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

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的功能绑定在一起。 前面:

后序还在更新中~~~

三、总结:🍓🍓🍓

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

相关推荐

魔兽世界圣诞老人佩佩外观怎么得 圣诞老人佩佩装扮获取攻略
约彩365app官网下载安装

魔兽世界圣诞老人佩佩外观怎么得 圣诞老人佩佩装扮获取攻略

📅 08-14 👁️ 8882
香港iPhone 6价格概览,市场分析与购买指南
最佳娱乐365bet娱乐场下载

香港iPhone 6价格概览,市场分析与购买指南

📅 08-19 👁️ 5947
体育场馆项目造价数据指标深度分析
最佳娱乐365bet娱乐场下载

体育场馆项目造价数据指标深度分析

📅 09-16 👁️ 4263