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";
}
}