主页 > 开源代码  > 

springMvc

springMvc
前言

这个是引入依赖

但是这个旁边却有两个,这个是因为引入这个依赖的时候,这个依赖又引入了其他的依赖

这种依赖以冒号为分隔,分别是groupid,artifactId和version

如何排包呢

可以这样排包 也可以借助插件

叫做Maven Helper

安装了这个之后,pom.xml后面就会有

这个 这个是依赖分析器

对于pom文件的修改一定要刷新

我们现在下载的jar是从中央仓库即国外下载的

我们大家都有本地仓库

这样就找到了

这个就是本地仓库 那如何修改本地仓库呢

直接把.m2这个文件夹拷贝走就可以了

远程仓库还有国内源

这个是settings.xml可以去我码云下载

我们加了一个阿里云的镜像 这样就会优先从阿里云下载了

这样就可以了,但是这个只是针对当前项目

这样就可以针对所有的项目进行设置了

springboot

idea社区版要使用springboot要先下载插件Spring Boot Helper 专业版不用下载

插件地址 plugins.jetbrains /plugin/18622-spring-boot-helper/versions

但是这些都要收费

有一个免费的,但是适用idea2022版所以我们就不安装了

我们就用专业版的吧

然后就是慢慢下了 外部库那里有很多包的时候就是下载成功了

springboot3开始就要至少JDK17

这四个可以删掉

改类的名字要按shift+f6 因为这样改的话,也会把相关的类名改了 这就是第一个后端接口

其中路径和方法名可以不一样 如果环境问题无法启动 那么可以试一下把这三个文件删了,重新试一下 因为配置是在.idea这些东西中的

可以看出进程是24280,端口号是8080,协议是http 用的是Tomcat服务器 现在Tomcat已经被Spring集成了,不用安装 8080是tomcat的默认端口号

springMvc

我们创建springboot项目的时候是使用了springMvc的 集成了它的 MVC就和servlet差不多

这个也可以删掉

RestController的作用就是这个类有RestController注解,就会在这里找路径,不然不会考虑这个类的路径的

RequestMapping就是建立连接

它还可以写在类上面

这样就是大路径加小路径的访问方式 注解之间没有顺序

路径的/可以不加,这个可以自动加上的 但是通常不省

RequestMapping是即支持get请求,也支持post请求的 浏览器默认是get请求 所以我们搞一个post请求

这样写的意思就是只支持get请求 这样写的意思就是只支持get请求

注意fiddler会把postman拦截,所以用postman的时候不要用fiddler

参数名name与url中的name是对应的,是一样的才可以对应赋值

这个类型是自动转换的 用int也是可以的 但是最好使用Integer 类型也是要对应的,不要不对应 传递的参数,默认为String,后端接受时,根据后端的类型确定

现在开始传递多个参数

而且顺序没有影响 多个参数也是没有问题的 因为是key-value类型的

其实这个servlet的书写和上面那个是一样的功能 但是这个传递多个参数太麻烦了 不如分装成一个类

这就这样写就可以了

然后把gender改为Integer类型

这个就非常简单了

用INteger的时候name=的时候就是null,int类型的话就是0

现在给参数重命名

就是前端传的是username,后端要用name来接收

RequestParam的作用就是参数绑定,把url中的参数绑定过来 如果url中没有userName就会出错

注解里面只有一个参数的时候就是value,有多个的时候就是key-value的形式

如果这样写的话,就算userNAme不在url中也可以 意思就是这个注解可以不强制

但是还是不会取url中的name 所以前端中传的key必须是userName

现在开始传递数组

这样传入几个相同的key就是数组了

这样把参数写在一起也是可以了

我们现在用一下debug

先打红点

在点这个虫子

这样就可以了

这样就失败了

发现不行

因为这样发送请求默认是分装成数组的 所以需要转换成list 这样写就相当于把数组绑定成一个list了

现在开始讲传递JSON数据了 JSON就是一个对象表示法或者数组 可以在网上找一些JSON编辑器 JSON的使用要导入坐标,但是spring项目不用导入,已经集成了 Json是一个字符串,表示的是一个对象 现在开始传递Json RequestBody意思就是在请求的正文中获取数据,原来我们是从请求的url中获取数据的

这个就要从body中传了 就不要从url中传递了 就是postman了

这样发给原来的p5是OK的

但是这个传递的不是Json,就是请求体中的key-value 这样就可以了 两个的差异就是一个是key-value在请求体中 一个是Json字符串的格式 如何获取url中的参数呢

这样写的意思就是 /{articleId}表示后面有articleId这个路径 @PathVariable(“articleId”)表示要用url中key为articleId,赋值给参数

注意(“articleId”)可以不写 那这样的话,参数名就要和{articleId}保持一致了

这样就不行了,就要加上(“articleId”)了 这样才对 意思就是要重命名的话,就要加上,不重命名的话,就不用加上

这个是多个参数的时候

这样就会出错,因为我们的路径要求是两个参数的 都是要求有的

这样就不会出错了,因为第二个注解不强制了 但是还是不行 因为路径已经写死了

在加上一个/不行 一般都是id放在url中

最后就是上传文件了

这个就是文件了

这样就可以选择了

500是后端的错误

这个是因为上传的时候没有key 没有参数名称 上传的就是二进制

如果url不为file的话,如何进行重命名呢

cookie和session

先来获取cookie 可以看出cokies是null,所以报错了

所以要先添加cookie,在去访问 浏览器上是可以添加cookie的

在这里就可以添加cookie了

这样就添加成功了 现在讲一下注解的方式获取cookie,原来是原始的方式获取cookie postman就不行了吗,因为它没有设置cookie的

这就有了两种方式获取cookie 获取多个就要多个注解 第一种方法可以获取全部cookie 但是参数名和key一样的话,注解里面的字是可以省略的 注意postman也是可以增加cookie的 就在右上角的位置 现在学习获取session

我们从Cookie中获取SessionId,根据SessionID获取Session对象

然后就是造一些Session----》服务器上的----》代码设置

但是在不同的浏览器上拿不到我们刚刚设置的Session,这个是因为会话不一样 不同会话的SESSIONID是不一样的 拿到的session就是不一样的 服务器端存储的不同的session对象,每个session对象都有不同的sessionid,每个session对象就存有session id而且是可以修改的

现在学习获取session的第二种方式

注意:Session存储在服务器的内存上,所以服务重启时,session会丢失 所以又要先set在get 这是第二种获取session方式

现在通过注解的方式获取session

获取header

比如获取user-agent这种信息

现在讲一下注解的方式

现在学习一下postman如何增加cookie 点击save 就可以了

这里可以伪造header cookie前端后端都可以伪造 session只能后端写代码

响应

静态资源的路径是从static开始看的 现在我们希望后端返回这个页面

首先这样写肯定是不行的

RestController要改为Controller

这样就可以了 所以返回页面就要用Controller了

RestController是基于Controller实现的

看得出来RestController=Controller+ResponseBody ResponseBody表示返回数据

因为很久以前前后端没有分离,所以可能会返回页面 现在分离了,就不用返回了

所以这样写就和RestController效果一样

ResponseBody既是类注解也是方法注解 类注解表示所有方法都返回数据 方法注解只表示该方法返回数据 其余的管不着

Controller表示返回一个页面,一个视图,如果这个视图不存在就会出错

现在讲一下返回html代码片段

这个明显返回的是数据

只要返回的数据里面带有html就会进行解析

现在讲一下返回json 这样返回的默认就是json格式的

这里就可以看出,返回类型是Json格式的,这个是自动设置的Json 返回类就是Json

现在设置状态码,这个状态码是自动设置的 当然也可以我们来设置

这个就要用到response了

设置header

现在开始设置header 刚刚是获取响应里面的header

value=path produces是指定响应的类型

这个就可以看出我们返回的是字符串类型的

我们也可以把这个设置为Json

这就是Json了

这里就多了一个header了

现在学习如何设置cookie

这样就可以了

加法计算器

然后就可以了

用户登录

ctrl+f5强刷,因为浏览器会把页面缓存了,导致效果不变 这个参数既可以在这里设置,也可以在url中设置,都是一样的 post,get都能读取

所以现在后端没有问题了

开始弄前端

这样就成功了 ctrl+f5强制刷新 ctrl+shift+delete删除缓存

ajax是通过data传递的参数,是异步的 表单是通过name取的名字,是同步的

留言板

我们这个代码的缺点就是一刷新就全部没有了 启动一次程序,就是一个进程,我们把数据存入内存中,每次刷新就不会消失了

我、先来后端,我们要定义两个接口,一个是获取全部留言信息 第二个是发表新留言,存入内存

创建一个类,每次存储一个留言

这样后端就没有问题了,该前端了

插曲

现在讲一下lombok

这样写就表示只有from有get方法

因为spring有版本管理,就是你引入什么包,版本可以不用写,spring可以帮你决定 你写了版本,就不是spring里面的版本了

现在增加一个插件 这个文件在pom.xml中使用 点击OK

这里可以增加依赖

继续

现在继续开始留言板的开发,主要是前端代码了

这里是一个类来接受的,对应要传入JSon的,要传入JSon就要RequestBody这个注解 对应前端传入JSon

如果要求是post请求的普通参数,没有要求JSon数据的话 ,那么既可以 这样 也可以这样

前端这样写data

前端默认传入的是application/x- -form-urlencoded这个类型的

如果要指定传入JSon类型 那么还要增加两个条件

这样就可以发生JSon数据了

如果后端add返回的是String类型的,那么如何转化为JSon呢

这样后端返回的就是String了

这样写就可以了

图书管理

直接创建一个新项目

404----》检查资源路径 405检查请求方式 400检查参数 415检查请求类型 5xxx直接看后端日志 ctrl+f5强制刷新,可以干掉缓存

我们这个前端代码引入了bootstrap,这个是组件库,就和element是一样的 bootstrap

去百度搜索html模板网站,就会很简单的开发前端了

注意如果是从body里面传入的数据,那么一定是post的 所以一定要记得改

这样后端就没有问题了

这样就可以了

三层架构

现在我们把我们的代码搞成三层架构模型 分别是dao(增删查改),service(逻辑,调用到),controller(请求响应,调用service)

但是这样很好看,就是不能正常运行了

总结
标签:

springMvc由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“springMvc