1.@RestController注解相当于@ResponseBody 和 @Controller组合在一起的作用。
2.应用场景:
a. 只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面或者html,配置的视图解析器 InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容。
b. 如果需要返回到指定页面,则需要用 @Controller配合视图解析器InternalResourceViewResolver才行。 如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加@ResponseBody注解。
例如:
@CrossOrigin
@Controller
public class FileUploadController {
//跳转到上传文件的页面
@RequestMapping(value="/gouploadimg", method = RequestMethod.GET)
public String goUploadImg() {
//跳转到 templates 目录下的 uploadimg.html
return “uploadimg”;
}
}
@RestController
//@CrossOrigin(origins = “*”, maxAge = 3600)//跨域
@RequestMapping("/mobile")
public class H5SiteController {
@RequestMapping(value="/course/queryCourseTypeDetails",method = RequestMethod.GET)
public String queryCourseTypeDetails(@RequestParam(value=“categoryId”,required=true) long categoryId) throws IOException {
Map<String, Object> jsonMap = new HashMap<String, Object>();
if (categoryId <= 0) {
jsonMap.put(“error”, “-2”);
jsonMap.put(“msg”, “分类id错误”);
return JSON.toJSONString(jsonMap);
}
// CourseCategoryService categoriesService = Spring.getBeanOfType(CourseCategoryService.class);
List<Map<String, Object>> result = null;
try {
result = courseCategoryService.getCourseCategory(categoryId);
} catch (Exception e) {
e.printStackTrace();
// Logger.error(“获取二三级菜单获取异常:” + e.getMessage());
}
jsonMap.put(“error”, 0);
jsonMap.put(“msg”, “获取二三级菜单成功”);
jsonMap.put(“courseList”, result);
return JSON.toJSONString(jsonMap);
}
}