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

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

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

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

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

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

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

如:

java 复制代码
@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的情况,如下所示:

java 复制代码
@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体中,而不是在直接连接的地址后面。(放在参数前)

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

使用postman发送请求:

5、@RestController

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

6、@RequestParam

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

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

**注:**1、⽤ @RequestParam 进⾏参数重命名时, 请求参数只能和 @RequestParam 声明的名称⼀

致, 才能进⾏参数绑定和赋值.

  1. 使⽤ @RequestParam 进⾏参数重命名时, 参数就变成了必传参数。如果要将其设置为非必传参数,要将注解中的required参数设为false.
java 复制代码
@RequestMapping("/m4")
public Object method4(@RequestParam(value = "time", required = false) String
createtime) {
      return "接收到参数createtime:" + createtime;
}

7、@PathVariable

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

java 复制代码
@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

用于上传文件

java 复制代码
@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:

java 复制代码
@RequestMapping("/getCookie")
public String cookie(@CookieValue("bite") String bite) {
     return "bite:" + bite;
}

使用注解的方式获取Session:

(1)

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

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

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

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

相关推荐
卷毛的技术笔记5 小时前
告别硬编码!Spring AI Alibaba 实现 AI Agent 智能工具调用(Tool Calling)
java·人工智能·后端·python·spring·ai编程
编程大师哥5 小时前
匿名函数 lambda + 高阶函数
java·python·算法
喵个咪5 小时前
GoWind Toolkit 前端代码生成|Vue3(ElementPlus/Vben)、React(AntDesign)全自动一键生成教程
前端·vue.js·react.js
isyangli_blog5 小时前
OpenDayLight (Carbon 版本) 启动与组件安装
开发语言·php
vb2008116 小时前
FastAPI APIRouter
开发语言·python
Benszen6 小时前
KVM虚拟化解决方案
开发语言·perl
会编程的土豆6 小时前
Go 语言反射(Reflection)详解
开发语言·后端·golang
東雪木6 小时前
多线程与并发编程 专属复习笔记
java·开发语言·笔记·java面试
adrninistrat0r6 小时前
Java调用链MCP分析工具
java·python·ai编程
杨充6 小时前
1.3 浮点型数据设计灵魂
开发语言·python·算法