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);
    }

到此这篇关于SpringMVC请求参数 的文章就介绍到这了,更多相关SpringMVC请求参数内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 快速解决SpringMVC @RequestBody 用map接收请求参数的问题

    一:遇到个跨域调用,因为传个我的参数不定,所以需要通过map来接收参数并进行签名验证等操作 理所当然的写出了下面的代码,但是发现map里并没有获取到传来的key-value值 @RequestMapping(value = "/callback", produces = "text/html;charset=UTF-8") @ResponseBody public String callback(@RequestBody Map<String, String&

  • 学习SpringMVC——如何获取请求参数详解

    @RequestParam,你一定见过:@PathVariable,你肯定也知道:@QueryParam,你怎么会不晓得?!还有你熟悉的他(@CookieValue)!她(@ModelAndView)!它(@ModelAttribute)!没错,仅注解这块,spring mvc就为你打开了五彩斑斓的世界.来来来,不要兴(mi)奋(hu),坐下来,我们好好聊聊这么些个注解兄弟们~~~(wait, 都没有听过? 好,来,你坐前排,就你!)  一.spring mvc如何匹配请求路径--"请求路径哪家

  • Springmvc请求参数类型转换器及原生api代码实例

    一.springmvc的xml配置文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.spr

  • 详解SpringMVC——接收请求参数和页面传参

    spring接收请求参数: 1,使用HttpServletRequest获取 @RequestMapping("/login.do") public String login(HttpServletRequest request){ String name = request.getParameter("name") String pass = request.getParameter("pass") } 2,Spring会自动将表单参数注入到方

  • SpringMvc自动装箱及GET请求参数原理解析

    在我的概念里边,GET请求需要加上注解@RequestParam,然后它的参数类型只能是 基本数据类型 或者 基本数据类型的包装类,比如:@RequestParam String name(默认是必传的),也可以不加@RequestParam 注解,其实就相当于@RequestParam(required = false) 但是参数类型竟然是自定义对象,对象类里有不同的参数和get/set方法,而且没有使用@RequestParam 注解,那么同样也能实现GET请求 比如一个请求方法是:publ

  • SpringMVC请求参数的使用总结

    本次数据请求使用postman, postman下载地址:https://www.getpostman.com/ 一.页面跳转 1. 页面跳转 @Controller public class IndexController { /** * 进入首页 * * @return 首页页面 */ @RequestMapping("/") public String index(){ return "/index"; } } 2. 请求转发 @Controller publ

  • SpringMvc接受请求参数的几种情况演示

    说明: 通常get请求获取的参数是在url后面,而post请求获取的是请求体当中的参数.因此两者在请求方式上会有所不同. 1.直接将接受的参数写在controller对应方法的形参当中(适用于get提交方式) /** * 1.直接把表单的参数写在Controller相应的方法的形参中 * * @param username * @param password * @return */ @GetMapping("/addUser1") public String addUser1(Str

  • SpringMVC中请求参数的获取方式

    目录 SpringMVC请求参数获取方式 一.通过 ServletAPI 获取 二.通过控制器方法的形参获取 处理多个同名的请求参数 三.通过 @RequestParam 注解 四.@RequestHeader 注解 五.@CookieValue 注解 六.通过 POJO 获取请求参数 七.解决获取请求参数的乱码问题 SpringMVC请求参数获取方式 一.通过 ServletAPI 获取 可以使用原生 Servlet 获取请求参数,将 HttpServletRequest 作为控制器方法的形参

  • Spring MVC请求参数接收的全面总结教程

    前提 在日常使用SpringMVC进行开发的时候,有可能遇到前端各种类型的请求参数,这里做一次相对全面的总结.SpringMVC中处理控制器参数的接口是HandlerMethodArgumentResolver,此接口有众多子类,分别处理不同(注解类型)的参数,下面只列举几个子类: RequestParamMethodArgumentResolver:解析处理使用了@RequestParam注解的参数.MultipartFile类型参数和Simple类型(如long.int)参数. Reques

  • Spring MVC请求参数的深入解析

    请求参数解析 客户端请求在handlerMapping中找到对应handler后,将会继续执行DispatchServlet的doPatch()方法. 首先是找到handler对应的适配器. HandlerAdapter ha = getHandlerAdapter(mappedHandler.getHandler()); 进入到getHandlerAdapter(mappedHandler.getHandler())方法中 protected HandlerAdapter getHandler

  • SpringMVC解析post请求参数详解

    目录 SpringMVC 一,概述 二.原理: 1.创建form表单 css代码 2.准备Student类 3.创建启动类 4,创建数据库,表 使用JDBC把得到的数据入库 5.创建StudentController类 6.测试 总结 SpringMVC 一,概述 作用是接受服务器请求并做出响应,是spring的后续产品,使用注解@RestController和@RequestMapping MVC设计模式: M是model模型,用来封装数据 V是view视图,用来展示数据 C是control控

随机推荐