SpringMVC请求参数的使用总结

作者:寒咏哥 时间:2022-11-30 22:23:18 

本次数据请求使用postman, postman下载地址:https://www.getpostman.com/

一、页面跳转

1. 页面跳转


@Controller
public class IndexController {

/**
    * 进入首页
    *
    * @return 首页页面
    */
   @RequestMapping("/")
   public String index(){
       return "/index";
   }
}

2. 请求转发


@Controller
public class IndexController {

/**
    * 进入首页
    *
    * @return 首页页面
    */
   @RequestMapping("/")
   public String index(){
       return "/index";
   }

/**
    * 访问登录页面时,如果已经登录就转发到首页,未登录就进入登录页面
    *
    * @return 登录页面
    */
   @RequestMapping("/login")
   public String forward(){
       if(true){
           return "forward:/index";
       }
       return "login";
   }
}

3. 重定向


@Controller
public class IndexController {

/**
    * 进入首页
    *
    * @return 首页页面
    */
   @RequestMapping("/")
   public String index(){
       return "/index";
   }

/**
    * 访问登录页面时,如果已经登录就重定向到首页,未登录就进入登录页面
    *
    * @return 登录页面
    */
   @RequestMapping("/login")
   public String redirect(){
       if(true){
           return "redirect:/index";
       }
       return "login";
   }
}

二、接收表单提交参数

1. 接收简单包装类型

模拟用户登录,接收用户名、密码、验证码参数


   /**
    * 提交登陆信息
    *
    * @param username 用户名
    * @param password 密码
    * @param captcha  验证码
    * @return 结果
    */
   @PostMapping("/login1")
   @ResponseBody
   public Map<String, Object> submitLogin1(String username, String password, String captcha) {
       Map<String, Object> resultMap = new HashMap<>(16);
       resultMap.put("code", 200);
       resultMap.put("msg", "登录成功");
       resultMap.put("username", username);
       resultMap.put("password", password);
       resultMap.put("captcha", captcha);
       return resultMap;
   }

SpringMVC请求参数的使用总结

2. 通过request获取请求参数


   /**
    * 提交登陆信息
    *
    * @return 结果
    */
   @PostMapping("/login2")
   @ResponseBody
   public Map<String, Object> submitLogin2() {
       ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
       HttpServletRequest request = attributes.getRequest();
       String username = request.getParameter("username");
       String password = request.getParameter("password");
       String captcha = request.getParameter("captcha");

Map<String, Object> resultMap = new HashMap<>(16);
       resultMap.put("code", 200);
       resultMap.put("msg", "登录成功");
       resultMap.put("username", username);
       resultMap.put("password", password);
       resultMap.put("captcha", captcha);
       return resultMap;
   }

SpringMVC请求参数的使用总结

3. 接收对象类型


@Data
public class LoginUser {

private String username;

private String password;

private String code;
}

   /**
    * 提交登陆信息
    *
    * @return 结果
    */
   @PostMapping("/login3")
   @ResponseBody
   public Map<String, Object> submitLogin3(LoginUser loginUser) {
       Map<String, Object> resultMap = new HashMap<>(16);
       resultMap.put("code", 200);
       resultMap.put("msg", "登录成功");
       resultMap.put("username", loginUser.getUsername());
       resultMap.put("password", loginUser.getPassword());
       resultMap.put("captcha", loginUser.getCaptcha());
       return resultMap;
   }

SpringMVC请求参数的使用总结

4.接收Map类型


   /**
    * 提交登陆信息
    *
    * @return 结果
    */
   @PostMapping("/login4")
   @ResponseBody
   public Map<String, Object> submitLogin4(@RequestParam Map<String, Object> loginUser) {
       Map<String, Object> resultMap = new HashMap<>(16);
       resultMap.put("code", 200);
       resultMap.put("msg", "登录成功");
       resultMap.put("username", loginUser.get("username"));
       resultMap.put("password", loginUser.get("password"));
       resultMap.put("captcha", loginUser.get("captcha"));
       return resultMap;
   }

SpringMVC请求参数的使用总结

5.接收数组类型


   /**
    * 修改角色权限
    *
    * @param userId 用户id
    * @param roleIds 角色id
    * @return 结果
    */
   @PostMapping("/modifyRole1")
   @ResponseBody
   public Map<String, Object> modifyRole1(Integer userId, Integer[] roleIds) {
       Map<String, Object> resultMap = new HashMap<>(16);
       resultMap.put("code", 200);
       resultMap.put("msg", "修改角色权限成功");
       resultMap.put("userId", userId);
       resultMap.put("roleIds", Arrays.toString(roleIds));
       return resultMap;
   }

SpringMVC请求参数的使用总结

6.接收List类型


   /**
    * 修改角色权限
    *
    * @param userId 用户id
    * @param roleIds 角色id
    * @return 结果
    */
   @PostMapping("/modifyRole2")
   @ResponseBody
   public Map<String, Object> modifyRole2(Integer userId, @RequestParam("roleIds") List<Integer> roleIds) {
       Map<String, Object> resultMap = new HashMap<>(16);
       resultMap.put("code", 200);
       resultMap.put("msg", "修改角色权限成功");
       resultMap.put("userId", userId);
       resultMap.put("roleIds", roleIds.toString());
       return resultMap;
   }

SpringMVC请求参数的使用总结

7.接收Set类型


   /**
    * 修改角色权限
    *
    * @param userId 用户id
    * @param roleIds 角色id
    * @return 结果
    */
   @PostMapping("/modifyRole3")
   @ResponseBody
   public Map<String, Object> modifyRole3(Integer userId, @RequestParam("roleIds") Set<String> roleIds) {
       Map<String, Object> resultMap = new HashMap<>(16);
       resultMap.put("code", 200);
       resultMap.put("msg", "修改角色权限成功");
       resultMap.put("userId", userId);
       resultMap.put("roleIds", roleIds.toString());
       return resultMap;
   }

SpringMVC请求参数的使用总结

8.接收带List参数的实体类


@Data
public class ModifyRole {

private Integer userId;

private List<String> roleIds;
}

   /**
    * 修改角色权限
    *
    * @param modifyRole 数据
    * @return 结果
    */
   @PostMapping("/modifyRole4")
   @ResponseBody
   public Map<String, Object> modifyRole4(ModifyRole modifyRole) {
       Map<String, Object> resultMap = new HashMap<>(16);
       resultMap.put("code", 200);
       resultMap.put("msg", "修改角色权限成功");
       resultMap.put("modifyRole", modifyRole.toString());
       return resultMap;
   }

SpringMVC请求参数的使用总结

三、接收JSON参数

1. 接收带List参数的实体类


@Data
public class ModifyRole {

private Integer userId;

private List<String> roleIds;
}

   /**
    * 修改角色权限
    *
    * @param modifyRole 数据
    * @return 结果
    */
   @PostMapping("/modifyRole5")
   @ResponseBody
   public Map<String, Object> modifyRole5(@RequestBody ModifyRole modifyRole) {
       Map<String, Object> resultMap = new HashMap<>(16);
       resultMap.put("code", 200);
       resultMap.put("msg", "修改角色权限成功");
       resultMap.put("modifyRole", modifyRole.toString());
       return resultMap;
   }

SpringMVC请求参数的使用总结

2.接收List<Bean>类型


@Data
public class SysUser {

private String username;

private String password;
}

   /**
    * 批量新增用户
    *
    * @param sysUserList 数据集合
    * @return 结果
    */
   @PostMapping("/batchInsert")
   @ResponseBody
   public Map<String, Object> batchInsert(@RequestBody List<SysUser> sysUserList) {
       Map<String, Object> resultMap = new HashMap<>(16);
       resultMap.put("code", 200);
       resultMap.put("msg", "批量新增用户成功");
       resultMap.put("modifyRoleList", sysUserList.toString());
       return resultMap;
   }

SpringMVC请求参数的使用总结

3.接收Set<Bean>类型


   /**
    * 批量新增用户
    *
    * @param sysUserSet 数据集合
    * @return 结果
    */
   @PostMapping("/batchInsert2")
   @ResponseBody
   public Map<String, Object> batchInsert2(@RequestBody Set<SysUser> sysUserSet) {
       Map<String, Object> resultMap = new HashMap<>(16);
       resultMap.put("code", 200);
       resultMap.put("msg", "批量新增用户成功");
       resultMap.put("modifyRoleSet", sysUserSet.toString());
       return resultMap;
   }

SpringMVC请求参数的使用总结

四、文件上传、下载

1. 文件上传

新建一个文件

SpringMVC请求参数的使用总结


   /**
    * 上传文件
    *
    * @param multipartFile 上传的文件
    * @return 结果
    */
   @PostMapping("/upload")
   @ResponseBody
   public void upload(MultipartFile multipartFile) throws IOException {
       ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
       // 获取文件流
       InputStream inputStream = multipartFile.getInputStream();
       try (BufferedReader reader =  new BufferedReader(new InputStreamReader(inputStream, UTF_8.name()))){
           // 读取文件数据
           String collect = reader.lines().collect(Collectors.joining());
           // 直接返回文件数据给前端
           attributes.getResponse().getWriter().write(collect);
       } catch (Exception e){
           e.printStackTrace();
       }
   }

SpringMVC请求参数的使用总结

2. 文件下载


   /**
    * 文件下载
    */
   @GetMapping("/download")
   public ResponseEntity<byte[]> download() throws IOException {
       File file = ResourceUtils.getFile("classpath:application.yml");

byte[] body;
       try (InputStream is = new FileInputStream(file)){
           body = new byte[is.available()];
           is.read(body);
       }

HttpHeaders headers = new HttpHeaders();
       headers.add("Content-Disposition", "attchement;filename=" + file.getName());
       return new ResponseEntity<>(body, headers, HttpStatus.OK);
   }

SpringMVC请求参数的使用总结

来源:https://blog.csdn.net/han12398766/article/details/117389740

标签:SpringMVC,请求参数
0
投稿

猜你喜欢

  • Android中bindService基本使用方法概述

    2023-08-05 19:18:56
  • 基于Java数组实现循环队列的两种方法小结

    2023-06-30 16:09:01
  • java Spring MVC4环境搭建实例详解(步骤)

    2021-11-17 05:08:08
  • ThreadLocal工作原理及用法案例

    2021-11-13 04:22:39
  • 深入学习Java编程中的字符串的进阶使用

    2023-11-11 12:54:20
  • 基于Java8 函数式接口理解及测试

    2021-06-19 21:54:35
  • Android 文件数据存储实例详解

    2023-07-28 17:08:03
  • C# 输出字符串到文本文件中的实现代码

    2022-08-25 11:18:13
  • 详解SpringBoot项目整合Vue做一个完整的用户注册功能

    2022-02-13 21:46:35
  • Java分页工具类及其使用(示例分享)

    2021-12-13 10:25:12
  • C#实现截图工具小项目

    2023-10-02 08:20:03
  • java判断list不为空的实现,和限制条数不要在一起写

    2022-01-24 13:14:38
  • Java抽象类与接口区别详解

    2021-06-19 19:22:37
  • Spring Data JPA 之 JpaRepository的使用

    2023-11-24 21:23:40
  • 详解Spring Bean 之间的特殊关系

    2022-10-25 21:12:17
  • 三道java新手入门面试题,通往自由的道路--多线程

    2023-05-24 23:12:51
  • Spring如何处理注解的深入理解

    2023-09-09 14:35:49
  • Java字符判断的小例子

    2023-08-26 17:29:49
  • 如何处理maven仓库中后缀LastUpdated文件

    2022-01-21 22:15:44
  • Spring的IOC控制反转详解

    2023-08-24 02:50:50
  • asp之家 软件编程 m.aspxhome.com