java中@Controller和@RestController的区别
通俗点理解: @RestController = @Controller + @ResponseBody
@RestController: 不能直接返回一个jsp或者html界面,如果想要返回jsp界面需要借助modeAndView
例如在该注解下面写如下语句(错误的):
@RequestMapping("main.do")
public String main() {
return "main.jsp";
}
//但是可以通过modelAndView来返回界面(正确的)(没验证到底对不对):
@RequestMapping("main.do")
public ModelAndView modelAndView(String name) {
//构建ModelAndView实例,并设置跳转地址(页面)为hello
ModelAndView view = new ModelAndView("main");
//将数据放置到ModelAndView对象view中,第二个参数可以是任何java类型
view.addObject("name",name);
//返回ModelAndView对象view
return view;
}
@Controller: 可以直接返回jsp界面
例如如下代码是正确的:
@RequestMapping("main.do")
public String main() {
return "main.jsp";
}
正常可以使用@controller,然后再需要返回json的时候在其方法上家@ResponseBody就可以,
这样在同一个类下,既可以有返回jsp或者html界面的方法,也可以有返回json的方法
但如果是菜单的controler(菜单一般是返回一个jsp或者html页面)和返回页面数据的controller是分开的,
那么关于菜单跳转的这个controller就可以设为@Controller,
关于返回页面数据的controller就可以设@RestController ,因为这样就不需要再每个方法
上面都加@ResponseBody了.
本人新手,肯定有理解错误的地方,还请大家不吝赐教,多多给予批评指正!
万般感谢!!!
分类:
SSM
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~