@Controller和@RestController的区别
2016-11-02 10:24
302 查看
原因:使用@RestController注解后,无法跳转指定页面的问题
解决:改用@Controller注解即可
下面详细说明一下
@RestController注解源码:
官方文档对@RestController的解释:
@RestController is a stereotype annotation that combines @ResponseBody and @Controller.
结论 : @RestController注解相当于@ResponseBody + @Controller合在一起的作用。
这里大家要清楚一个概念:
解决:改用@Controller注解即可
下面详细说明一下
一,对比@Controller与@RestController
@Controller注解源码:package org.springframework.stereotype; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import org.springframework.stereotype.Component; @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Component public @interface Controller { String value() default ""; }
@RestController注解源码:
package org.springframework.web.bind.annotation; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.ResponseBody; @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Controller @ResponseBody public @interface RestController { String value() default ""; }
官方文档对@RestController的解释:
@RestController is a stereotype annotation that combines @ResponseBody and @Controller.
结论 : @RestController注解相当于@ResponseBody + @Controller合在一起的作用。
二,问题解释
为Controller类使用@RestController注解为Controller类使用@RestController注解,Controller中的方法无法返回jsp页面 配置的视图解析器InternalResourceViewResolver不起作用 例如:return “hello" 不会返回hello.jsp页面,会直接输出hello字符串
这里大家要清楚一个概念:
1)返回到指定页面,则需要用 @Controller配合视图解析器InternalResourceViewResolver才行 2)如果需要返回JSON,XML或自定义mediaType内容到页面显示,需要在对应的方法上加上@ResponseBody注解。
相关文章推荐
- @Controller和@RestController的区别?
- @Controller和@RestController的区别
- @Controller和@RestController的区别?
- @Controller 和 @RestController 区别
- @Controller和@RestController的区别
- @Controller和@RestController的区别?
- @RestController和@Controller注解的区别
- @Controller和@RestController的区别
- @Controller和@RestController的区别?
- @Controller和@RestController的区别
- @Controller和@RestController的区别?
- @Controller和@RestController的区别?
- @Controller和@RestController的区别?
- @Controller和@RestController的区别?
- @Controller和@RestController的区别
- @Controller和@RestController的区别
- @Controller和@RestController的区别
- @Controller和@RestController的区别?
- @Controller和@RestController的区别?
- @Controller和@RestController的区别?