SpringMVC常用注解

2023-09-20 10:10:17

除了@PathVaribale请求方式的不同,要用在方法上,其他注解都用在参数上

@RequestMapping,@ResponseBody既可以注解在类上,也可以注解到方法上。

目录

一.@RequestParam

 二.@RequestBody

 三.@PathVaribale

Restful风格

Restful风格如何实现缓存机制

四.@RequestHeader

五.@CookieValue

六,@ResponseBody

七 ,redirect:show1,forward:show1

八,Session值传递


一.@RequestParam


@RequestParam把请求中指定名称的参数给控制器中的形参赋值。
        name属性:设置参数名称
        defaultValue属性:设置默认值

@RequestMapping("/show2")
public String show2(@RequestParam("msg1") String msg, @RequestParam("msg2") int num){
return "success"; }

问:前端传入两个int类型的值是否正确,答案:正确,应为int可以转string,但是如果给msg2传入的是String类型的数据,就会报错

 二.@RequestBody

前后端分离
@RequestBody可以将json ===》 javaBean
注意:
前端不能使用GET方式提交数据,GET方式无请求体
用于获取"请求体"内容,并可以转换为对象。
@RequestMapping("/show4")
public String show4(@RequestBody Emp emp){return "success";}

 三.@PathVaribale

Restful风格

Restful是一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。
主要用于客户端和服务器交互类的软件,基于这个风格设计的软件可以更简洁,更有层次,
易于实现缓存机制

Restful风格如何实现缓存机制

一个WEB应用协议中的“状态”指的是,为两个相互关联的用户交互操作保留某种公共信息,例如用户登录信息,工作流等。这些信息具有不同作用域,如page,request,session,application等。通常由服务器负责保存这些信息。“无状态”的概念逐渐流行,得益于分布式系统的发展。首先,无状态请求易于实现负载均衡。在分布式web系统下,有多个可用服务器,每个服务器都可以处理客户端请求。传统的有状态请求,因为状态信息只保存在第一次发起请求的那台服务器上,之后的请求都只能由这台服务器来处理,服务器无法自由调度请求。无状态请求则完全没有这个限制。其次,无状态请求有较强的容错性和可伸缩性。如果一台服务器宕机,无状态请求可以透明地交由另一台可用服务器来处理,而有状态的请求则会因为存储请求状态信息的服务器宕机而承担状态丢失的风险。需要注意的是,“状态"指请求的状态,而不是资源的状态。Restful风格的无状态约束要求服务器不保存请求状态,如果确实需要维持用户状态,也应由客户端负责。传递用户信息是Restful(无状态)的,而传递sessionID是unRestful(有状态)的,因为session信息保存在服务器端。 

综上所述:Restful无状态, 浏览器发送http请求到服务器是无状态的( HTTP是无状态的,是指协议对于事务处理没有记忆能力, 加入Cookie就可以很好的解决无状态问题,而Cookie也存放在浏览器(客户端)当中),由此,客户端(浏览器)保存此次状态信息。无状态请求易于实现负载均衡,Restful更容易实现缓存机制。

个人理解:使url中的层级关系不容易被看出来,不容易被破解。
Restful风格的请求是使用“url+请求方式”表示一次请求目的的,HTTP 协议里面四个表示操作方式的动词如下:
GET:用于获取资源   POST:用于新建资源   PUT:用于更新资源   DELETE:用于删除资源
例如:
/users/1                GET :      得到 id = 1 的 user
/users/1                DELETE:    删除 id = 1 的 user
/users/1/新名/新性       PUT:       更新 id = 1 的 user
/users/新名/新性         POST:      新增 user

@PostMapping("/show5/{uname}/{pwd}")
public String show5(@PathVariable("uname") String msg1, @PathVariable("pwd") String msg2){
return "success";}

四.@RequestHeader

@RequestHeader作用:用于获取请求消息头。//URL路径当中不能带有中文名,否则会报错。
属性:
value:提供消息头名称
required:是否必须有此消息头

@RequestMapping("/show1")
public String show1(@RequestHeader(value="msg1") String msg){System.out.println(msg);return "success";}

五.@CookieValue


作用:用于把指定 cookie 名称的值传入控制器方法参数。
属性:
value:指定 cookie 的名称。
required:是否必须有此 cookie。

session存在Cookie中?

Session ID是存储在cookie中的;Cookie也被称为会话Cookie。Session在服务器端,Cookie在浏览器端。

session就是服务端为客户端创建的一个对象,这个对象用来保存一些用户的数据,这些数据用于服务端和客户端的“状态保存”;

发送这个带有session ID的cookie,服务器拿到这个带有session ID的cookie,就会取出对应的session ID,然后再到服务器中找到对应的session对象(session是存在服务端的)最后,当服务器辨别出这个用户后,就会对用户进行一些个性化的响应;

参考地址:JSP Cookie 使用完全详解_haovin668的博客-CSDN博客 

@RequestMapping("/show2")
public String show2(@CookieValue(value = "JSESSIONID",required = false)String jsessionid){
System.out.println(jsessionid);
return "success";}

六,@ResponseBody

@ResponseBody   对象====>json 类和方法都可以,标注在类上表示所有方法值都为json
@RequestBody    json====>对象,方法参数
@RestController   =  @Controller  +  @ResponseBody标注在控制器类上

七 ,redirect:show1,forward:show1

重新发送一次请求,当方法上没有ResponseBody修饰时,两个语句都表示逻辑名称,自动跳转到show1下的页面。

八,Session值传递

request.getSession() .setAttribute("emp",emp);前后端未分离时,利用request存储信息到动态网页当中。网页中#(sessino.emp.eid)以表达式的形式接受。


 

更多推荐

neo4j下载安装配置步骤

目录一、介绍简介Neo4j和JDK版本对应二、下载官网下载直接获取三、解压缩安装四、配置环境变量五、启动测试一、介绍简介Neo4j是一款高性能的图数据库,专门用于存储和处理图形数据。它采用节点、关系和属性的图形结构,非常适用于表示和查询复杂的实体关系。Neo4j具有高性能、事务支持、可扩展性和直观的Cypher查询语言

喜报 | 亮相2023数博会,摘得首届数智金融创新大赛优秀奖

河北正定,千年古城,这里不仅有一幕幕刀光剑影,鼓角争鸣的故事,还有驰名中外的人“一寺四塔”,有宜人的气候,也有汇聚高科技的天下英雄会。图源于网络2023年9月6日,河北正定,中国国际数字经济博览会(以下简称数博会)正式开幕,坚定“工业互联网赋能千行百业”的科技信仰,奔向“数字经济引领高质量发展”的未来世界。图源于网络据

探索小程序的世界(专栏导读、基础理论)

文章导读一、为什么要学习小程序开发1.1低门槛1.2市场需求1.3创业机会1.4技术发展趋势二、专栏导读2.1实战系列2.2工具系列2.3游戏系列2.4插件系列三、基础理论3.1微信小程序简易教程框架组件API工具开发者工具项目结构3.2app.json配置pageswindowtabbar3.3App.jsonLau

k8备份与恢复-Velero

简介Velero是一款可以安全的备份、恢复和迁移Kubernetes集群资源和持久卷等资源的备份恢复软件。Velero实现的kubernetes资源备份能力,可以轻松实现Kubernetes集群的数据备份和恢复、复制kubernetes集群资源到其他kubernetes集群或者快速复制生产环境到测试环境等功能,这种备份

4. algorithm

algorithm书写1.algorithm2.algorithm2e1.algorithm在LaTeX中,要显示算法,您可以使用algorithm宏包来排版算法,并使用algorithmic宏包来编写算法的伪代码。以下是显示算法的基本步骤:导入宏包:在LaTeX文档的导言区(preamble)中,导入algorith

idea集成tomcat(Smart Tomcate插件安装)

当我们在tomcat上部署好一个webapp后,如果我们要修改代码,就需要重新进行打包和部署,但往往在工作中是需要频繁修改代码,然后再查看成果的,就需要反复的进行打包和部署的过程,这是很麻烦的通过SmartTomcate插件我们就能解决这个问题,可以直接使用idea图形化界面把代码部署到tomcat上达成“一键打包&部

Windows服务器设置Nginx实现分布式服务

1.安装Nginx下载Nginx-1.16.1版本。解压到如下目录:设置环境变量:检查版本:启动nginx.exe,出现黑框一闪而过,进程中出现如下情况代表启动成功:2.搭建模拟HTTP服务下载wiremock-standalone-2.25.1.jar,可以使用Maven配置pom.xml下载。注意下载standal

JavaWeb后端开发 JWT令牌解析 登录校验 通用模板/SpringBoot整合

目录实现思路相关技术的解析​编辑会话跟踪三个方案JWT令牌技术​生成令牌校验令牌登录下发令牌实现思路通过登录成功的标记来检测,在每个接口前做一个标记判断是否登录,若没登录则返回错误信息,并使前端退出.但这样较为繁琐,因此我们可以通过一种统一拦截的技术来拦截所有请求.相关技术的解析会话跟踪的三个方案1.访问cookie的

Nginx替代产品-Tengine健康检测

1、官网地址官网地址:TheTengineWebServer文档地址:文档-TheTengineWebServer健康检测模块:ngx_http_upstream_check_module-TheTengineWebServer2、安装下载wgethttps://tengine.taobao.org/download/

数据中心防雷机柜PDU产品应该怎么选?

PDU防雷插座是针对标准机柜上安装而设计,主要保护机柜内通信、电子等重要设备,避免因过电压和雷电感应而造成设备损坏。该类型PDU将防雷器与电源插板完美组合,配有多路输出插孔,兼容多国插头标准,可同时保护多路电源,使用安全可靠,简单方便,可更换式防雷模块、维护方便等优点。随着现代科技的发展和社会的进步,各行各业在不断地引

E. Moment of Bloom

Problem-E-Codeforces思路:这个题看到之后想到了不可能的情况,就是如果度为奇数就一定不可能实现都是偶数,但是后面就不知道怎么搞了。正解是欧拉定理的应用把算是,首先对于给定的q个要求,我们从a->b连一条边,如果此时生成的图由许多个欧拉回路组成,并且我们还知道给定的这个图是联通的,那么我们就可以生成一颗

热文推荐