Spring: How to get parameters from POST body?

前端 未结 6 909
庸人自扰
庸人自扰 2020-12-29 06:00

Web-service using spring in which I have to get the params from the body of my post request? The content of the body is like:-

source=”mysource”

&json=
         


        
相关标签:
6条回答
  • 2020-12-29 06:38

    In class do like this

    @RequestMapping(value = "/saveData", method = RequestMethod.POST)
     @ResponseBody
        public ResponseEntity<Boolean> saveData(HttpServletResponse response,Bean beanName) throws MyException {
            return new ResponseEntity<Boolean>(uiRequestProcessor.saveData(a),HttpStatus.OK);
    
    }
    

    In page do like this:

    <form enctype="multipart/form-data" action="<%=request.getContextPath()%>/saveData" method="post" name="saveForm" id="saveForm">
    <input type="text" value="${beanName.userName }" id="username" name="userName" />
    
    </from>
    
    0 讨论(0)
  • 2020-12-29 06:40

    You can get param from request.

    @ResponseBody
    public ResponseEntity<Boolean> saveData(HttpServletRequest request,
                HttpServletResponse response, Model model){
       String jsonString = request.getParameter("json");
    }
    
    0 讨论(0)
  • 2020-12-29 06:42

    You can try using @RequestBodyParam

    @RequestMapping(value = "/saveData", headers="Content-Type=application/json", method = RequestMethod.POST)
    @ResponseBody
    public ResponseEntity<Boolean> saveData(@RequestBodyParam String source,@RequestBodyParam JsonDto json) throws MyException {
        ...
    }
    

    https://github.com/LambdaExpression/RequestBodyParam

    0 讨论(0)
  • 2020-12-29 06:55

    You will need these imports...

    import javax.servlet.*;
    import javax.servlet.http.*;
    

    And, if you're using Maven, you'll also need this in the dependencies block of the pom.xml file in your project's base directory.

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.0.1</version>
        <scope>provided</scope>
    </dependency>
    

    Then the above-listed fix by Jason will work:

    @ResponseBody
        public ResponseEntity<Boolean> saveData(HttpServletRequest request,
            HttpServletResponse response, Model model){
            String jsonString = request.getParameter("json");
        }
    
    0 讨论(0)
  • 2020-12-29 06:58

    You can bind the json to a POJO using MappingJacksonHttpMessageConverter . Thus your controller signature can read :-

      public ResponseEntity<Boolean> saveData(@RequestBody RequestDTO req) 
    

    Where RequestDTO needs to be a bean appropriately annotated to work with jackson serializing/deserializing. Your *-servlet.xml file should have the Jackson message converter registered in RequestMappingHandler as follows :-

      <list >
        <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/>
    
      </list>
    </property>
    </bean>
    
    0 讨论(0)
  • 2020-12-29 06:59

    You can get entire post body into a POJO. Following is something similar

    @RequestMapping(
        value = { "/api/pojo/edit" }, 
        method = RequestMethod.POST, 
        produces = "application/json", 
        consumes = ["application/json"])
    @ResponseBody
    public Boolean editWinner( @RequestBody Pojo pojo) { 
    

    Where each field in Pojo (Including getter/setters) should match the Json request object that the controller receives..

    0 讨论(0)
提交回复
热议问题