@ResponseBody 和 @RequestBody 的作用
2018-03-19 13:16
357 查看
先提一嘴 @RequestMapping(“url”),这里的 url写的是请求路径的一部分,一般作用在 Controller的方法上,作为请求的映射地址。代码:
那么 @ResponseBody呢?@ResponseBody是作用在方法上的,@ResponseBody 表示该方法的返回结果直接写入 HTTP response body 中,一般在异步获取数据时使用【也就是AJAX】,在使用 @RequestMapping后,返回值通常解析为跳转路径,但是加上 @ResponseBody 后返回结果不会被解析为跳转路径,而是直接写入 HTTP response body 中。 比如异步获取 json 数据,加上 @ResponseBody 后,会直接返回 json 数据。@RequestBody 将 HTTP 请求正文插入方法中,使用适合的 HttpMessageConverter 将请求体写入某个对象。举个例子:前台异步请求:
后台 Controller类中对应的方法:
@RequestBody呢? @RequestBody是作用在形参列表上,用于将前台发送过来固定格式的数据【xml 格式或者 json等】封装为对应的 JavaBean 对象,封装时使用到的一个对象是系统默认配置的 HttpMessageConverter进行解析,然后封装到形参上。比如上面的登录后台代码可以改为:
@RequestMapping(value = "/test")//类级别映射,可以没有,一般用于减少书写量 public class myController {
//方法级别映射,必须有,那么这个方法的访问地址就是/test/aaa,请求到的页面就是test.jsp【当然,这里的.jsp需要在配置文件中配置】 @RequestMapping(value = "/aaa") public String getMyName() { return "test"; } }
那么 @ResponseBody呢?@ResponseBody是作用在方法上的,@ResponseBody 表示该方法的返回结果直接写入 HTTP response body 中,一般在异步获取数据时使用【也就是AJAX】,在使用 @RequestMapping后,返回值通常解析为跳转路径,但是加上 @ResponseBody 后返回结果不会被解析为跳转路径,而是直接写入 HTTP response body 中。 比如异步获取 json 数据,加上 @ResponseBody 后,会直接返回 json 数据。@RequestBody 将 HTTP 请求正文插入方法中,使用适合的 HttpMessageConverter 将请求体写入某个对象。举个例子:前台异步请求:
function loginAction() { // 获取用户输入的账号和密码 var name = $('#count').val(); var password = $('#password').val(); $.ajax({ url : 'account/login.do', 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(""); }
后台 Controller类中对应的方法:
@RequestMapping("/login.do") @ResponseBody public Object login(String name, String password, HttpSession session) { user = userService.checkLogin(name, password); session.setAttribute("user", user); return new JsonResult(user); }
@RequestBody呢? @RequestBody是作用在形参列表上,用于将前台发送过来固定格式的数据【xml 格式或者 json等】封装为对应的 JavaBean 对象,封装时使用到的一个对象是系统默认配置的 HttpMessageConverter进行解析,然后封装到形参上。比如上面的登录后台代码可以改为:
@RequestMapping("/login.do") @ResponseBody public Object login(@RequestBody User loginUuser, HttpSession session) { user = userService.checkLogin(loginUser); session.setAttribute("user", user); return new JsonResult(user); }
相关文章推荐
- Spring MVC之@RequestBody, @ResponseBody 作用
- @ResponseBody 和 @RequestBody 的作用
- @requestBody and @responseBody注解作用
- @requestBody and @responseBody注解作用
- spring mvc @ResponseBody/@RequestBody 配值action直接把对象输入json格式输入到前端相关配置
- request与response的作用
- Spring MVC之@RequestBody, @ResponseBody 详解
- SpringMVC中使用@RequestBody,@ResponseBody注解实现Java对象和XML/JSON数据自动转换(上)
- SpringMVC中使用@RequestBody,@ResponseBody注解实现Java对象和XML/JSON数据自动转换(上)
- @RequestBody, @ResponseBody 注解详解
- SpringMVC中出现" 400 Bad Request "错误(用@ResponseBody处理ajax传过来的json数据转成bean)的解决方法
- Spring 3.x MVC 入门4 -- @ResponseBody & @RequestBody
- Spring MVC之@RequestBody, @ResponseBody 详解
- @ResponseBody 和 @RequestBody 注解的区别
- RequestParam\@ResponseBody
- SpringMVC之@RequestBody, @ResponseBody
- spring之@ModelAttribute,@RequestBody, @ResponseBody 参数传递的运用详解
- Spring MVC之@RequestBody, @ResponseBody 详解
- Spring MVC之@RequestBody, @ResponseBody 详解
- Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable