SpringMVC-接收表单数据的方式

1P214160451-1.jpg

一、get方式请求

获取请求头传递的参数,get方式提交的参数都是跟在url后面:http://localhost:21233/zbm/gl/add?year=2022&quarter=2&gradeType=0&inputNumberZz=50&inputNumberFz=10

1、用Controller方法同名形参接收

接受数据的参数名要和前台变量名一致才能收到数据如:userName不能写成username

    @RequestMapping("/login")
    public void login(String userName,String password){
        System.out.println(password);
        System.out.println(userName);

    }

2、@RequestParam 注解

  • @RequestParam 只能接收 URL 问号后跟着的参数。
  • 用map接收多个参数的话,必须要加此注解(@RequestParam Map condition),否则接收的Map参数为空。
  • 一般没必要加此注解,直接用同名形参接收即可。除非要设置默认值或者更改参数名。
    @RequestMapping("/login")
    public void login(String password, @RequestParam(value = "userName",defaultValue = "root") String username){
        System.out.println(password);
        System.out.println(username);

    }
  public Map rycy(@RequestParam Map condition){
        System.out.println(condition);
        System.out.println(condition.get("selectMineId"));
  }

3、@PathVariable 注解

只能接收 URL 路径里的参数。 通过 @PathVariable 可以将URL中占位符参数{xxx}绑定到处理器类的方法形参中@PathVariable(“xxx“)

  请求路径:http://localhost:8080/hello/show5/1/james
  @RequestMapping(value=”user/{id}/{name}”)
  public void test(@PathVariable Integer id, @PathVariable("userName") String  name){
      
  }

4、HttpServletRequest

  • get方式请求,服务器端用serveletRequest.QueryString可获取全部变量的值
  • 论前台用get还是post都可以用request.getParameter()获取单个指定变量,如果前台变量是一个checkbox复选框,后台获取到的值是一个字符串数组,因此需要使用getParameterValues方法来获取
  • getAttribute获取一个对象,getParameter()获取一个变量值
    @RequestMapping("/login")
    public void login(HttpServletRequest request){

        String queryString = request.getQueryString();
        String userName = request.getParameter("userName");
        String password = request.getParameter("password");

        System.out.println(queryString);
        System.out.println(userName);
        System.out.println(password);
    }
运行输出截图

二、post方式请求

@RequestBody注解获取请求体里的参数

(1)使用封装的 beanMapJSONObject 接收, 前端必须使用 JSON 格式的数据。
Content-Type 必须为 application/json,请求体中参数为 {"username":"18514335982","pass":"12345"}

@RequestBody User user
@RequestBody JSONObject jsonObject

(2)使用String接收
如前端参数在请求体中传的是 username=18514335982&pass=12345Content typetext/plain;charset=UTF-8
则后台接收到的 param 即为 username=18514335982&pass=12345 格式

@RequestBody String param
  • @RequestBody@RequestParam()可以同时使用,@RequestBody最多只能有一个,而@RequestParam()可以有多个。一个接收请求体参数,一个接收key-value里面的参数。
  • @RequestBody可以用HashMap接收前台数据,也可以用实体类接收。@RequestBody HashMap<String,Object> map或者@RequestBody User user
  • json对象要用 JSON.stringify(data) ,进行转换成json字符串

三、前台提交表单数据到后台进行处理

  1. get 方式提交可以直接用同名形参接收,也可以用@RequestParam 注解接收。
  2. post 方式提交表单可以直接用java bean接收,也可以用@RequestParam 注解接收。
  1. get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容