Spring:如何从POST主体获取参数?
使用spring的网络服务,我必须从我的post请求的主体中获取参数? 身体的内容如下: –
source=”mysource” &json= { "items": [ { "username": "test1", "allowed": true }, { "username": "test2", "allowed": false } ] }
网络服务方法如下: –
@RequestMapping(value = "/saveData", headers="Content-Type=application/json", method = RequestMethod.POST) @ResponseBody public ResponseEntity saveData(@RequestBody String a) throws MyException { return new ResponseEntity(uiRequestProcessor.saveData(a),HttpStatus.OK); }
请让我知道如何从身体获取参数? 我可以把整个身体放在我的绳子里,但我认为这不是一个有效的方法。 请告诉我如何进一步处理。
您可以根据要求获得参数。
@ResponseBody public ResponseEntity saveData(HttpServletRequest request, HttpServletResponse response, Model model){ String jsonString = request.getParameter("json"); }
您可以使用MappingJacksonHttpMessageConverter
将json绑定到POJO。 因此您的控制器签名可以是: –
public ResponseEntity saveData(@RequestBody RequestDTO req)
RequestDTO需要是一个适当注释的bean,以便与jackson序列化/反序列化一起使用。 您的* -servlet.xml文件应该在RequestMappingHandler中注册Jackson消息转换器,如下所示: –
您可以将整个post正文放入POJO中。 以下是类似的东西
@RequestMapping(value = { "/api/pojo/edit" }, method = RequestMethod.POST, produces = "application/json", consumes = "application/json") @ResponseBody public Boolean editWinner( @RequestBody Pojo pojo) {
Pojo中的每个字段(包括getter / setter)应该与控制器接收的Json请求对象匹配。
在课堂上这样做
@RequestMapping(value = "/saveData", method = RequestMethod.POST) @ResponseBody public ResponseEntity saveData(HttpServletResponse response,Bean beanName) throws MyException { return new ResponseEntity (uiRequestProcessor.saveData(a),HttpStatus.OK); }
在页面中这样做:
你需要这些import……
import javax.servlet.*; import javax.servlet.http.*;
而且,如果您正在使用Maven,那么您还需要在项目基本目录中的pom.xml文件的依赖项块中使用它。
javax.servlet javax.servlet-api 3.0.1 provided
然后Jason上面列出的修复工作将会起作用:
@ResponseBody public ResponseEntity saveData(HttpServletRequest request, HttpServletResponse response, Model model){ String jsonString = request.getParameter("json"); }