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常用注解,希望对你有所帮助。

相关推荐
潜意识起点3 分钟前
精通 CSS 阴影效果:从基础到高级应用
前端·css
奋斗吧程序媛8 分钟前
删除VSCode上 origin/分支名,但GitLab上实际上不存在的分支
前端·vscode
IT女孩儿17 分钟前
JavaScript--WebAPI查缺补漏(二)
开发语言·前端·javascript·html·ecmascript
m0_7482389218 分钟前
webgis入门实战案例——智慧校园
开发语言·ios·swift
醒了就刷牙24 分钟前
黑马Java面试教程_P9_MySQL
java·mysql·面试
m0_7482336430 分钟前
SQL数组常用函数记录(Map篇)
java·数据库·sql
Clockwiseee32 分钟前
PHP伪协议总结
android·开发语言·php
小灰灰搞电子33 分钟前
Qt实现Android的图案密码(图形解锁)源码分享
开发语言·qt
编程爱好者熊浪1 小时前
JAVA HTTP压缩数据
java
吴冰_hogan1 小时前
JVM(Java虚拟机)的组成部分详解
java·开发语言·jvm