註解Controller和RestController @Controller //該註解只能標識一個Spring類是Spring MVC Controller處理器 @RestController //該註解是@Controller和@ResponseBody的結合體,兩個標註合用 Control ...
註解Controller和RestController
@Controller
//該註解只能標識一個Spring類是Spring MVC Controller處理器
@RestController
//該註解是@Controller和@ResponseBody的結合體,兩個標註合用
Controller註解可以通過String跳轉到JSP、ftl、html等頁面
ResponseBody註解可以返回實體對象(只能返回String、Object、Json等實體)不能跳轉到模板頁面
若想要跳轉到模板頁面需要用ModelAndView封裝
使用RestController
@RestController
public class UserController {
@GetMapping("/index")
public ModelAndView toIndex(){
ModelAndView mv = new ModelAndView("index");//封裝操作
return mv;//返回頁面
}
// 或者
@GetMapping("/login")
public String getSchool(Model model) {
model.addAttribute("name", "xuqi");
model.addAttribute("age", 22);
return "/login";
}
@GetMapping("/user")
public User toIndex(){
/**相關操作 */
return user;//返回Json格式user對象
}
}
對於Controller註解的類,若要返回JSON類型的數據,需要添加ResponseBody註解,返回結構化數據而不是渲染頁面。
使用Controller
@Controller
public class UserController {
@GetMapping("/index")
public String toIndex(){
return "/index";
}
@ResponseBody //添加註解
@GetMapping("/user")
public User toIndex(){
return user;//Json格式user對象
}
}
404-印象深刻的Debug
在協助伙伴Debug中,遇到這樣的問題
——測試請求時,伺服器能正確的接受和處理請求,但始終無法做出正確響應,始終返回404 No message available。
在debug中排除了代碼問題、請求路徑、重定向、路由、代理、緩存、http方法、安全軟體、跨域請求等各種原因後。終於在偶然的代碼比對中發現問題。
由於該類上的註解僅為Controller而不是RestController,同時方法上也沒有相應的ResponseBody註解,因而無法對返回的實體類型做出有效的處理,返回自然是404。