SpringMVC請求參數(shù)的使用總結(jié)
本次數(shù)據(jù)請求使用postman, postman下載地址:https://www.getpostman.com/
一、頁面跳轉(zhuǎn)
1. 頁面跳轉(zhuǎn)
@Controller
public class IndexController {
/**
* 進(jìn)入首頁
*
* @return 首頁頁面
*/
@RequestMapping("/")
public String index(){
return "/index";
}
}
2. 請求轉(zhuǎn)發(fā)
@Controller
public class IndexController {
/**
* 進(jìn)入首頁
*
* @return 首頁頁面
*/
@RequestMapping("/")
public String index(){
return "/index";
}
/**
* 訪問登錄頁面時(shí),如果已經(jīng)登錄就轉(zhuǎn)發(fā)到首頁,未登錄就進(jìn)入登錄頁面
*
* @return 登錄頁面
*/
@RequestMapping("/login")
public String forward(){
if(true){
return "forward:/index";
}
return "login";
}
}
3. 重定向
@Controller
public class IndexController {
/**
* 進(jìn)入首頁
*
* @return 首頁頁面
*/
@RequestMapping("/")
public String index(){
return "/index";
}
/**
* 訪問登錄頁面時(shí),如果已經(jīng)登錄就重定向到首頁,未登錄就進(jìn)入登錄頁面
*
* @return 登錄頁面
*/
@RequestMapping("/login")
public String redirect(){
if(true){
return "redirect:/index";
}
return "login";
}
}
二、接收表單提交參數(shù)
1. 接收簡單包裝類型
模擬用戶登錄,接收用戶名、密碼、驗(yàn)證碼參數(shù)
/**
* 提交登陸信息
*
* @param username 用戶名
* @param password 密碼
* @param captcha 驗(yàn)證碼
* @return 結(jié)果
*/
@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獲取請求參數(shù)
/**
* 提交登陸信息
*
* @return 結(jié)果
*/
@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 結(jié)果
*/
@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 結(jié)果
*/
@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.接收數(shù)組類型
/**
* 修改角色權(quán)限
*
* @param userId 用戶id
* @param roleIds 角色id
* @return 結(jié)果
*/
@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", "修改角色權(quán)限成功");
resultMap.put("userId", userId);
resultMap.put("roleIds", Arrays.toString(roleIds));
return resultMap;
}

6.接收List類型
/**
* 修改角色權(quán)限
*
* @param userId 用戶id
* @param roleIds 角色id
* @return 結(jié)果
*/
@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", "修改角色權(quán)限成功");
resultMap.put("userId", userId);
resultMap.put("roleIds", roleIds.toString());
return resultMap;
}

7.接收Set類型
/**
* 修改角色權(quán)限
*
* @param userId 用戶id
* @param roleIds 角色id
* @return 結(jié)果
*/
@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", "修改角色權(quán)限成功");
resultMap.put("userId", userId);
resultMap.put("roleIds", roleIds.toString());
return resultMap;
}

8.接收帶List參數(shù)的實(shí)體類
@Data
public class ModifyRole {
private Integer userId;
private List<String> roleIds;
}
/**
* 修改角色權(quán)限
*
* @param modifyRole 數(shù)據(jù)
* @return 結(jié)果
*/
@PostMapping("/modifyRole4")
@ResponseBody
public Map<String, Object> modifyRole4(ModifyRole modifyRole) {
Map<String, Object> resultMap = new HashMap<>(16);
resultMap.put("code", 200);
resultMap.put("msg", "修改角色權(quán)限成功");
resultMap.put("modifyRole", modifyRole.toString());
return resultMap;
}

三、接收J(rèn)SON參數(shù)
1. 接收帶List參數(shù)的實(shí)體類
@Data
public class ModifyRole {
private Integer userId;
private List<String> roleIds;
}
/**
* 修改角色權(quán)限
*
* @param modifyRole 數(shù)據(jù)
* @return 結(jié)果
*/
@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", "修改角色權(quán)限成功");
resultMap.put("modifyRole", modifyRole.toString());
return resultMap;
}

2.接收List<Bean>類型
@Data
public class SysUser {
private String username;
private String password;
}
/**
* 批量新增用戶
*
* @param sysUserList 數(shù)據(jù)集合
* @return 結(jié)果
*/
@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 數(shù)據(jù)集合
* @return 結(jié)果
*/
@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. 文件上傳
新建一個(gè)文件

/**
* 上傳文件
*
* @param multipartFile 上傳的文件
* @return 結(jié)果
*/
@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()))){
// 讀取文件數(shù)據(jù)
String collect = reader.lines().collect(Collectors.joining());
// 直接返回文件數(shù)據(jù)給前端
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);
}

到此這篇關(guān)于SpringMVC請求參數(shù) 的文章就介紹到這了,更多相關(guān)SpringMVC請求參數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot程序的打包與運(yùn)行的實(shí)現(xiàn)
本文主要介紹了SpringBoot程序的打包與運(yùn)行的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06
Java中關(guān)于控制臺讀取數(shù)字或字符串的方法
下面小編就為大家?guī)硪黄狫ava中關(guān)于控制臺讀取數(shù)字或字符串的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-10-10
mybatisPlus條件構(gòu)造器常用方法小結(jié)
這篇文章主要介紹了mybatisPlus條件構(gòu)造器常用方法,首先是.select和其他條件,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-10-10
Java如果通過jdbc操作連接oracle數(shù)據(jù)庫
這篇文章主要介紹了Java如果通過jdbc操作連接oracle數(shù)據(jù)庫,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09
MacBook Java開發(fā)環(huán)境搭建的詳細(xì)步驟(新手必備)
本文主要介紹了MacBook Java開發(fā)環(huán)境搭建,文中通過圖文示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07

