• @Controller VS @RestController @RequestBody VS @ResponseBody


    @ResponseBody的作用其实是将java对象转为json格式的数据。 具体说,是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据,在使用此注解之后不会再走视图处理器。

    @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 user;

    @ResponseBody 作用:

    1) 读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析;
    2) 再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上。

    application/x-www-form-urlencoded, 可选 @RequestBody  @RequestParam @ModelAttribute,最原始的使用request.getParameter(“”)来接收。
    multipart/form-data :@RequestBody不支持,因为这种是用来传文件的,后台使用request.getInputStream() 来接收

    application/json, application/xml:必须使用@RequestBody来处理

    如果类标有@Controller
    方法上不加@ResponseBody,是将方法返回的值作为视图名称,并自动匹配视图去显示
    方法加上@ResponseBody就仅仅是将方法返回值当作内容直接返回到客户端


    @Controller, @RestController的共同点:都是用来表示Spring某个类的是否可以接收HTTP请求。
    @Controller, @RestController的不同点:RestController = @Controller + @ResponseBody

    @RestController中的方法如果想跳转页面,则用ModelAndView进行封装,如下:


    @RestController
    public class UserController {

    @RequestMapping(value = "/index",method = RequestMethod.GET)
    public String toIndex(){
    ModelAndView mv = new ModelAndView("index");
    return mv;
    }

     

  • 相关阅读:
    Linux进程实践(5) --守护进程
    Linux进程实践(4) --wait避免僵尸进程
    Linux进程实践(3) --进程终止与exec函数族
    Linux进程实践(2) --僵尸进程与文件共享
    ORACLE清除某一字段重复的数据(选取重复数据中另一个字段时期最大值)
    ORACLE查询某一字段重复的数据
    mysql字符集设置
    项目中填写全局常量
    mybatis的insert简单使用
    window.open()读取本地图片简单使用总结
  • 原文地址:https://www.cnblogs.com/Ivyduan/p/16087640.html
Copyright © 2020-2023  润新知