• SpringMVC传参注解@RequestParam,@RequestBody,@ResponseBody,@ModelAttribute


    参考文档:https://blog.csdn.net/walkerjong/article/details/7946109

    https://www.cnblogs.com/daimajun/p/7152970.html

    *)@RequestParam

    处理的参数类型:

    ① 常用来处理简单类型的绑定,通过Request.getParameter() 获取的String可直接转换为简单类型的情况( String--> 简单类型的转换操作由ConversionService配置的转换器来完成);因为使用request.getParameter()方式获取参数,所以可以处理get 方式中queryString的值,也可以处理post方式中 body data的值;

    ②用来处理Content-Type: 为 application/x-www-form-urlencoded编码的内容,提交方式GET、POST;

    Content-Type为'application/x-www-form-urlencoded;' 的含义:最普通的表单提交(get或者post提交都行),非文件上传设置的contentType、非json、非xml 提交时,就是这种content-Type。

    content-Type在浏览器的console控制台中,点击network,找到要看的请求,点击这个请求会打开请求的详情,可以看到:

    后台的参数接收方式:

    1 @RequestMapping(value="/saveListParam",method={RequestMethod.POST})
    2 public String saveListParam(@RequestParam List<MedicineVo> medVoList) {
    3     System.out.println("------------------------------into saveListParam");
    4     return "welcome";
    5 }

    ##)当遇到报错:

    报错原因:Content type为'application/x-www-form-urlencoded;' 应该使用@RequestParam接收参数。代码里使用了@RequestBody,所以报错。

    *)@RequestBody

    处理的参数类型:

    ①该注解常用来处理Content-Type: 不是application/x-www-form-urlencoded编码的内容,例如application/json, application/xml等

    ②它是通过使用HandlerAdapter 配置的HttpMessageConverters来解析post data body,然后绑定到相应的bean上的。

      因为配置有FormHttpMessageConverter,所以也可以用来处理 application/x-www-form-urlencoded的内容,处理完的结果放在一个MultiValueMap<String, String>里,这种情况在某些特殊需求下使用,详情查看FormHttpMessageConverter api;


    也就是说,@RequestBody接收json、xml等,非常规表单的参数。

     *) @ResponseBody

     表示:方法返回的结果是Ajax异步请求的结果,比如json。页面不会跳转,而是返回Ajax的data结果。

    *)@ModelAttribute

  • 相关阅读:
    PHP防盗链的基本思想&&防盗链的设置方法
    PHP程序员遇到职业问题时,是离职?还是坚持?
    如何学习Linux性能优化?
    PHP到底有多牛?你所知道的网站都在用它
    Linux 与 Unix 到底有什么不同?区别在哪?
    用PHP打造一个高性能好用的网站
    七夕-心形表白-简单css代码
    css雪碧图-css精灵图
    jquery-时间轴滑动
    js-进度条-动画
  • 原文地址:https://www.cnblogs.com/mySummer/p/11076019.html
Copyright © 2020-2023  润新知