SpringMvc常用注解

2023-09-16 10:30:20

目录

  

一、@RequestParam

二、@RequestHeader,@CookieValue

三、@ModelAttribute

(1)作用1

(2)作用2

四、@ResponseBody

五、@RestController

六、@RequestBody


一、@RequestParam

@RequestParam可以在控制器方法中获取请求参数,位置放在方法参数前就行。

属性:

name:指定参数的名称

defaultValue:为参数设置默认值

required:设置是否是必须要传入的参数

@RequestMapping("/c2/h7")
    public String t7(@RequestParam(name = "username",defaultValue = "uiuiui",required = false)String name){
        System.out.println("name="+name);
        return "test";
    }

请求路径:(所以这个注解的作用也可以理解成起别名)

http://localhost:8080/c2/h7?username=9090

二、@RequestHeader,@CookieValue

@RequestHeader:

(1)作用

在控制器方法中获取请求头数据

(2)位置

方法参数前

@CookieValue

(1)作用

在控制器方法中获取Cookie数据

(2)位置

方法参数前

/*
    获取User-Agent请求头
    获取JSESSIONID的Cookie值
   */
@RequestMapping("/annotation3")
public String annotation3(@RequestHeader("User-Agent") String userAgent, @CookieValue("JSESSIONID") String jSessionId){
  System.out.println(userAgent);
  System.out.println(jSessionId);
  return "baizhan";
}

三、@ModelAttribute

(1)作用1

设置指定方法在控制器其他方法前执行

@Controller
@RequestMapping("/c5")
public class MyController5 {
  @ModelAttribute
  public void before(){
    System.out.println("前置方法");
   }


  @RequestMapping("/t1")
  public String t1(){
    System.out.println("t1");
    return "test";
   }
}


(2)作用2

从Model模型中获取数据给参数赋值

@Controller
@RequestMapping("/c6")
public class MyController6 {
  // 前置方法向Model中设置数据
  @ModelAttribute
  public void before(Model model){
    model.addAttribute("name","666");
   }


  // 该参数不是从请求中获取,而是从Model中获取
  @RequestMapping("/t1")
  public String t1(@ModelAttribute("name") String name){
    System.out.println(name);
    return "test";
   }
}

四、@ResponseBody

作用:方法返回的对象转换为JSON格式,并将JSON数据直接写入到输出流中,使用此注解后不会再经过视图解析器。使用该注解可以处理Ajax请求。

SpringMVC会将Result对象转为JSON格式写入输出流,而SpringMVC默认使用的JSON转换器是jackson,需要在pom中添加jackson依赖。

<!-- jackson -->
<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-core</artifactId>
  <version>2.9.0</version>
</dependency>
<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-databind</artifactId>
  <version>2.9.0</version>
</dependency>
<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-annotations</artifactId>
  <version>2.9.0</version>
</dependency>

 

五、@RestController

如果一个控制器类下的所有控制器方法都返回JSON格式数据且不进行跳转,可以使用@RestController代替@Controller,此时每个方法上的@ResponseBody都可以省略。

@RestController
@RequestMapping("/c8")
public class MyController8 {  
  @PostMapping("/addStudent")  
  public Result addStudent(String name, String sex) { 
    // 输出接受到的参数,模拟添加学生   
    System.out.println(name+":"+sex);    
    // 返回结果    
    Result result = new Result(true, "添加学生成功!"); 
    return result;  
   }
}

六、@RequestBody

作用:将请求中JSON格式的参数转为JAVA对象

@PostMapping("/addStudent2")
@ResponseBody
public Result addStudent2(@RequestBody Student student) {
  System.out.println(student);
  // 返回添加结果
  Result result = new Result(true, "添加学生成功!");
  return result;
}

 

更多推荐

开源软件的漏洞响应:应对安全威胁

🌷🍁博主猫头虎带您GotoNewWorld.✨🍁🦄博客首页——猫头虎的博客🎐🐳《面试题大全专栏》文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺🌊《IDEA开发秘籍专栏》学会IDEA常用操作,工作效率翻倍~💐🌊《100天精通Golang(基础入门篇)》学会Golang语言,畅玩云原生,走遍大

Learned-Based VO 梳理(USTC Paper Reading)

梗概主题:VOinDynamic思路简答介绍SLAM框架,引入VO问题直接从LearnedVO开始,介绍VO问题的相关研究,总结当前研究存在的问题讨论DynamicVO中的相关做法,总结问题,提出想法拓展VO和navigation的关系引入SLAM的全称是SimultanousLocationAndMapping,同步

【软件工程】软件工程之道—《人月神话》读后思考

目录写在前面1图书介绍2读后思考写在前面《人月神话》是一本由弗雷德里克·布鲁克斯(FrederickP.Brooks)所著的计算机科学经典著作。这本书首次出版于1973年,至今仍然被认为是计算机科学领域的重要参考书籍之一。它对我产生了深远的影响。通过作者弗雷德里克·布鲁克斯的深入剖析和丰富的实践经验,我对软件开发项目的

✔ ★ 算法基础笔记(Acwing)(三)—— 搜索与图论(17道题)【java版本】

搜索与图论1.DFS1.排列数字(3分钟)2.n-皇后问题2.BFS(队列)1.走迷宫二刷总结(队列存储一个节点pair<int,int>)三刷总结走过的点标记上距离(既可以记录距离,也可以判断是否走过)★★例题2.八数码二刷总结3.树与图的dfs1.树的重心二刷总结1.如何找根节点?用无向图遍历,则不需要根节点2.把

红与黑(bfs + dfs 解法)(算法图论基础入门)

红与黑问题文章目录红与黑问题前言问题描述bfs解法dfs解法前言献给阿尔吉侬的花束(入门级bfs查找+模版解读+错误示范在之前的博客当中,详细地介绍了这类题目的解法,今天为大家带来一道类似的题目练练手,后续还会更新更有挑战的题目以及更为详细的解析,喜欢的小伙伴可以点个关注啦!问题描述有一间长方形的房子,地上铺了红色、黑

8个很棒的Vue开发技巧

1.路由参数解耦通常在组件中使用路由参数,大多数人会做以下事情。exportdefault{methods:{getParamsId(){returnthis.$route.params.id}}}在组件中使用$route会导致与其相应路由的高度耦合,通过将其限制为某些URL来限制组件的灵活性。正确的做法是通过prop

实现 3D 倒计时器

构建单个倒计时器卡片实现思路从上述的总体效果图来看,单个倒计时器的卡片主要是分为头部为尾部两个部分,所以我们可以采用flex布局来实现整体的布局,并且利用flex布局实现文字内容的布局。具体实现步骤如下:编写HTML结构<divclass="flip_cardflip"><divclass="top">4</div><

openGauss学习笔记-69 openGauss 数据库管理-创建和管理普通表-更新表中数据

文章目录openGauss学习笔记-69openGauss数据库管理-创建和管理普通表-更新表中数据openGauss学习笔记-69openGauss数据库管理-创建和管理普通表-更新表中数据修改已经存储在数据库中数据的行为叫做更新。用户可以更新单独一行、所有行或者指定的部分行。还可以独立更新某个字段,而其他字段则不受

英国8月CPI意外降温,然而加息决定仍悬而未决

KlipC报道:据英国国家统计局公布最新数据显示,8月CPI同比上涨6.7%,低于上月数据,核心CPI增幅低于经济学家的预测。数据公布后,英镑走弱、英债收益率下跌,英镑应声下跌0.5%至5月以来的最弱水平,两年期英债债券收益率下跌至4.298%。KlipC的合伙人AndiD表示:“8月CPI涨幅微降主要原因是食品价格涨

西门子828d授权密钥破解经验分享 I7I54833762

操作数组的方法Array.prototype.toSorted(compareFn)//返回一个新数组,其中元素按升序排序,而不改变原始数组。Array.prototype.toReversed()//返回一个新数组,该数组的元素顺序被反转,但不改变原始数组。Array.prototype.toSpliced(star

【Qt】Unicode编码作用 ,以及在Qt中的理解

Unicode编码是一种字符编码标准,它为世界上几乎所有的字符都分配了一个唯一的数字标识符,以便在计算机系统中进行存储和处理。Unicode编码的作用有以下几点:统一字符表示:Unicode编码提供了一个统一的字符集,使得不同语言、不同文化背景的字符都能够被准确地表示和处理。它包括了世界上几乎所有的字符,包括字母、数字

热文推荐