SpringMVC请求参数的使用总结
作者:寒咏哥 发布时间:2022-11-30 22:23:18
标签:SpringMVC,请求参数
本次数据请求使用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;
}
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;
}
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;
}
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;
}
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;
}
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;
}
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;
}
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;
}
三、接收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;
}
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;
}
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;
}
四、文件上传、下载
1. 文件上传
新建一个文件
/**
* 上传文件
*
* @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();
}
}
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);
}
来源:https://blog.csdn.net/han12398766/article/details/117389740


猜你喜欢
- android中提供了4中动画: AlphaAnimation 透明度动画效果 ScaleAnimation 缩放动画效果 Translat
- java url中如何传递数组,springMVC框架controller类如何接收数组参数?下面介绍一下URL中传递数组参数方法:dd.d
- 场景yitter-idgenerator 是基于雪花算法进行改造的分布式ID自增算法,集成时需要为每个服务设置唯一的机器号,才能保证生成的I
- 先来简单说一下本文所要实现的功能:用户在浏览网页的时候,长按某一区域,识别如果是图片,则弹出弹框,出现保存图片的功能。同时识别图片是否是二维
- 整理文档,java 动态增加定时任务示例,直接上代码。import org.apache.tools.ant.util.DateUtils;
- C#字符集编码的使用ASCII:西欧字符集GB2312:国家简体中文字符集,兼容ASCII。BIG5:统一繁体字编码GBK:它是GB2312
- dynamic是FrameWork4.0的新特性。dynamic的出现让C#具有了弱语言类型的特性。编译器在编译的时候不再对类型进行检查,编
- mybatis-generator生成文件覆盖在Idea中使用Mybatis-generator plugin时遇到的问题,我的mybati
- 目录一、 全局JDK设置(默认配置)二、主题设置三、字体大小设置四、字符集和配置文件编码格式设置五、自动导入设置六、自动忽视大小写设置七、关
- 1 什么是cookie浏览器与WEB服务器之间是使用HTTP协议进行通信的,当某个用户发出页面请求时,WEB服务器只是简单的进行响应,然后就
- 在我们编程过程中如果需要执行一些简单的定时任务,无须做复杂的控制,我们可以考虑使用JDK中的Timer定时任务来实现。下面LZ就其原理、实例
- 二分查找又称折半查找,它是一种效率较高的查找方法。折半查找的算法思想是将数列按有序化(递增或递减)排列,查找过程中采用跳跃式方式查找,即先以
- 接上文Spring Cloud下基于OAUTH2认证授权的实现,我们将基于Spring Cloud实现OAUTH2的注销功能。1 增加自定义
- 基本思想归并排序采取分治的思想进行排序,借用一张图片说明一下将n个元素从中间切开,分成两部分。(左边可能比右边多1个数) 将步骤1分成的两部
- 本文实例讲述了基于WebClient实现Http协议的Post与Get对网站进行模拟登陆和浏览的方法。分享给大家供大家参考。具体分析如下:一
- 1. 前言Compose 具有超强的兼容性,兼容现有的所有代码,Compose 能够与现有 View 体系并存,可实现渐进式替换。这就很有意
- 网上看了很多篇文章关于如何配置mybatis的logback日志的,复杂的简单的都有,但是有用的没几个,耽误了很多时间。通过对logback
- Java的NIO中的管道,就类似于实际中的管道,有两端,一段作为输入,一段作为输出。也就是说,在创建了一个管道后,既可以对管道进行写,也可以
- 本文实例讲述了java取两个字符串的最大交集的实现方法,分享给大家供大家参考。具体实现方法如下:package com.itheima.ne
- 本文实例为大家解析了Zxing生成二维码的经典案例,供大家参考,具体内容如下1、首先呢,先编译 compile ‘com.google.zx