首页 > 其他分享 >spring boot——请求与参数校验——spring-mvc——通过形参获取请求参数

spring boot——请求与参数校验——spring-mvc——通过形参获取请求参数

时间:2023-01-15 14:24:14浏览次数:49  
标签:请求 形参 spring request String 参数 name

我们可以在 Controller 的控制器方法中设置与请求参数同名的形参,以获取请求中携带的参数。当浏览器发送的请求匹配到这个控制器方法时,Spring MVC 会自动将请求参数赋值给相应的方法形参。

 

通过控制器方法的形参获取请求参数时,我们需要注意以下几点。

1. 必须保证参数名一致

我们必须保证控制器方法的形参名称与请求中携带参数的名称完全一致(区分大小写),否则控制器方法接收到的请求参数值会是 null。

如果由于一些特殊原因,实在无法保证参数名严格一致,我们还可以通过 @RequestParam 注解来解决。

2. 无视数据类型

这种方式是无视参数的数据类型的,我们可以在控制器方法中使用 String 字符串类型的形参接收所有的请求参数,也可以根据实际情况在控制器方法中使用对应数据类型的参数来接收请求参数,而无须自行进行数据类型转换。

 

 

3. 不适用于请求参数过多的请求

当请求中携带的参数过多时,如果我们还使用这种方式来获取请求参数,那就需要我们在控制器方法中设置大量的形参,这会让使代码变得十分臃肿,不易维护。

4. 同名请求参数的处理方式

当请求中包含多个同名的请求参数时,我们可以通过以下 2 种类型的形参来获取请求参数。

 

 

 

 

 

 

package org.example.controller.requestparam;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;


@RestController
public class ForParamController
{

    // http://localhost:8080/getRequestParam?name=C语言中文网&url=c.biancheng.net

    /**
     * 通过 HttpServletRequest 获取请求参数
     * @param request
     * @return
     */
    @RequestMapping("/getRequestParam")
    public String requestParam(HttpServletRequest request) {

        String name = request.getParameter("name");
        String url = request.getParameter("url");

        System.out.println("name:" + name);
        System.out.println("url:" + url);


        return "cheng_gong";
    }


    // http://localhost:8080/getRequestParam?firstName=C语言中文网&lastName=c.biancheng.net
    /**
     * 通过 HttpServletRequest 获取请求参数
     * @param request
     * @return
     */
    @RequestMapping(value = "/getRequestParam2")
    public String test2(HttpServletRequest request) {
        String a = request.getParameter("firstName");
        String b = request.getParameter("lastName");
        return a + b;
    }




    //http://localhost:8080/getRequestParam3?name=tom&language=java

    @RequestMapping("/getRequestParam3")
    public String test3(String name, String language) {
        System.out.println("a:" + name);
        System.out.println("b:" + language);
        return "success";
    }



    //  http://localhost:8080/getRequestParam4?name=tom&language=2

    @RequestMapping("/getRequestParam4")
    public String test4(String name, Integer language) {
        System.out.println("a:" + name);
        System.out.println("b:" + language);
        return "success";
    }













}

 

 

 

 

 

 

 

 

标签:请求,形参,spring,request,String,参数,name
From: https://www.cnblogs.com/xiaobaibailongma/p/17053414.html

相关文章

  • struts2+hibernate3+spring3项目快速开发(图文)之1:新建项目+建表+建立数据连接
    1.所需软件项目开发环境:MyEclipse8.5+MySQL+Struts2.2.2.1安装包,最新Sutrs2安装包及文档可以上官网​​http://struts.apache.org/2.x/index.html​​​下载2.建立一个项目......
  • Python 中的函数参数
    在通常情况下,定义函数时,函数的参数个数是预先确定的。例如,编写计算两个数相加的函数add(a,b),代码如下:defadd(a,b):returna+bsum=add(1,2)在第1行,定义了函数......
  • springboot2.3.x版本发生异常时,响应的message和exception为空问题
    原因:因为boot2.3.x版本可能考虑信息安全问题,把以下两个值默认为server:error:include-message:neverinclude-exception:false发生异常是返回{"ti......
  • springmvc拦截器及源码分析
    前言springmvc拦截器是我们项目开发中用到的一个功能,常常用于对Handler进行预处理和后处理。本案例来演示一个较简单的springmvc拦截器的使用,并通过分析源码来探究拦截器的......
  • PowerShell 中运行 maven 参数无法识别
    下面的命令在命令行中执行没有问题:mvncleaninstall-Dgpg.skip但,如果你默认启动是PowerShell的话,上面的命令将会提示错误为:  实际的原因是提供的参数没有被P......
  • axios 进行同步请求(async+await+promise)
    axios进行同步请求(async+await+promise)遇到的问题介绍将axios的异步请求改为同步请求想到了async 和await、Promiseaxios介绍Axios 是一个基于 promise 的HT......
  • 5.spring配置说明
    1.bean id:bean的唯一标识符 class:bean对象所对应的全限定名:包名+类型 name:也是别名,可以同时起多个别名2.alias name:原来的名字 alias:设置的别名3.imports im......
  • nginx内置参数
    $args#请求中的参数值$query_string#同$args$arg_NAME#GET请求中NAME的值$is_args#如果请求中有......
  • 【vue-router】动态组件中通过路由参数来多次调用同一个页面中遇到的坑
    vue2router的几个坑总结需求:vue2动态路由中不同菜单目录引用同一个组件页面,通过给接口传入不同的参数来区分页面。vue通过切换路由如果仅仅query或者params参数发生......
  • python简单处理http请求
    代码块response=requests.get(url=url,headers=headers,params=params)html=etree.HTML(response.text)pythonrequest库requests.get()意为获取网页,对应HTTP中......