requestmapping注解访问404_【框架】127:几个非常重要的注解

a5d4ea3c22d7b9303a97f7f1eefdac15.png

今天是刘小爱自学Java的第127天。

感谢你的观看,谢谢你。

50aabd12287e14b63f7c7308ca541b9a.png

今天的知识点有点多,有点记不过来了。

学习内容安排如下:

  • 使用注解优化昨天写的springMVC入门程序。
  • 映射路径各种风格的学习,也就对应了注解@RequestMapping中的参数。
  • 各种类型的请求参数获取。
  • 整篇都是围绕着各种注解的使用,做个整合,以后那个忘了做个回顾。

一、注解简化代码

昨天写了一个springMVC入门程序,将其运行流程梳理了一遍,但是代码编写太麻烦了。

1存在的问题

63082f7ec85f8e66034053db3e28110e.png

①问题一

映射器、适配器、处理器,视图解析器,一堆的信息需要配置。

②问题二

看到new关键字,就可以使用spring优化,具体在文章第三节中有详细说明。

一个处理器类只能处理一个请求,并且这个类还要在配置文件中配置。

这个问题我们以前学servlet的时候就遇到过,当时我们是创建一个BaseServlet,再使用反射,让其子类一个方法对应一个请求。

这里的解决方式是使用注解。

2注解的使用

2b4a1b89b91cd01bdb9b8fa045291a7c.png

①配置注解

  • 开启注解扫描:这个在学spring框架的时候就用过很多次了。
  • mvc注解驱动:这个就相当于自动配置映射器、适配器了。

②处理器类

@Controller:这个注解即相当于将这个处理器类存放到了spring容器中。

@RequestMapping("/show"):在每个方法上使用这个注解就可以接受一个请求。

方法名我们可以自定义,有多个请求就可以创建多个对应的方法。

我大胆地猜测一下,该注解的底层实现也是使用的反射,当然目前就不做深入研究了。

其中:"/show"就对应着访问路径,当然在浏览器访问时要在路径后面加上.do。

二、不同风格的映射路径

一共有好几种,依次说明。

1Ant风格的映射

Ant也就是蚂蚁的意思,符号“*”不就像一只蚂蚁么?大概这就是它名称的由来。

ec4863fcd4ede0282a42832bc0b46001.png

①通配符:?

代表可以使用任意一个字符。

例子中路径配置的是“a?”,那么ab、ac、a加任意一个字符都可以访问。

②通配符:*

代表了0个或者多个字符。

例子中路径配置的是“a*”,那么abcdd、afa都可以访问,甚至单独的一个a也可以。

其中当*单独使用的时候只能配置一个或者多个的字符,0个就不行了。

③通配符:**

代表了0个或者多个路径。

例子中路径配置的是“**”,那么随便多个路径都可以,没有路径也行。

其中当**和其它字符一起使用时就不能多个路径了,代表0或多个字符,和*作用一样。

2占位符的映射(restful风格)

restful风格厉害的地方在于:路径中输入的字符可以作为参数被取出来。

4fa8a889d1bb327c652288fa61f05296.png

使用注解@PathVariable

该注解可以获取路径中的字符作为参数

不过值得注意的是

@PathVariable(“key”)中的key必须和对应占位符中的参数名保持一致。

如果传递的参数类型和接受参数的形参类型不一致,则会自动转换。比如上图年龄传了“18”字符串,方法形参使用Integer来接受参数。

3限定请求方法的映射

这种方式就是可以限定方法的请求类型,比如我们只接受GET请求:

59e8acd6941e2bdf0a3a9a8a38a57636.png

@RequestMapping(value=””,method=””)

使用RequestMethod.GET设定请求方式为GET请求,如果是POST请求就不行了。

我们点击RequestMethod的源码可以发现,其一共有8种请求类型,都是以枚举的形式存在,自己指定需要限制的请求方式即可。

4限定请求参数的映射

@RequestMapping(value=””,params=””)

和限定请求方法很像,就是将method换成了params,名称都是见名知义的。

ccf2bda7af74d63b57d074deffd26eb7.png

①params=”id”

请求参数中必须有id,如果没有id会报错。

与之相反的是:如果params=”!id”表示请求参数中不能包含id,如果有id会报错。

②params=”id=1”

请求参数中id必须为1,如果不为1会报错。

与之相反的是:如果params=”id!=1”表示请求参数中id必须不为1,如果等于1会报错。

③params={“name”, ”age”}

请求参数中必须有name,age参数,当然有多余的其它参数也行,但这两个必须要有。

5混合注解

b1181edf6f5874b305c74fe8c5fb89d5.png

@GetMapping:限定请求方式必须要为GET请求才行,就相当于:@RequestMapping用method=RequestMethod.GET。

类似的注解还有@PostMapping、@PutMapping、@DeleteMapping。

值得注意的是

上述例子中,①和②分开使用都可以达到效果,如果放在一起会报错。

三、接收数据及数据绑定

1接收servlet的内置对象

21c639fd723a87c284c61fa7589b24df.png

常用的servlet对象一共有三个:request,response,session。

这些对象的接收非常简单,只需要在方法形参中有该对象就能接收,不需要任何配置。

2springMVC的Model对象

我们前面使用ModelAndView,每次都要new对象,既然学了spring,肯定能优化。

16f868873343dbe54feec14bc35b947b.png

springMVC的Model对象就是用来代替ModelAndView的:

  • addAtrribute()就相当于addObject()
  • 返回字符串就相当于设定ViewName的值。

注意:①和②不能放在一起联合使用,我这边只是做一个对比说明它们是一回事。

3接收普通的请求参数

也就是@RequestParam这个注解的使用,这个注解非常重要,使用起来也方便。

93c19d1669e7019777b5fae0226eed0c.png

①required=false

有false,自然是有true的。如果不写的话,默认就是ture,我这边为了说明写了false。

  • true:表示请求参数必须要有name,如果没有就会报错。
  • false:表示请求参数可以没有name,如果没有就显示null。

②defaultValue=""

看名称就很好理解,这个是指定一个默认值,如果不指定参数就用这个默认值。

其中关于注解@PathVariable和其很类似,这个在rest风格映射路径中说明。

如果请求路径中携带有参数可以使用注解@PathVariable,如果参数并不在请求路径中(POST请求)可以使用@RequestParam。

4获取cookie

@CookieValue这个注解的使用

ecf293e4e7ca3776e395b257a3cb2a7c.png

我们在使用浏览器的时候,如果多次请求,请求参数中会存在一个cookie。

可以通过@CookieValue获取cookie的值,其中其key为一个固定值JSESSIONID。

最后

还有几种数据类型没时间学了,比如实体类对象、集合这些。

我擦咧,一个知识点不能整合在一起有点难受,看来时间管理不行啊,得跟罗志祥学学了,真不知道他是怎么安排过来的。

谢谢你的观看。

如果可以的话,麻烦帮忙点个赞,谢谢你。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/297664.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Dapr + .NET Core实战(二) 服务调用

服务调用是什么在分布式应用程序中的服务之间进行调用会涉及到许多挑战。例如:维护其他服务的地址。如何安全地调用服务。在发生短暂的 暂时性错误 时如何处理重试。分布式应用程序调用链路追踪。服务调用构建块通过使用 Dapr 挎斗作为服务的 反向代理 来解决这些难…

第五周项目2-对象作为数据成员

回想Engineer类的数据成员,有眼镜、背包等。某Engineer的眼镜、背包,是Glass、Bag类的对象。类中的数据成员,其类型可以是简单类型,也可以是类。通过这种方式,将某些类组合到另外的类中,当作其中的一个“部…

谷歌排名第一的编程语言,死磕它这两点,小白也能学的会!不信你看!

全世界只有3.14 % 的人关注了爆炸吧知识谷歌排名第一的编程语言时什么?毫无疑问:肯定是 Python。也难怪,作为大数据时代和人工智能时代的必备语言,Python 的优点太多了,语言简洁、易学、开发效率高、可移植性强......另…

android主动显示流程,Activity加载显示基本流程

本文章是基于Android源码6.0讲解Activity加载显示基本流程首先上一张图给大家一个直观的了解首先一个布局页面的加载是在Activity中的setContentView(R.layout.res)开始;我们就从Acitvity源码中的setContentView方法入手public void setContentView(LayoutRes int layoutResID)…

VIM之Project 项目管理工具

VIM是Linux和Unix下常用的文本编辑工具,在编写代码和阅读代码中经常使用。但VIM进行代码项目管理时,没有IDE集成开发工具方便,现在提供一个VIM插件Project,可以对代码项目进行简单的集中管理一、 下载安装1、 在 Vim 网站上下载最…

WPF DataGrid 通过自定义表头模拟首行固定

WPF DataGrid 通过自定义表头模拟首行固定独立观察员 2021 年 9 月 25 日最近工作中要在 WPF 中做个表格,自然首选就是 DataGrid 控件了。问题是,UI 设计的表格是在首行有一个新增按钮,那一行样式和其它数据行是一样的,就在表头下…

python和C语言分别实现插入排序

python语言代码:代码1 defInsertSort(numbers,n):2 fori inrange(1,n):3 j i-14 tem numbers[i]5 whilenumbers[j]>tem andj>0:6 numbers[j1] numbers[j]7 j -18 else:9 numbers[j1] tem10 print"Onthe sort:",numbers11 12 a [9,8,7,6,5,4,3,2,1,0…

Windows用户安全小技巧

本文适用于具有管理员用户和标准用户的所有Windows系统,如Windows 2000以上的操作系统,UAC是Windows Vista以上版本的具有功能。新安装的Windows系统或者新购买的含有Windows系统计算机一开始都需要安装许多软件并需要设置较多的含有Windows安全或用户控…

从网恋到失恋只需要一秒...

1 原来放下一个人如此简单...▼2 而且到现在衣服都没找到▼3 这东西叫糖醋液,实验室比例是:糖:醋:酒:水1:2:3:4▼4 老师:这孩子真有原则▼5 呵,绝交吧▼…

大前端快闪:package.json文件知多少?

最近在公司某项目参与了一些前端工作,作为后端抠脚大汉,改点前端细节磕磕绊绊,改点大前端、工程化、HTTP交互倒也还能做到柳暗花明。于是打算用后端程序猿的视角记录一些{大前端}的知识快闪,也算是帮助读者构建完整的全栈技能体系…

大牛C++编程开发学习建议50条

2019独角兽企业重金招聘Python工程师标准>>> 每个从事C开发的朋友相信都能给后来者一些建议,但是真正为此进行大致总结的很少。本文就给出了网上流传的对C编程开发学习的50条建议,总结的还是相当不错的,编程学习者(不仅…

html2canvas改成同步,html2canvas转为图片异步转同步问题(记录)

描述:最近使用html2canvas插件截取页面上指定dom为图片,然后将生成的图片替换页面上的dom后,将替换后的页面内容保存至数据库,结果保存的是保存前的页面,初步判定是html2canvas的异步执行造成的。参考了两篇博文&#…

杨辉再发声明:没有及时交流工作进展,深表歉意

全世界只有3.14 % 的人关注了爆炸吧知识pixabay.com编者按加州大学付向东教授实名举报中科院上海神经所杨辉事件在过去一周成为学术界讨论的热点话题。付向东称自己2018年在神经所做学术报告后,杨辉重复其实验却未告知并抢发文章。杨辉7月3日发表声明,称…

z变换公式表_如何使用标准正态分布表?

正态分布这个概念在统计学中很常见,在做与正态分布有关计算的时候经常会用到标准正态分布表。如果知道一个数值的标准分数即z-score,就可以非常便捷地在标准正态分布表中查到该标准分数对应的概率值。任何数值,只要符合正态分布的规律&#x…

.NET 6 中的 ConfigurationManager

.NET 6 中的 ConfigurationManagerIntro.NET 6 为了 Minimal API 引入了一些新东西,其中就包含了一个全新的配置对象 ConfigurationManager这并不是 .NET Framework 里的静态类 ConfigurationManager,而是 .NET Core 里的配置 Microsoft.Extensions.Conf…

60个高质量的CSS、XHTML网页布局模板下载

无论您下载和解剖预建模板是为了学习最新的CSS布局技术,或者下载的目的是为了易于编辑制作现成的独立网站,您都不应该仅限于免费且可用的一个拥有众多克隆版本、陈旧的且往往是枯燥的模板。网页设计的流行趋势和技术总是在千变万化,因此&…

总有人会偷看你的朋友圈

全世界只有3.14 % 的人关注了爆炸吧知识生活中,总是会有人在默默关注着你。你的朋友圈,常常有人来“偷偷”光顾,而这些细枝末节常常被我们忽视。 你不想让关心你的人失望,于是在朋友圈分享优质文章,希望你的快乐…

关于tomcat的使用方法(配置及使用)

前一段时间要做一个音乐播放器,要实现在线下载歌曲功能,这里要用到服务器,我决定使用Tomcat。 1.下载tomcat http://tomcat.apache.org/ 推荐下载7.0 版本(8.0刚出来,据说还有些问题;6.0反正我没搭建好&a…

HTML5中常见的列表标签包括,介绍几个常用的HTML5标签

一、Html的基本结构:网页的文本、图片等信息;二、Head部分:用于表示网页的元数据即描述网页的基本信息其常用标签及属性有:1、title标签:浏览器标签页显示的标题2、meta标签:其常用属性①charset:设置文档的…

正弦波 程序 角度传感器_激光位移传感器的原理及应用领域

激光位移传感器是利用激光技术进行测量的传感器,由激光器、激光检测器和测量电路组成。作为新型测量设备,激光位移传感器能够精确非接触测量被测物体的位置、位移等变化,还可测量位移、厚度、振动、距离、直径等精密的几何测量。目前&#xf…