@controller和@RestController的用法小结

今天开始用的是@RestController,跳转不到html页面,后来改成@controller就可以跳转了,总结了一下两者的用法和区别。

首先两者都是用来表示spring某个类的是否可以接收HTTP请求

@RestController注解相当于@ResponseBody + @Controller合在一起的作用。

1)如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,配置的视图解析器InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容。

例如:本来应该到index.jsp页面的,则其显示index.

2)如果需要返回到指定页面,则需要用 @Controller配合视图解析器InternalResourceViewResolver才行。
3)如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解。


在@controller注解中,返回的是字符串,(如果想返回string或者json,在方法名前加上ResponseBody)或者是字符串匹配的模板名称,与html页面配合使用的,
在这种情况下,前后端的配合要求比较高,java后端的代码要结合html的情况进行渲染,使用model对象(或者modelandview)的数据将填充user视图中的相关属性,然后展示到浏览器。 
java示例代码如下:

@Controller@RequestMapping(method = RequestMethod.GET, value = "/")  

public String getuser(Model model) throws IOException {  

model.addAttribute("name",bob);  

model.addAttribute("sex",boy);  

return "user";//user是模板名  

}

而在@restcontroller中,返回的应该是一个对象,即return一个user对象这时,在没有页面的情况下,也能
看到返回的是一个user对象对应的json字符串,而前端的作用是利用返回的json进行解析渲染页面,java后端的代码比较自由。 
相应的java代码:

@RestController@RequestMapping(method = RequestMethod.GET, value = "/")  

public User getuser( ) throws IOException {  

User bob=new User();  

bob.setName("bob");  

bob.setSex("boy");  

return bob;  

}
 访问网址得到的是json字符串{“name”:”bob”,”sex”:”boy”},前端页面只需要处理这个字符串即可。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值