关于@RestController和@Controller

为了方便REST开发,Spring引入了@RestController注解,该注解已经标注了@ResponseBody和@Controller,源码如下:

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController {
    String value() default "";
}


最近遇见个问题,使用@RestController注解控制器后,发现控制器中的方法无法返回jsp页面,返回的是String,例如return "user/showUser";期望的应该是返回showUser.jsp,但实际上返回的就是实打实的String字符串"user/showUser".这说明视图解析器没启作用。
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
          p:prefix="/WEB-INF/views/"
          p:suffix=".jsp"/>


最后只能使用@Controller来配合视图解析器来返回指定页面。

所以如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解。

猜你喜欢

转载自summerhome.iteye.com/blog/2391167