提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
一、前言🚀🚀🚀
☀️
人生苦短,抓紧偷懒
本文简介:本人是大二软件工程专业,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的功能绑定在一起。
前面:
后序还在更新中~~~
三、总结:🍓🍓🍓
例如:以上就是今天要讲的内容。