spring web mvc 注解@requestmapping
@requestmapping注解的主要用途是将web请求与请求处理类中的方法进行映射。spring mvc和spring webflux都通过rquestmappinghandlermapping和requestmappinghndleradapter两个类来提供对@requestmapping注解的支持。
@requestmapping注解对请求处理类中的请求处理方法进行标注;@requestmapping注解拥有以下的六个配置属性:
value:映射的请求url或者其别名method:兼容http的方法名params:根据http参数的存在、缺省或值对请求进行过滤header:根据http header的存在、缺省或值对请求进行过滤consume:设定在http请求正文中允许使用的媒体类型product:在http响应体中允许使用的媒体类型提示:在使用@requestmapping之前,请求处理类还需要使用@controller或@restcontroller进行标记
下面是使用@requestmapping的两个示例:
图片
@requestmapping还可以对类进行标记,这样类中的处理方法在映射请求路径时,会自动将类上@requestmapping设置的value拼接到方法中映射路径之前,如下:
图片
@requestbody
@requestbody在处理请求方法的参数列表中使用,它可以将请求主体中的参数绑定到一个对象中,请求主体参数是通过httpmessageconverter传递的,根据请求主体中的参数名与对象的属性名进行匹配并绑定值。此外,还可以通过@valid注解对请求主体中的参数进行校验。
下面是一个使用@requestbody的示例:
图片
@getmapping
@getmapping注解用于处理http get请求,并将请求映射到具体的处理方法中。具体来说,@getmapping是一个组合注解,它相当于是@requestmapping(method=requestmethod.get)的快捷方式。
下面是@getmapping的一个使用示例:
图片
@postmapping
@postmapping注解用于处理http post请求,并将请求映射到具体的处理方法中。@postmapping与@getmapping一样,也是一个组合注解,它相当于是@requestmapping(method=httpmethod.post)的快捷方式。
下面是使用@postmapping的一个示例:
图片
@putmapping
@putmapping注解用于处理http put请求,并将请求映射到具体的处理方法中,@putmapping是一个组合注解,相当于是@requestmapping(method=httpmethod.put)的快捷方式。
下面是使用@putmapping的一个示例:
图片
@deletemapping
@deletemapping注解用于处理http delete请求,并将请求映射到删除方法中。@deletemapping是一个组合注解,它相当于是@requestmapping(method=httpmethod.delete)的快捷方式。
下面是使用@deletemapping的一个示例:
图片
@patchmapping
@patchmapping注解用于处理http patch请求,并将请求映射到对应的处理方法中。@patchmapping相当于是@requestmapping(method=httpmethod.patch)的快捷方式。
下面是一个简单的示例:
图片
@controlleradvice
@controlleradvice是@component注解的一个延伸注解,spring会自动扫描并检测被@controlleradvice所标注的类。@controlleradvice需要和@exceptionhandler、@initbinder以及@modelattribute注解搭配使用,主要是用来处理控制器所抛出的异常信息。
首先,我们需要定义一个被@controlleradvice所标注的类,在该类中,定义一个用于处理具体异常的方法,并使用@exceptionhandler注解进行标记。
此外,在有必要的时候,可以使用@initbinder在类中进行全局的配置,还可以使用@modelattribute配置与视图相关的参数。使用@controlleradvice注解,就可以快速的创建统一的,自定义的异常处理类。
下面是一个使用@controlleradvice的示例代码:
图片
@responsebody
@responsebody会自动将控制器中方法的返回值写入到http响应中。特别的,@responsebody注解只能用在被@controller注解标记的类中。如果在被@restcontroller标记的类中,则方法不需要使用@responsebody注解进行标注。@restcontroller相当于是@controller和@responsebody的组合注解。
下面是使用该注解的一个示例
图片
@exceptionhandler
@exceptionhander注解用于标注处理特定类型异常类所抛出异常的方法。当控制器中的方法抛出异常时,spring会自动捕获异常,并将捕获的异常信息传递给被@exceptionhandler标注的方法。
下面是使用该注解的一个示例:
图片
@responsestatus
@responsestatus注解可以标注请求处理方法。使用此注解,可以指定响应所需要的http status。特别地,我们可以使用httpstauts类对该注解的value属性进行赋值。
下面是使用@responsestatus注解的一个示例:
图片
@pathvariable
@pathvariable注解是将方法中的参数绑定到请求uri中的模板变量上。可以通过@requestmapping注解来指定uri的模板变量,然后使用@pathvariable注解将方法中的参数绑定到模板变量上。
特别地,@pathvariable注解允许我们使用value或name属性来给参数取一个别名。下面是使用此注解的一个示例:
图片
模板变量名需要使用{ }进行包裹,如果方法的参数名与uri模板变量名一致,则在@pathvariable中就可以省略别名的定义。
下面是一个简写的示例:
图片
提示:如果参数是一个非必须的,可选的项,则可以在@pathvariable中设置require = false
@requestparam
@requestparam注解用于将方法的参数与web请求的传递的参数进行绑定。使用@requestparam可以轻松的访问http请求参数的值。
下面是使用该注解的代码示例:
图片
该注解的其他属性配置与@pathvariable的配置相同,特别的,如果传递的参数为空,还可以通过defaultvalue设置一个默认值。示例代码如下:
图片
@controller
@controller是@component注解的一个延伸,spring 会自动扫描并配置被该注解标注的类。此注解用于标注spring mvc的控制器。下面是使用此注解的示例代码:
图片
@restcontroller
@restcontroller是在spring 4.0开始引入的,这是一个特定的控制器注解。此注解相当于@controller和@responsebody的快捷方式。当使用此注解时,不需要再在方法上使用@responsebody注解。
下面是使用此注解的示例代码:
图片
@modelattribute
通过此注解,可以通过模型索引名称来访问已经存在于控制器中的model。下面是使用此注解的一个简单示例:
图片
与@pathvariable和@requestparam注解一样,如果参数名与模型具有相同的名字,则不必指定索引名称,简写示例如下:
图片
特别地,如果使用@modelattribute对方法进行标注,spring会将方法的返回值绑定到具体的model上。示例如下:
图片
在spring调用具体的处理方法之前,被@modelattribute注解标注的所有方法都将被执行。
@crossorigin
@crossorigin注解将为请求处理类或请求处理方法提供跨域调用支持。如果我们将此注解标注类,那么类中的所有方法都将获得支持跨域的能力。使用此注解的好处是可以微调跨域行为。使用此注解的示例如下:
图片
@initbinder
@initbinder注解用于标注初始化webdatabinider 的方法,该方法用于对http请求传递的表单数据进行处理,如时间格式化、字符串处理等。下面是使用此注解的示例:
图片
神经网络的参数是如何来设定的
5G前传开放数字室分小基站系列产品解决方案重磅发布
等离子清洗技术
智能网关是什么,有哪些功能
华为正式推出首个服务器芯片鲲鹏920
Spring Web MVC注解
易华录举行数据合规系列指引专家论证活动
微软助力百富电子提高财务和供应链敏捷性
半导体封装公司智威科技与世强先进签署授权代理分销协议
智嵌物联串口服务器连接西门子PLC(S7-200)下载程序演示
袁煜明:区块链应用受关注 建议出台区块链专项政策
什么是人工智能?人工智能的应用有哪些
德国康佳特推出高可扩展性物联网网关系统
华为官方公布了新一批EMUI 11.0版本内测招募机型名单
怎么解决HDMI线远距离传输
小米逆势大涨34.9%,成手机市场的最大黑马
2019年半导体产业将进入商业循环对稳定的一个阶段
英特尔聚力整合实现可持续的异构计算
美国 5G 为何与 4G 相差无几?
比天价护肤品更管用,日本家用美容仪推荐