在Web開發(fā)中,Controller是負責處理客戶端請求的核心組件之一。在處理請求時,Controller需要根據(jù)請求方式和請求參數(shù)等因素來決定返回什么類型的響應。
在某些場景下,Controller返回JSON數(shù)據(jù)是比較常見的做法。JSON格式數(shù)據(jù)具有輕量級、易于解析等特點,適用于Ajax異步請求、移動端API等場景。下面是一個返回JSON數(shù)據(jù)的例子:
/** * 獲取用戶列表 */ @RequestMapping(value="/users", method=RequestMethod.GET) @ResponseBody public MapgetUsers(){ List users = userService.findAllUsers(); Map result = new HashMap<>(); result.put("status", 0); result.put("message", "Success"); result.put("data", users); return result; }
上述Controller方法通過@ResponseBody注解將返回結果轉為JSON對象,并將其交給SpringMVC框架進行序列化和輸出。在瀏覽器中訪問該接口,會得到如下的JSON數(shù)據(jù):
{ "status": 0, "message": "Success", "data": [ { "id": 1, "name": "張三", "age": 20, "gender": "男" }, { "id": 2, "name": "李四", "age": 21, "gender": "女" } ] }
除了返回JSON數(shù)據(jù),Controller還可以返回HTML頁面,也就是我們通常所說的視圖。通過返回視圖頁面,我們能夠讓用戶看到更加友好的界面,豐富了用戶體驗。
在SpringMVC框架中,使用ModelAndView對象來封裝視圖和模型數(shù)據(jù)。下面是一個返回HTML頁面的例子:
/** * 顯示用戶列表頁面 */ @RequestMapping(value="/users", method=RequestMethod.GET) public ModelAndView showUsers(){ Listusers = userService.findAllUsers(); ModelAndView mav = new ModelAndView("users"); mav.addObject("users", users); return mav; }
在上述Controller方法中,我們通過返回ModelAndView對象來將處理結果返回給客戶端。"users"是指定的視圖名稱,即視圖頁面的文件名。所有的視圖會放在SpringMVC配置文件中指定的目錄下。
綜上所述,Controller返回JSON數(shù)據(jù)還是HTML頁面,取決于具體的業(yè)務場景。如果需要實現(xiàn)異步請求、移動端API等功能,使用JSON更合適;如果需要讓用戶看到更加友好的界面,使用HTML頁面更加合適。