SpringBoot:SpringMVC(下)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、@RequestBody补充
  • 二、@PathVariable
  • 三.@RequestPart:
  • 四.@ResponseBody
  • 五.@CookieValue,@SessionAttribute,@RequestHeader


前言

提示:这里可以添加本文要记录的大概内容:

接着上一篇的mvc(上),下面继续接着写,上篇回顾,讲到了
a. @RequestMapping: 路由映射
b. @RequestParam: 后端参数重命名
c. @RequestBody: 接收JSON类型的参数
这三个类注解,接下来开启新篇


提示:以下是本篇文章正文内容,下面案例可供参考

一、@RequestBody补充

public class UserInfo {
    private Integer id;
    private String username;
    private Integer age;

    @Override
    public String toString() {
        return "UserInfo{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", age=" + age +
                '}';
    }


    public Integer getId() {
        return id;
    }

    public String getUsername() {
        return username;
    }
    public Integer getAge() {
        return age;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
}
@RequestMapping("/r6")
    public String r6(@RequestBody UserInfo userInfo){
        return userInfo.toString();
   }

这里就是再补充一下中Java对象转json的写法

public class JSONUtils {
    public static void main(String[] args) throws JsonProcessingException {
        ObjectMapper objectMapper = new ObjectMapper();
        UserInfo userInfo = new UserInfo();
        userInfo.setUsername("zhangsan");
        userInfo.setAge(18);
        userInfo.setId(10);
        //对象转json
        String s = objectMapper.writeValueAsString(userInfo);
        System.out.println(s);
        UserInfo userInfo1 = objectMapper.readValue(s,UserInfo.class);
        System.out.println(userInfo1);


    }
}

在这里插入图片描述
第一行就是转成的json格式
然后把这个复制到postman中

{"id":10,"username":"zhangsan","age":18}

requestbody是body并且是json格式
在这里插入图片描述
在这里插入图片描述
然后就可以了

二、@PathVariable

这个就是修改url的路径
我演示一下

 @RequestMapping("/r7/{name}/{age}")
   public String r7(@PathVariable String name,@PathVariable Integer age){
        return "name:"+name+"age:"+age;
   }

在这里插入图片描述

三.@RequestPart:

@RequestMapping("/r9")
    public String r9(@RequestPart MultipartFile file) throws IOException {
        String filename = file.getOriginalFilename();
        file.transferTo(new File("D:/images/"+filename));
        return filename;
   }

在这里插入图片描述
在这里插入图片描述
这个这样子写别忘了

四.@ResponseBody

这个二记住一下@RestController = @Controller + @ResponseBody

五.@CookieValue,@SessionAttribute,@RequestHeader

@CookieValue: 从Cookie中获取值
@SessionAttribute: 从Session中获取值
@RequestHeader: 从Header中获取值

public class RequestController {
    @RequestMapping("/getCookie")
    public String getCookie(HttpServletRequest request){
        Cookie[] cookies = request.getCookies();
//        Arrays.stream(cookies).forEach(x -> System.out.println(x.getName()+":"+x.getValue()));
        if (cookies!=null){
            for (Cookie c:cookies) {
                System.out.println(c.getName()+":"+c.getValue());
            }
            return "获取cookie成功";
        }
        return "获取失败";
    }
    @RequestMapping("/getCookie2")
    public String getCookie2(@CookieValue("bite")String bite){
        return "bite"+bite;
    }
    @RequestMapping("/setSession")
    public String setSession(HttpServletRequest request){
        HttpSession session = request.getSession();
        session.setAttribute("userName","wangwu");
        return "设置session成功";

    }
    @RequestMapping("/getSession")
    public String getSession(HttpServletRequest request){
        HttpSession session = request.getSession();
        String username = (String) session.getAttribute("username");
        return "登录用户"+username;
    }
    @RequestMapping("/getSession2")
    public String getSession(HttpSession session){
        String username = (String) session.getAttribute("userName");
        return "登录用户:"+username;
    }
    @RequestMapping("/getSession3")
    public String getSession(@SessionAttribute("userName")String username){
        return "登录用户:"+username;
    }
    @RequestMapping("/getHeader")
    public String getHeader(HttpServletRequest request){
        String userAgent = request.getHeader("User-Agent");
        return "userAgent:"+userAgent;
    }
}

个人感觉还是HttpServletRequest 更加通用,当然了setsession还是得session.setAttribute

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

window下qt可执行程序打包

添加软件图标 方法1: QApplication a(argc, argv);// 设置应用程序图标QIcon appIcon("C:/Users/Administrator/Desktop/otp.png"); // 替换为你的图标文件路径a.setWindowIcon(appIcon); 缺点:运行后才显示图标,可执行程序文件图…

集成触发器(数电笔记)

同步触发器: 主从触发器: 边沿触发器:

2024年怎么购买阿里云5年云服务器?购买5年有什么优惠?(图文教程)

2024年阿里云优惠活动中的服务器大多数都是针对新用户,而且时长都变成了1个月或者1年,比较符合大多数用户的需求,不过有些用户由于需要长期使用云服务器,需要一次买5年,但是现在活动中的云服务器又没有5年的了&#xf…

边缘计算的优势

边缘计算的优势 边缘计算是一种在数据生成地点附近处理数据的技术,而非传统的将数据发送到远端数据中心或云进行处理。这种计算模式对于需要快速响应的场景特别有效,以下详述了边缘计算的核心优势。 1. 降低延迟 边缘计算通过在数据源近处处理数据&…

opencv基础篇 ——(三)图像二值化

opencv基础篇 ——(三)图像二值化 图像二值化是图像处理中常用的一种技术,用于将灰度图像转换为只包含两个像素值(通常是黑色和白色)的二值图像。这种处理通常用于简化图像、减少数据量以及强调感兴趣的目标。 二值化…

vue3中web前端JS动画案例(二)多物体运动-多值运动

<script setup> import { ref, onMounted, watch } from vue // ----------------------- 01 js 动画介绍--------------------- // 1、匀速运动 // 2、缓动运动&#xff08;常见&#xff09; // 3、透明度运动 // 4、多物体运动 // 5、多值动画// 6、自己的动画框架 // …

OWASP发布十大开源软件安全风险及应对指南

​ 最近爆发的XZ后门事件&#xff0c;尽管未酿成Log4j那样的灾难性后果&#xff0c;但它再次敲响了警钟&#xff1a;软件供应链严重依赖开源软件&#xff0c;导致现代数字生态系统极其脆弱。面对层出不穷的安全漏洞&#xff0c;我们需要关注开源软件 (OSS)风险 &#xff0c;改进…

干货 | 用几个语法打破你对Python的滤镜

Python现在是越来越火爆&#xff0c;不仅是风靡世界&#xff0c;还直接进入了中小学生的课堂。所以有越来越多的人想要尝试编程了。 想到以前当我第一次用代码打出“Hello, world”的时候&#xff0c;那种兴奋激动之情&#xff0c;真的是难以言表。 不过很多同学在刚入门的时…

nodejs在控制台打印艺术字

const figlet require("figlet");figlet("SUCCESS", function (err, data) {if (err) {console.log("Something went wrong...");console.dir(err);return;}console.log(data);}); 参考链接&#xff1a; https://www.npmjs.com/package/figlet…

Facebook账号运营要用什么IP?

众所周知&#xff0c;Facebook封号大多数情况都是因为IP的原因。Facebook对于用户账号有严格的IP要求和限制&#xff0c;以维护平台的稳定性和安全性。在这种背景下&#xff0c;海外IP代理成为了一种有效的解决方案&#xff0c;帮助用户避免检测&#xff0c;更加快捷安全地进行…

【LeetCode: 39. 组合总和 + 递归】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

程序员缓解工作压力的小窍门

目录 程序员缓解工作压力的小窍门 方向一&#xff1a;工作与休息的平衡 方向二&#xff1a;心理健康与自我关怀 方向三&#xff1a;社交与网络建设 程序员缓解工作压力的小窍门 程序员的工作性质常常伴随着高度的精神集中和持续的创新压力。为了保持高效和创新&#xff0c…

算法题解记录20+++

题目描述&#xff1a; 难度&#xff1a;简单 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整数 pos 来…

伪逆矩阵的两种求法

当矩阵的行列不相等&#xff0c;矩阵不是方阵时&#xff0c;求解矩阵的逆&#xff0c;可以使用伪逆的方法。 求解伪逆有两种方式。本文以mxn&#xff08;m<n&#xff09;的矩阵求解为例。 方法1&#xff1a;右伪逆 对于一个矩阵 和矩阵&#xff0c;如何矩阵之间满足&#…

3D模型人物换装系统(五 模型核批之后模型uv不正确)模型UV不正确

3D模型人物换装系统&#xff08;五 模型核批之后模型uv不正确&#xff09;模型UV不正确 介绍展示Maya导入查看uvUnity中测试分析没合批为什么没有问题总结 介绍 最近在公司里给公司做模型优化合批的时候发现了模型的uv在合批之后无法正常展示&#xff0c;这里找了很多的原因&a…

hadoop安装记录

零、版本说明 centos [rootnode1 ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core)jdk [rootnode1 ~]# java -version java version "1.8.0_311" Java(TM) SE Runtime Environment (build 1.8.0_311-b11) Java HotSpot(TM) 64-Bit Server VM (…

讲座回顾|DolphinDB 携手上海高金共探量化前沿

4月16日&#xff0c;由上海高级金融学院 MBA 量化投资俱乐部和上海交通大学量化分析协会联合举办的量化公开课如期在上海举行。DolphinDB 创始人兼 CEO 周小华博士作为演讲嘉宾受邀出席&#xff0c;针对如何利用中高频数据挖掘因子的话题&#xff0c;为大家分享了行业的前沿应用…

Nginx 代理配置

最近&#xff0c;工作中遇到需要用到 Nginx 实现正向web代理和反向web代理的需求&#xff0c;其中反向web代理需要支持发送HTTP 和 HTTPS请求 1. 正向代理 1.1. 正向代理 流程 下面以访问百度为例解释正向代理过程&#xff1a; 客户将浏览器代理地址设置为代理服务器地址和服…

入门产品经理你一定要知道的事(上)

产品&#xff08;Product&#xff09;是任何可以让人注意、获取、使用、或能够满足某种消费需求的东西。可以是实体产品、服务、人、组织、地点、思想等。 狭义上产品特指互联网产品&#xff0c;是关于软件、硬件的集合体。本期文章所说的产品是指互联网产品。 产品经理&#…

Spring Boot中JUnit 4与JUnit 5的如何共存

文章目录 前言一、先上答案二、稍微深入了解2.1 maven-surefire-plugin是什么2.2 JUnit4和JUnit5有什么区别2.2.1 不同的注解2.2.2 架构 前言 在maven项目中&#xff0c;生成单测时是否有这样的疑问&#xff1a;该选JUnit4还是JUnit5&#xff1f;在执行 mvn test 命令时有没有…