@Controller & @RestController

@RestController 相当于 @Controller + @ResponseBody 两个注解的结合,返回 json 数据不需要在方法前面加 @ResponseBody 注解了,但使用 @RestController这个注解,视图解析器无法解析 jsp,html 页面。

使用 @RestController 注解,则 Controller 中的方法无法返回 jsp 页面,配置的视图解析器 InternalResourceViewResolver 不起作用,返回的内容就是 Return 里的内容。例如:本来应该到 success.jsp 页面的,则其显示 success 。
如果需要返回到指定页面,则需要用 @Controller 配合视图解析InternalResourceViewResolver 才行;如果需要返回 JSON,XML 或自定义 mediaType 内容到页面,则需要在对应的方法上加上 @ResponseBody 注解。

@Controller
public class FileUploadController {

// 跳转到上传文件的页面
@RequestMapping(value="/gouploadimg", method = RequestMethod.GET)
public String goUploadImg() {
    //跳转到 templates 目录下的 uploadimg.html
    return "uploadimg";
}

// 返回json
@RequestMapping(value="/testuploadimg", method = RequestMethod.POST)
public @ResponseBody String uploadImg(@RequestParam("file") MultipartFile file, HttpServletRequest request) {
    return "success";
}

你可能感兴趣的:(java开发,java)