ToB企服应用市场:ToB评测及商务社交产业平台

标题: 404-Controller与RestController的异同 [打印本页]

作者: 徐锦洪    时间: 2023-11-2 08:53
标题: 404-Controller与RestController的异同
注解Controller和RestController

@Controller   //该注解只能标识一个Spring类是Spring MVC Controller处理器
@RestController  //该注解是@Controller和@ResponseBody的结合体,两个标注合用
Controller注解可以通过String跳转到JSP、ftl、html等页面
ResponseBody注解可以返回实体对象(只能返回String、Object、Json等实体)不能跳转到模板页面
若想要跳转到模板页面需要用ModelAndView封装
使用RestController
  1. @RestController
  2. public class UserController {
  3.     @GetMapping("/index")
  4.     public ModelAndView toIndex(){
  5.         ModelAndView mv = new ModelAndView("index");//封装操作
  6.               return mv;//返回页面
  7.     }
  8.     // 或者
  9.     @GetMapping("/login")
  10.     public String getSchool(Model model) {
  11.         model.addAttribute("name", "xuqi");
  12.         model.addAttribute("age", 22);
  13.         return "/login";
  14.     }
  15.     @GetMapping("/user")
  16.     public User toIndex(){
  17.         /**相关操作 */
  18.               return user;//返回Json格式user对象
  19.     }
  20. }
复制代码
对于Controller注解的类,若要返回JSON类型的数据,需要添加ResponseBody注解,返回结构化数据而不是渲染页面。
使用Controller
  1. @Controller
  2. public class UserController {
  3.     @GetMapping("/index")
  4.     public String toIndex(){
  5.               return "/index";   
  6.     }
  7.     @ResponseBody //添加注解
  8.     @GetMapping("/user")
  9.     public User toIndex(){
  10.               return user;//Json格式user对象   
  11.     }
  12. }
复制代码
404-印象深刻的Debug

在协助伙伴Debug中,遇到这样的问题
——测试请求时,服务器能正确的接受和处理请求,但始终无法做出正确响应,始终返回404 No message available。
在debug中排除了代码问题、请求路径、重定向、路由、代理、缓存、http方法、安全软件、跨域请求等各种原因后。终于在偶然的代码比对中发现问题。
由于该类上的注解仅为Controller而不是RestController,同时方法上也没有相应的ResponseBody注解,因而无法对返回的实体类型做出有效的处理,返回自然是404。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4