Spring MVC中的一些常用注解

目录

@RequestMapping

实现路由映射

限制请求方式

@PathVariable

从url中获取变量的值

更改绑定参数的名字

@RequestParam

可以传递集合

更改绑定参数的名字

可修改是否为必传参数

@RequestBody

获取请求正文的内容

可修改是否为必传参数

@RequestPart

可以支持上传文件

更改绑定参数的名字

可修改是否为必传参数

@Controller

@CookieValue

获取指定的Cookie值

@SessionAttribute

获取指定的Session值

@RequestHeader

获取请求头中的值

@Controller

返回html页面

@ResponseBody

设置返回类型为数据


@RequestMapping

这个注解既是类注解也是方法注解

实现路由映射

这个注解主要来实现URL路由映射,也就是浏览器连接程序的作用。

url的组成:http://IP:端口号/类注解/方法注解

java 复制代码
@RestController
public class LoginController {
    @RequestMapping("/fun1")
    public String fun1() {
        return "hahaha";
    }
}
java 复制代码
@RequestMapping("/test")
@RestController
public class LoginController {
    @RequestMapping("/fun1")// "/"可写可不写
    public String fun1() {
        return "hahaha";
    }
}

限制请求方式

java 复制代码
@RequestMapping("/test")
@RestController
public class LoginController {
    @RequestMapping(value = "/fun1", method = RequestMethod.GET)// 只接收GET请求
    public String fun1() {
        return "hahaha";
    }
}

@PathVariable

从url中获取变量的值

java 复制代码
@RequestMapping("/fun2/{name}")
public String fun2(@PathVariable String name) {
    return "name:"+name;
}

更改绑定参数的名字

此时形参username的名字就可以随意更改了。

@RequestParam

可以传递集合

如果不加 @RequestParam注释Spring会默认将前端传的集合转换成数组。

java 复制代码
@RequestMapping("/fun3")
public List<String> fun3(@RequestParam List<String> list) {
    return list;
}
java 复制代码
@RequestMapping("/fun3")
public List<String> fun3(List<String> list) {
    return list;
}

更改绑定参数的名字

java 复制代码
@RequestMapping("/fun3")
public List<String> fun3(@RequestParam("list") List<String> a) {
    return a;
}

此时形参username的名字就可以随意更改了。

可修改是否为必传参数

被@RequestParam修饰的参数默认为必传参数。

java 复制代码
@RequestMapping("/fun3")
public List<String> fun3(@RequestParam(value = "list", required = false) List<String> a) {
    return a;
}

此时如果不传参数就不会报错。

@RequestBody

获取请求正文的内容

java 复制代码
@RequestMapping("/fun4")
public String fun4(@RequestBody User user){
    return user.toString();
}

可修改是否为必传参数

被@RequestBody修饰的参数默认为必传参数。

将其设置为非必传参数:

java 复制代码
@RequestMapping("/fun4")
public String fun4(@RequestBody(required = false) User user){
    return user.toString();
}

@RequestPart

可以支持上传文件

java 复制代码
@RequestMapping("/fun5")
public String fun5(@RequestPart MultipartFile file){
    return file.getOriginalFilename();//返回文件名
}

更改绑定参数的名字

java 复制代码
@RequestMapping("/fun5")
public String fun5(@RequestPart("file") MultipartFile a){
    return a.getOriginalFilename();
}

可修改是否为必传参数

被@RequestPart修饰的参数默认为必传参数。

java 复制代码
@RequestMapping("/fun5")
//设置参数为非必传
public String fun5(@RequestPart(value = "file", required = false) MultipartFile a){
    return a.getOriginalFilename();
}

@Controller

@CookieValue

获取指定的Cookie值

注:@CookieValue该注释只能获取一个Cookie值。

java 复制代码
@RequestMapping("/fun6")
//获取Cookie中键为name的值
public String fun6(@CookieValue("name") String value) {
    return "name:"+value;
}

首先在浏览器中创建一个 Cookie

@SessionAttribute

获取指定的Session值

注:只能获取单个Session

java 复制代码
//因为Session是服务器端的概念,所以获取之前应该先设置
@RequestMapping("/fun7")
public void fun7(HttpSession session) {
    //设置Session值
    session.setAttribute("name", "zhangsan");
}
//获取Session值
@RequestMapping("/fun8")
public String fun8(@SessionAttribute("name") String name) {
    return "name:"+name;
}

@RequestHeader

获取请求头中的值

下面这是一段请求头信息

现在获取里面的Host的值

java 复制代码
@RequestMapping("/fun9")
public String fun9(@RequestHeader("Host") String data) {
    return "Host:"+data;
}

@Controller

@Controller是一个类注解,它定义⼀个控制器,Spring框架启动时加载,把这个对象交给Spring管理。默认返回的是一个页面。

返回html页面

先创建一个HTML页面login.html

里面只有一行代码:

java 复制代码
@Controller
@RequestMapping("/test1")
public class Test {
    @RequestMapping("/fun1")
    public String fun1() {
        return "/login.html";
    }
}

@ResponseBody

注:这个注解既可以修饰类,也可以修饰方法。

被修饰的类或方法都只能返回数据。

设置返回类型为数据

java 复制代码
@Controller
@RequestMapping("/test1")
public class Test {
    @ResponseBody
    @RequestMapping("/fun1")
    public String fun1() {
        return "/login.html";
    }
}
相关推荐
Freak嵌入式8 分钟前
全网最适合入门的面向对象编程教程:50 Python函数方法与接口-接口和抽象基类
java·开发语言·数据结构·python·接口·抽象基类
前端小马18 分钟前
解决IDEA出现:java: 程序包javax.servlet不存在的问题
java·servlet·intellij-idea
IH_LZH1 小时前
Broadcast:Android中实现组件及进程间通信
android·java·android studio·broadcast
去看全世界的云1 小时前
【Android】Handler用法及原理解析
android·java
.Net Core 爱好者1 小时前
Redis实践之缓存:设置缓存过期策略
java·redis·缓存·c#·.net
晚睡早起₍˄·͈༝·͈˄*₎◞ ̑̑1 小时前
苍穹外卖学习笔记(五)
java·笔记·学习
码上一元1 小时前
【百日算法计划】:每日一题,见证成长(017)
java·算法
用生命在耍帅ㅤ1 小时前
java spring boot 动态添加 cron(表达式)任务、动态添加停止单个cron任务
java·开发语言·spring boot
学java的小菜鸟啊1 小时前
第五章 网络编程 TCP/UDP/Socket
java·开发语言·网络·数据结构·网络协议·tcp/ip·udp
zheeez1 小时前
微服务注册中⼼2
java·微服务·nacos·架构