SpringMVC中的常用注解

目录

SpringMVC的定义

SpringMVC的常用注解

获取Cookie和Session


SpringMVC的定义

  Spring Web MVC 是基于 Servlet API 构建的原始 Web 框架,从⼀开始就包含在 Spring 框架中。它的正式名称“Spring Web MVC”来⾃其源模块的名称(Spring-webmvc),但它通常被称为SpringMVC。

什么是MVC?

MVC 是 Model View Controller 的缩写,它是软件⼯程中的⼀种软件架构设计模式,它把软件系统分为模型视图控制器三个基本部分.

View(视图) 指在应⽤程序中专⻔⽤来与浏览器进⾏交互,展⽰数据的资源.
Model(模型) 是应⽤程序的主体部分,⽤来处理程序中数据逻辑的部分.
Controller(控制器)可以理解为⼀个分发器,⽤来决定对于视图发来的请求,需要⽤哪⼀个模型来处理,以及处理完后需要跳回到哪⼀个视图。即⽤来连接视图和模型。

MVC 是⼀种架构设计模式, 也⼀种思想, ⽽ Spring MVC 是对 MVC 思想的具体实现. 除此之外, SpringMVC还是⼀个Web框架。
总结来说,Spring MVC 是⼀个实现了 MVC 模式的 Web 框架.


SpringMVC的常用注解

1、 @RequestMapping

用来注册接口的路由映射。如:

@RestController
public class UserController {
// 路由器规则注册
@RequestMapping("/sayHi")
public String sayHi(){return "hello,Spring MVC";}
}

当服务器收到请求时,路径为/sayHi的请求就会调用sayHi这个方法的代码。

@RequestMapping既可修饰类,也可以修饰方法。当修饰类和方法时,访问的地址是类路径+方法路径。

@RequestMapping标识⼀个类:设置映射请求的请求路径的初始信息
@RequestMapping标识⼀个⽅法:设置映射请求请求路径的具体信息

如:

@RequestMapping("/user")
@RestController
public class UserController {
@RequestMapping("/sayHi")
public String sayHi(){return "hello,Spring MVC";}
}

访问地址:http://127.0.0.1:8080/user/sayHi

注:@RequestMapping 的URL 路径最前⾯加不加 / (斜杠)都可以, Spring程序启动时, 会进⾏判断, 如果前⾯没有加 / , Spring会拼接上⼀个 /

通常情况下, 我们加上 /

@RequestMapping 既⽀持Get请求, ⼜⽀持Post请求. 同理, 也⽀持其他的请求⽅式。

我们可以显式的指定@RequestMapping 来接收POST的情况,如下所示:

@RestController
public class UserController {@RequestMapping(value = "/getRequest",method= RequestMethod.POST)public String sayHi(){return "get request...";}
}

2、@Controller

加在上,表示这是一个控制类。 默认返回视图

3、@ResponseBody

支持将返回值放到response内,而不是一个页面,通常用户返回json数据。默认返回数据。即是类注解,又是方法注解,加在类上表示该类的所有方法都返回数据。加在方法上,表示该方法返回数据。

4、@RequestBody

允许request的参数在request体中,而不是在直接连接的地址后面。(放在参数前)

@RequestMapping(value = "/m7")
public Object method7(@RequestBody Person person) {return person.toString();
}

  使用postman发送请求:

5、@RestController

该注解为一个组合注解,相当于@Controller@ResponseBody的组合,注解在上,意味着,该Controller的所有方法都默认加上了@ResponseBody。

6、@RequestParam

某些情况下,可能存在前端传递参数和后端接收参数名称不一致的情况,可以使用@RequestParam来重命名前后端的参数。

@RequestMapping("/m4")
public Object method_4(@RequestParam("time") String createtime) {return "接收到参数createtime:" + createtime;
}

注:1、⽤ @RequestParam 进⾏参数重命名时, 请求参数只能和 @RequestParam 声明的名称⼀
致, 才能进⾏参数绑定和赋值.
2. 使⽤ @RequestParam 进⾏参数重命名时, 参数就变成了必传参数。如果要将其设置为非必传参数,要将注解中的required参数设为false.

@RequestMapping("/m4")
public Object method4(@RequestParam(value = "time", required = false) String
createtime) {return "接收到参数createtime:" + createtime;
}

7、@PathVariable

这个注解主要作⽤在请求URL路径上的数据绑定。默认传递参数写在URL上,SpringMVC就可以获取到。

@RequestMapping("/m8/{id}/{name}")
public String method8(@PathVariable Integer id, @PathVariable("name") String
userName){return "解析参数id:"+id+",name:"+userName;
}

注:如果⽅法参数名称和需要绑定的URL中的变量名称⼀致时, 可以简写, 不⽤给@PathVariable的属性赋值, 如上述例⼦中的id变量
如果⽅法参数名称和需要绑定的URL中的变量名称不⼀致时, 需要@PathVariable的属性value赋值,
如上述例⼦中的userName变量.

8、@RequestPart

用于上传文件

@RequestMapping("/m9")
public String getfile(@RequestPart("file") MultipartFile file) throws
IOException {//获取⽂件名称String fileName = file.getOriginalFilename();//⽂件上传到指定路径file.transferTo(new File("D:/temp/" + file.getOriginalFilename()));return "接收到⽂件名称为: "+fileName;
}

获取Cookie和Session

(重点)Cookie和Session的区别:

• Cookie 是客⼾端保存⽤⼾信息的⼀种机制.。Session 是服务器端保存⽤⼾信息的⼀种机制.
• Cookie 和 Session之间主要是通过 SessionId 关联起来的, SessionId 是 Cookie 和 Session 之间的桥梁。
• Cookie 和 Session 经常会在⼀起配合使⽤. 但不是必须配合.
      ◦ 完全可以⽤ Cookie 来保存⼀些数据在客⼾端. 这些数据不⼀定是⽤⼾⾝份信息, 也不⼀定是
SessionId
      ◦ Session 中的sessionId 也不需要⾮得通过 Cookie/Set-Cookie 传递, ⽐如通过URL传递. 


 手动设置Cookie的值:

使用注解的方式获取Cookie:

@RequestMapping("/getCookie")
public String cookie(@CookieValue("bite") String bite) {return "bite:" + bite;
}

 使用注解的方式获取Session:

(1)

@RequestMapping("/getSess2")
public String sess2(@SessionAttribute(value = "username",required = false)
String username) {return "username:"+username;
}

(2)通过Spring MVC内置对象HttpSession 来获取: 

@RequestMapping("/getSess3")
public String sess3(HttpSession session) {
String username = (String)session.getAttribute("username");return "username:"+username;
}

以上,关于MVC常用注解,希望对你有所帮助。

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

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

相关文章

全麦饼:健康与美味的完美结合

在追求健康饮食的当下,全麦饼以其独特的魅力脱颖而出,成为了众多美食爱好者的新宠。食家巷全麦饼,顾名思义,主要由全麦面粉制作而成。与普通面粉相比,全麦面粉保留了小麦的麸皮、胚芽和胚乳,富含更多的膳食…

免费聊天回复神器微信小程序

客服在手机上通过微信聊天,回复客户咨询的时候,如果想把整理好的话术一键发给客户,又不想切换微信聊天窗口,微信小程序是一个很好的选择 微信小程序支持微信聊天 客服在手机上通过微信聊天,回复客户咨询的时候&#x…

Shell编程——简介和基础语法(1)

文章目录 Shell简介什么是ShellShell环境第一个Shell脚本Shell脚本的运行方法 Shell基础语法Shell变量Shell传递参数Shell字符串Shell字符串截取Shell数组Shell运算符 Shell简介 什么是Shell Shell是一种程序设计语言。作为命令语言,它交互式解释和执行用户输入的命…

linux进程控制——进程等待——wait、waitpid

前言:本节内容仍然是进程的控制,上一节博主讲解的是进程控制里面的进程创建、进程退出、终止。本节内容将讲到进程的等待——等待是为了能够将子进程的资源回收,是父进程等待子进程。 我们前面的章节也提到过等待, 那里的等待是进…

ThreadPoolExecutor工作原理及源码详解

一、前言 创建一个线程可以通过继承Thread类或实现Runnable接口来实现,这两种方式创建的线程在运行结束后会被虚拟机回收并销毁。若线程数量过多,频繁的创建和销毁线程会浪费资源,降低效率。而线程池的引入就很好解决了上述问题,…

计算机组成原理---机器中的数字表示

二进制,八进制,十六进制之间转化 十进制转二进制 75.3的整数部分75: 75.3小数部分0.3: 原则:1.先除r/乘r得到的是结果部分中接近小数点的数字 2.都是取结果一部分(余数/整数部分),使…

51单片机15(直流电机实验)

一、序言:我们知道在单片机当中,直流电机的控制也是非常多的,所以有必要了解一些这个电机相关的一些知识,以及如何使用单片机来控制这个电机,那么在没有学习PWM之前,我们先简单的使用GPIO这个管脚来控制电机…

npm提示 certificate has expired 证书已过期 已解决

在用npm新建项目时,突然发现报错提示 : certificate has expired 证书已过期 了解一下,在网络通信中,HTTPS 是一种通过 SSL/TLS 加密的安全 HTTP 通信协议。证书在 HTTPS 中扮演着至关重要的角色,用于验证服务器身份并加密数据传输…

vue实现电子签名、图片合成、及预览功能

业务功能:电子签名、图片合成、及预览功能 业务背景:需求说想要实现一个电子签名,然后需要提供一个预览的功能,可以查看签完名之后的完整效果。 需求探讨:后端大佬跟我说,文档我返回给你一个PDF的oss链接…

【书生大模型实战营(暑假场)】入门任务一 Linux+InternStudio 关卡

入门任务一 LinuxInternStudio 关卡 参考: 教程任务 1 闯关任务 1.1 基于 VScode 的 SSH 链接 感谢官方教程的清晰指引,基于VS code 实现 SSH 的链接并不困难,完成公钥配之后,可以实现快速一键链接,链接后效果如下…

XXE -靶机

XXE靶机 一.扫描端口 进入xxe靶机 1.1然后进入到kali里 使用namp 扫描一下靶机开放端口等信息 1.2扫描他的目录 二 利用获取的信息 进入到 robots.txt 按他给出的信息 去访问xss 是一个登陆界面 admin.php 也是一个登陆界面 我们访问xss登陆界面 随便输 打开burpsuite抓包 发…

【MySQL】事务 【下】{重点了解读-写 4个记录隐藏列字段 undo log日志 模拟MVCC Read View sel}

文章目录 1.MVCC数据库并发的场景重点了解 读-写4个记录隐藏列字段 2.理解事务undo log日志mysql日志简介 模拟MVCC 3.Read Viewselect lock in share modeMVCC流程RR与RC 1.MVCC MVCC(Multi-Version Concurrency Control,多版本并发控制)是…

20240801 每日AI必读资讯

🔊OpenAI向ChatGPT Plus用户推出高级语音模式 - 只给一小部分Plus用户推送,全部Plus用户要等到秋季 - 被选中的Alpha 测试的用户将收到一封包含说明的电子邮件,并在其移动应用中收到一条消息。 - 同时视频和屏幕共享功能继续推出&#xff…

ElasticSearch父子索引实战

关于父子索引 ES底层是Lucene,由于Lucene实际上是不支持嵌套类型的,所有文档都是以扁平的结构存储在Lucene中,ES对父子文档的支持,实际上也是采取了一种投机取巧的方式实现的. 父子文档均以独立的文档存入,然后添加关联关系,且父子文档必须在同一分片,由于父子类型文档并没有…

echarts加载区域地图,并标注点

效果如下,加载了南海区域的地图,并标注几个气象站点; 1、下载区域地图的JSON:DataV.GeoAtlas地理小工具系列 新建nanhai.json,把下载的JSON数据放进来 说明:如果第二步不打勾,只显示省的名字&a…

ECCV 2024前沿科技速递:GLARE-基于生成潜在特征的码本检索点亮低光世界,低光环境也能拍出明亮大片!

在计算机视觉与图像处理领域,低光照条件下的图像增强一直是一个极具挑战性的难题。暗淡的光线不仅限制了图像的细节表现,还常常引入噪声和失真,极大地影响了图像的质量和可用性。然而,随着ECCV 2024(欧洲计算机视觉会议…

应急靶场(11):【玄机】日志分析-apache日志分析

题目 提交当天访问次数最多的IP,即黑客IP黑客使用的浏览器指纹是什么,提交指纹的md5查看index.php页面被访问的次数,提交次数查看黑客IP访问了多少次,提交次数查看2023年8月03日8时这一个小时内有多少IP访问,提交次数 …

OrangePi AI Pro 固件升级 —— 让主频从 1.0 GHz 到 1.6 GHz 的巨大升级

前言 OrangePi AI Pro 最近发布了Ascend310B-firmware 固件包,据说升级之后可以将 CPU 主频从 1.0 GHz 提升至 1.6 GHz,据群主大大说,算力也从原本的 8T 提升到了 12T,这波开发板的成长让我非常的 Amazing 啊!下面就来…

Linux命令行 复制模式/扩展模式 调用系统功能切换

问题背景 公司软件需要从window 适配国产操作系统,目前使用wine方案。在我们软件有个切换屏幕模式的功能,需要支持用户在我们软件内,切换复制模式/扩展模式。 在linux 下 uos/deepin 等系统。如果要从复制模式设置为扩展模式使用命令行时&a…

Windows下nmap命令及Zenmap工具的使用方法

一、Nmap简介 nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称 fingerprinting)。它是网络管理员必用的软件之一,以及用以评…