@ResponseBody和@RequestBody呢的区别

    xiaoxiao2024-10-23  90

    1.@ResponseBody的讲解: @ResponseBody是作用在方法上的,@ResponseBody 表示该方法的返回结果直接写入 HTTP response body 中,一般在异步获取数据时使用【也就是AJAX】,在使用 @RequestMapping后,返回值通常解析为跳转路径,但是加上 @ResponseBody 后返回结果不会被解析为跳转路径,而是直接写入 HTTP response body 中。 比如异步获取 json 数据,加上 @ResponseBody 后,会直接返回 json 数据。@RequestBody 将 HTTP 请求正文插入方法中,使用适合的 HttpMessageConverter 将请求体写入某个对象。 1.1 @ResponseBody 代码示例

    ======================前端ajax的语句块========================= 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//@ResponseBody 表示该方法的返回结果直接写入 HTTP response body 中 public Object login(String name, String password, HttpSession session) { user = userService.checkLogin(name, password); session.setAttribute("user", user); return new JsonResult(user); }

    2. @RequestBody的理论 @RequestBody是作用在形参列表上,用于将前台发送过来固定格式的数据【xml 格式或者 json等】封装为对应的 JavaBean 对象,封装时使用到的一个对象是系统默认配置的 HttpMessageConverter进行解析,然后封装到形参上。 2.1示例代码

    //可以比较1.1Controller的代码,将{String name, String password}属性直接封装成 User loginUuser类的对象! @RequestMapping("/login.do") @ResponseBody public Object login(@RequestBody User loginUuser, HttpSession session) { user = userService.checkLogin(loginUser); session.setAttribute("user", user); return new JsonResult(user); }
    最新回复(0)