zoukankan      html  css  js  c++  java
  • restful的put请求(坑),和HttpServletRequest做参数的作用

    /**
    * 如果直接发送ajax=PUT形式的请求
    * 封装的数据
    * Employee
    * [empId=1014, empName=null, gender=null, email=null, dId=null]
    *
    * 问题:
    * 请求体中有数据;
    * 但是Employee对象封装不上;
    * update tbl_emp where emp_id = 1014;
    *
    * 原因:
    * Tomcat:
    * 1、将请求体中的数据,封装一个map。
    * 2、request.getParameter("empName")就会从这个map中取值。
    * 3、SpringMVC封装POJO对象的时候。
    * 会把POJO中每个属性的值,request.getParamter("email");
    * AJAX发送PUT请求引发的血案:
    * PUT请求,请求体中的数据,request.getParameter("empName")拿不到
    * Tomcat一看是PUT不会封装请求体中的数据为map,只有POST形式的请求才封装请求体为map
    * org.apache.catalina.connector.Request--parseParameters() (3111);
    *
    * protected String parseBodyMethods = "POST";
    * if( !getConnector().isParseBodyMethod(getMethod()) ) {
    success = true;
    return;
    }
    *
    *
    * 解决方案;
    * 我们要能支持直接发送PUT之类的请求还要封装请求体中的数据
    * 1、配置上HttpPutFormContentFilter;
    * 2、他的作用;将请求体中的数据解析包装成一个map。
    * 3、request被重新包装,request.getParameter()被重写,就会从自己封装的map中取数据
    * 员工更新方法
    * @param employee
    * @return
    */
    @ResponseBody
    @RequestMapping(value="/emp/{empId}",method=RequestMethod.PUT)
    public Msg saveEmp(Employee employee,HttpServletRequest request){
    System.out.println("请求体中的值:"+request.getParameter("gender"));
    System.out.println("将要更新的员工数据:"+employee);
    employeeService.updateEmp(employee);
    return Msg.success() ;
    }

    在参数中加了Employee,request会自动把请求中的数据封装到employee中

  • 相关阅读:
    Selenium 验证
    Flask 拓展(flask-admin)
    读取 xlsx中数据
    OSS 上传内容
    Tornado 端口绑定方式
    Tornado 基础
    Flask 懒人版分页(未完善)
    kafka事务原理、事务API和使用场景(转)
    jvm几种垃圾回收机制小结
    理解Semaphore及其用法详解(转)  -实现一个文件允许的并发访问数
  • 原文地址:https://www.cnblogs.com/w123w/p/11695641.html
Copyright © 2011-2022 走看看