IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Spring MVC【参数的获取与数据返回】 -> 正文阅读

[Java知识库]Spring MVC【参数的获取与数据返回】


上一篇文章介绍SpringMVC的概念,SpringMVC项目的创建,这一篇文章将介绍如何使用SpringMVC实现前端参数的获取与后端参数的返回等内容

🍎一. 获取参数

🍒1.1 获取单个参数

我们先创建一个对象来实现接下来的获取参数,我们来创建一个学生的信息
这里我们通过@Data注解来进行,来实现get,set,toString方法

/@Data注解包含 get()set()toString方法,如果没有@Data注解的话这个对象就必须实现这三个方法
@Data
@Controller
//伪代码
public class UserInfo {
    private int id;
    private String username;
    private String password;
    private int age;
}

我们创建好对象之后,就可以通过对象的set方法来进行获取参数,根据获取后的参加进行返回给服务器就可以看到获取参数的内容了

 @RequestMapping("/getuserbyid")
    //最好时包装类型数据Integer Character这种,不会在没有输入null值时报错,只会返回0
    public UserInfo getUserById(Integer id){
        //不查数据库,伪代码返回数据对象
        UserInfo userInfo = new UserInfo();
        userInfo.setId(id);
        //userInfo.setId(id);
        userInfo.setUsername("张三");
        userInfo.setPassword("123");
        userInfo.setAge(18);
        return userInfo;
    }

我们来通过postman来进行参数获取与返回
在这里插入图片描述

🍒1.2 获取多个参数

这个与上面同理,我们只需要改需要获取参数的内容与个数即可

  @RequestMapping("/login")
    public String getUser(String username,String password){
        
        return "用户名:" + username +" " +  "密码:" + password ;
    }

参数重命名:
当我们与前端约定参数的value值时认为不适合自己代码的编写时,我们就可以将前端设置好的代码进行自定义,但是还是以前端约定好的代码进行交互的,我们只需要在方法获取参数的内容里

使用@RequestParam(value = "name",required = false)即可设置:
value = "name"这个是前端与后端约定好交互的参数名称,我们就可以通过在后面定义一个参数名既可以了
required = false是因为如果前端没有传递此参数就会报错所有我们可以将required 设置为false就不会报错了

我们从这里既就可以看到应该输入的数name,但是通过value = “name”,就可以将name修改为username

  @RequestMapping("/login")
    public String getUser(@RequestParam(value = "name",required = false) String username,String password){
       
        return "用户名:" + username +" " +  "密码:" + password ;
    }

在这里插入图片描述

🍒1.3 获取多个参数

@RequestMapping("/reg")
    public String reg(@RequestBody UserInfo userInfo){
        //不查数据库,伪代码返回数据对象
        return "用户信息:" + userInfo ;
    }

在这里插入图片描述
JSON格式发送和接收数据(服务器需要使用 @RequestBody注解才能接收和发送 JSON的数据)

 @RequestMapping("/reg")
    //@RequestBody 可以获取到输入的数据但是输入的数据名要对应对象名的大小写和数据格式(json)
    public String reg(@RequestBody UserInfo userInfo){
        //不查数据库,伪代码返回数据对象
        return "用户信息:" + userInfo ;
    }

在这里插入图片描述

🍒1.4 获取URL中参数 (@PathVariable)

在这里插入图片描述

@RequestMapping("/login2/{username}/{password}")
    public String getUser2(@PathVariable String username,@PathVariable String password) {
        //不查数据库,伪代码返回数据对象
        return "用户名:" + username +" " + "密码:" + password;
    }

在这里插入图片描述

🍎二. 上传文件 (@RequestPart)

🍒2.1 postman模拟上传文件

 @RequestMapping("/upimg")
    public boolean upImg(Integer uid, @RequestPart("img")MultipartFile file){
        //设置一个能判图片是否上传成功
        boolean result = false;
        //保存图片到本地目录(服务器)
        try {
            //D\Data\img.png 这是设置了保存文件地址和文件名
            file.transferTo(new File("D:\\Data\\img.png"));
            result = true;
        } catch (IOException e) {
            // 引用 @Slf4j进行日志打印
            log.error("上传图片失败" + e.getMessage());
            // e.printStackTrace();
        }
        return result ;
    }

在这里插入图片描述

🍒2.2 将文件上传到某个目录里

我们在Windos 和 Linux系统上传的文件所保存的地址是不能一样的所有我们需要通过配置文件来进行开发和上线时进行分割,所有我们需要在创建一个application,yml配置文件 分别设置储存位置application-dev.yml(Windows),application-prod.yml(LInux)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
代码示例:
在这里插入图片描述

 @RequestMapping("/upimg2")
    public boolean upImg2(Integer uid, @RequestPart("img")MultipartFile file){
        //1.目录 = imgpath

        //2.图片名称(图片名称不能重复)[时间戳(高并发易产生BUG)/UUID(优选)]
        // UUID是全局唯一ID 所有我们一般在高并发会选择UUID进行唯一标志

        //3.获取原上传图片的格式(png,jpg)
        //获取文件名
        String filename = file.getOriginalFilename();
        //获取文件名 .后面的格式名(png,jpg)
        filename = filename.substring(filename.lastIndexOf("."));
        filename = UUID.randomUUID().toString() + filename;

        //设置一个能判图片是否上传成功
        boolean result = false;
        //保存图片到本地目录(服务器)
        try {
            //D\Data\img.png 这是设置了保存文件地址和文件名
            file.transferTo(new File(imgpath + filename));
            result = true;
        } catch (IOException e) {
            // 引用 @Slf4j进行日志打印
            log.error("上传图片失败" + e.getMessage());
           //   e.printStackTrace();
        }
        return result ;
    }

我们就可以看到我们上传的文件照片,并且名字也是和我们在上传保存在手机或磁盘中的文件名很相似,ID名称生成就是这样实现的
在这里插入图片描述

🍎三. Cookie/Session/header的获取

🍒3.1 Cookie获取

获取 Request 和 Response 对象

  //获取 Cookie (Servlet 或者 Spring MVC)
    @RequestMapping("/cookie")
    public void getCookie(HttpServletRequest request) {
       Cookie[] cookies = request.getCookies();
        for (Cookie item : cookies) {
            log.info("Cookie Name :" + item.getName() + "Cookie Vlaue :" + item.getValue());
        }
    }
   //使用CookieValue
    @RequestMapping("/cookie2")
    public String getCookie2(@CookieValue("bite") String cookie) {
        return "Cookie Value" + cookie;
    }

🍒3.2 header获取

传统获取 HttpSelectRequest

/获取 Header (Servlet 或者 Spring MVC)
    @RequestMapping("/gettua")
    //获取请求头UA
    public String gethead(HttpServletRequest request){
        return  "header:" +request.getHeader("User-Agent");
    }

简洁获取 Header—@RequestHeader

  @RequestMapping("/gettua2")
    //获取请求头U A
    public String gethead2(@RequestHeader("User-Agent") String useragent){
        return  "header:" +useragent;
    }

🍒3.3 Session获取

Session 存储和 Servlet 类似,是使? HttpServletRequest 中获取的,如下代码所示:

  //存储和获取 Session

    //(存储 Servlet 和 Spring MVC 是一样的)
    @RequestMapping("/setsession")
    public boolean setSession(HttpServletRequest request) {
        boolean result = false;
        // 1. 得到 HttpSession
        HttpSession session = request.getSession(true);//如果 = ture的话就代表没有会话,那么就会自动创建会话

        // 2. 使用 setAtt 设置值
        session.setAttribute("userinfo", "userinfo");
        result = true;
        return result;
    }
// 1. 获取Session(Servlet 模式):
    @RequestMapping("/getsession")
      public String gerSession(HttpServletRequest request){
        String result = null;
        // 1. 先得到HttpSession 对象
        HttpSession session = request.getSession(false);
        if (session != null && session.getAttribute("userinfo") != null){
            result  = (String) session.getAttribute("userinfo");
        }
        // 2. getAtt 得到 SEssion 信息
        return result;
    }
// 2. 获取Session(Spring MVC 模式 @SessionAttribute):
    @RequestMapping("/getsession2")
    public String getSession2(@SessionAttribute(value = "userinfo",required = false) String userinfo){
        return "会话" + userinfo;
    }
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-12-25 10:52:39  更:2022-12-25 10:57:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/20 2:18:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码