404-Controller与RestController的异同
注解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。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)