@ResponseBody是作用在方法上的,@ResponseBody 表示该方法的返回结果直接写入 HTTP response body 中,一般在异步获取数据时使用【也就是AJAX】,在使用 @RequestMapping后,返回值通常解析为跳转路径,但是加上 @ResponseBody 后返回结果不会被解析为跳转路径,而是直接写入 HTTP response body 中。 比如异步获取 json 数据,加上 @ResponseBody 后,会直接返回 json 数据。@RequestBody 将 HTTP 请求正文插入方法中,使用适合的 HttpMessageConverter 将请求体写入某个对象。
@ResponseBody的作用是将后端以return返回的javabean类型数据转为json类型数据。(后端向前端传数据)
案例:
前端异步请求:
- function loginAction() {
-
- // 获取用户输入的账号和密码
- var name = $('#count').val();
- var password = $('#password').val();
-
- $.ajax({
- url : 'account/login',
- type : 'post',
- // data对象中的属性名要和服务端控制器的参数名一致 login(name, password)
- data : {
- 'name' : name,
- 'password' : password
- },
- dataType : 'json',
- success : function(result) {
- if (result.state == 0) {
- // 登录成功,设置cookie并跳转edit.html
- addCookie('userId', result.data.id);
- addCookie('nick', result.data.nick);
- location.href = 'edit.html';
- } else {
- // 登录失败
- var msg = result.message;
- $('#sig_in').next().html(msg);
- $('#sig_in').next().css("color", "red");
- }
- },
- error : function(e) {
- alert("系统异常");
- }
- });
- $('#password').val("");
- }
后端业务逻辑:
- @RequestMapping("/login")
- @ResponseBody
- public Object login(String name, String password, HttpSession session) {
- user = userService.checkLogin(name, password);
- session.setAttribute("user", user);
- return new JsonResult(user);
- }
@RequestBody是作用在形参列表上,用于将前台发送过来固定格式的数据【xml 格式或者 json等】封装为对应的 JavaBean 对象,封装时使用到的一个对象是系统默认配置的 HttpMessageConverter进行解析,然后封装到形参上。
@RequestBody的作用是将前端传来的json格式的数据转为自己定义好的javabean对象(前端向后端传递数据)
例如上方后端业务逻辑可以改为:
- @RequestMapping("/login.do")
- @ResponseBody
- public Object login(@RequestBody User loginUuser, HttpSession session) {
- user = userService.checkLogin(loginUser);
- session.setAttribute("user", user);
- return new JsonResult(user);
- }
@PathVariable的作用是获取url中的动态参数,常用于RestFul风格的编程。通过这种方式,前端可以将参数写在url中
例如:通过id获得用户信息,前端的url可以表示为
http://localhost:8080/getUser/1 这个1就是想要查询的用户id
后端通过@PathVariable来接收这个动态参数
- @GetMapping("/getUser/{id}")
- public User getUser(@PathVariable("id") String id){
- return userService.getUserById(id);
- }
-