1,传递参数的两种访书,第一是key-value形式,对于这种我们在服务器端直接使用 request.getParameter("key");就能获取key对应的value。下面是代码:
@Controller @RequestMapping("/api/log/logprint") public class HelloController { @RequestMapping(method = RequestMethod.POST) public String printWelcome(HttpServletRequest request, HttpServletResponse response,ModelMap model) { model.addAttribute("message", "Hello world!"); ////接收参数 String logBody = request.getParameter("log_body"); System.out.println("====logBody="+logBody); return "hello"; } }
2,第二是json格式,但是对于传递的json就不能使用这样的代码了,
利用json传递的参数存在request的body里,我们需要从里面输入流里面读取,下面是代码:
public class LogPrintInterceptor extends HandlerInterceptorAdapter { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { ////接收参数 获取logBody、requestId String requestId = request.getHeader("requestid"); String input = null; StringBuffer requestBody = new StringBuffer(); try { BufferedReader reader = request.getReader(); while((input = reader.readLine()) != null) { requestBody.append(input); } } catch (IOException e) { e.printStackTrace(); } if (StringUtils.isNotBlank(requestId)) { return true; }else{ return false; } } }
3,第三是也是json格式,和第二种不同的是直接转为java对象,下面是代码:
请的JSON数据:
{ "uname":"81110318", "pwd":"d59cd7385c99fe94c70be3396d7d004c" }
接收的Java代码:
@Controller @RequestMapping("/api/login") public class UserController { @RequestMapping(method = RequestMethod.POST) public String login(@RequestBody User user,HttpServletRequest request, HttpServletResponse response,ModelMap model) { model.addAttribute("message", "Hello world!"); System.out.println("uname="+user.getUname()+", pwd="+user.getPwd()); return "hello"; } }