@ResponseBody和@RestController


Spring 關於ResponseBody注解的作用

responseBody一般是作用在方法上的,加上該注解表示該方法的返回結果直接寫到Http response Body中,常用在ajax異步請求中,

在RequestMapping中 return返回值默認解析為跳轉路徑,如果你此時想讓Controller返回一個字符串或者對象到前台 就會報404 not response的錯誤。

當加上@ResponseBody注解后不會解析成跳轉地址 會解析成相應的json格式的對象 集合 字符串或者xml等直接返回給前台 可以通過 ajax 的“success”:fucntion(data){} data直接獲取到。

下面是返回json格式的字符串

  @RequestMapping("/register")
  @ResponseBody  
  public String register(TestUserInfo testUserInfo,String username) throws Exception{
      if(testUserService.findByUserName(username)==null){
          testUserService.addTestUser(testUserInfo);
          return "success";
      }else{
          return "fail";
      }
  }

  下面是頁面跳轉

    @RequestMapping("/upload/condition")
    public String search(Model model) {
        List<ArchiveCategory> allArchiveCategory = archiveCategoryApi.getAllCategories();
        List<ArchiveCategory> topLevelCategory = allArchiveCategory.stream().filter(category -> category.getParentid() == 0 || "視頻".equals(category.getName())).collect(Collectors.toList());
        model.addAttribute("archiveCategories", topLevelCategory);
        return "beike/upload-pop-condition";
    }

  

 

注冊驗證: 希望返回給前台 一個json字符串 來表示 注冊是否成功 而不是 跳轉路徑  所以此處 方法 加上 @ResponseBody注解 避免被解析成跳轉路徑

 

  @ResponseBody,一般是使用在單獨的方法上的,需要哪個方法返回json數據格式,就在哪個方法上使用,具有針對性。

  @RestController,一般是使用在類上的,它表示的意思其實就是結合了@Controller和@ResponseBody兩個注解,

如果哪個類下的所有方法需要返回json數據格式的,就在哪個類上使用該注解,具有統一性;需要注意的是,使用了@RestController

注解之后,其本質相當於在該類的所有方法上都統一使用了@ResponseBody注解,所以該類下的所有方法都會返回json數據格式,

輸出在頁面上,而不會再返回視圖。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM