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

感谢你的观看,谢谢你。

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

学习内容安排如下:

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

一、注解简化代码

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

1存在的问题

①问题一

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

②问题二

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

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

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

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

2注解的使用

①配置注解

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

②处理器类

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

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

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

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

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

二、不同风格的映射路径

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

1Ant风格的映射

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

①通配符:?

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

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

②通配符:*

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

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

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

③通配符:**

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

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

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

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

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

使用注解@PathVariable

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

不过值得注意的是

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

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

3限定请求方法的映射

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

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

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

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

4限定请求参数的映射

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

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

①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混合注解

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

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

值得注意的是

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

三、接收数据及数据绑定

1接收servlet的内置对象

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

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

2springMVC的Model对象

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

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

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

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

3接收普通的请求参数

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

①required=false

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

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

②defaultValue=""

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

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

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

4获取cookie

@CookieValue这个注解的使用

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

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

最后

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

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

谢谢你的观看。

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

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

  1. requestmapping注解访问404_开发人员都必须知道的Spring注解概览

    作者:飒然Hang 来源:rowkey.cn/blog 前言 从Java5.0开始,Java开始支持注解.Spring做为Java生态中的领军框架,从2.5版本后也开始支持注解.相比起之前使用xml来 ...

  2. java spring框架 注解_史上最全的java spring注解

    史上最全的java spring注解,没有之一 注解是个好东西,但好东西我们也是看见过,整理过,理解过,用过才知道好.不求我们每个都记住,但求保有印象,在需要的时候能提取出来再查找相关资料,平时工作就 ...

  3. 微服务开发的入门级框架Spring Boot详解:注解

    2019独角兽企业重金招聘Python工程师标准>>> 通过前两章节的介绍,大家应该对Spring Boot有了些许的认识,也感觉到了这个框架带来的便利,下面我将讲解SpringBo ...

  4. Spring基于注解TestContext 测试框架使用详解

    原创整理不易,转载请注明出处:Spring基于注解TestContext 测试框架使用详解 代码下载地址:http://www.zuidaima.com/share/1775574182939648. ...

  5. 安全框架 - Shiro与springMVC整合的注解以及JSP标签

    Shiro想必大家都知道了,之前的文章我也有提过,是目前使用率要比spring security都要多的一个权限框架,本身spring自己都在用shiro,之前的文章有兴趣可以去扒一下 最近正好用到s ...

  6. spring boot框架学习学前掌握之重要注解(2)-通过java的配置方式进行配置spring

    本节主要内容: 1:通过代码演示实现零XML配置spring 2:使用重点注解理解 声明: 本文是<凯哥陪你学系列-框架学习之spring boot框架学习>中spring boot框架学 ...

  7. 框架基础:深入理解Java注解类型(@Annotation)

    注解的概念 注解的官方定义 首先看看官方对注解的描述: An annotation is a form of metadata, that can be added to Java source co ...

  8. @autowired注解原理_Spring框架第二谈:IOC,xml配置文件给属性赋值,注解实现赋值...

    在spring的对象文件中,给Java对象的属性赋值: di依赖注入,表示创建对象,给属性赋值di的实现方法有两种:1.在spring的配置文件中,使用标签完成,叫做基于XML的di实现2.使用spr ...

  9. 反射的基础应用——反射+注解模拟测试框架(Junit)

    反射基础 1.反射定义 所谓反射,其实相当于类照镜子,是一种自省机制:可以使得程序在运行期间动态获取一个类中的成分:在类加载时,任何一个Java类都存在一个java.lang.Class的对象:反射即 ...

最新文章

  1. Debian和CentOS主流系统按包含文件名称搜索软件包
  2. linux history 历史命令行查询和使用
  3. linux efi不要boot目录,linux – 找不到efi目录:grub-install的问题
  4. sitecore系列教程之目标功能有什么新意?
  5. 【转载】Swift属性Property
  6. altium designer快捷键大全
  7. 1、Spring入门
  8. 机器学习和深度学习资料合集
  9. 基于SSM的校园二手交易平台
  10. UmiJs(v3.x版本)
  11. kux播放器android,kux格式转换工具
  12. springboot证书管理系统的设计与实现毕业设计源码162317
  13. MacBook安装rar解压工具
  14. ajax请求在ie浏览器上的兼容性问题
  15. 剪了 20% 的刘海、120Hz 刷新率、1TB 存储,最高售价为 12999 元的 iPhone 13 系列来了!
  16. 用python批量下载网络图片_使用python批量下载图片吗?怎么做?
  17. Google Pixel 2 首次现身:或首发安卓 8.0
  18. 1881:【14NOIP提高组】生活大爆炸版石头剪子布
  19. 2010中国物联网大会
  20. 2018年前端学习心得——总结篇

热门文章

  1. 求助:现在有一个可以进体制“养老”的坑,我该不该跳?
  2. 使用 dotnet 命令行配合 vscode 完成一个完整 .NET 解决方案的编写和调试
  3. DotNetty 实现 Modbus TCP 系列 (一) 报文类
  4. eShopOnContainers 看微服务④:Catalog Service
  5. 【.NET Core项目实战-统一认证平台】第十一章 授权篇-密码授权模式
  6. 打造自己的.NET Core项目模板
  7. .net core实践系列之SSO-同域实现
  8. AspNet Core下利用 app-metrics+Grafana + InfluxDB实现高大上的性能监控界面
  9. 基于OIDC(OpenID Connect)的SSO
  10. asp.net core 使用 Redis 和 Protobuf 进行 Session 缓存