我见过很多例子,其中@Controller注释用于使用spring f / w构建的web应用程序。 另外,我已经看到@RestController在春天创建了一个Web应用程序。 第三,我通常所说的创建Web应用程序是通过在web.xml中指定spring servlet并通过实现Controller接口或通过扩展AbstractController来创建控制器类。 这些方法有什么不同?除了我提到的以外,还有其他方法吗?
答案 0 :(得分:0)
@Controller通常用于MVC控制器系统,这允许您从控制器内将模型返回到视图。
@RestController通常用于RESTful Web服务,这通常会输出XML或JSON,您可以通过库或通过覆盖POJO的ToString()方法从POJO解组。
在所有情况下(除非您使用的是Spring Boot),您通常仍会使用web.xml。我更喜欢使用注释方法(@Controller和/或@RestController),因为它意味着更少使用XML文件。
我不想使用你提到的第三种方法,因为它对我来说感觉不那么灵活,而且更复杂。
答案 1 :(得分:0)
除了上面的答案,我想添加一些可能对您有帮助的@Controller
注释用例。
1)可以通过单个方法处理多个URL模式。
@RequestMapping({"/hello", "/hi", "/greetings"})
2)类和方法级别的控制器
@Controller
@RequestMapping("/admin")
public class AdminController {
@RequestMapping("/listUsers")
public ModelAndView listUsers() {
}
@RequestMapping("/saveUser")
public ModelAndView saveUser(User user) {
}
@RequestMapping("/deleteUser")
public ModelAndView deleteUser(User user) {
}
}
注意:如果你想使用@Controller而不是@RestController,你需要添加@ResponseBody注释,如下所示:
@RequestMapping("admin/getVendorDetails")
public @ResponseBody <Return Type> getVendorDetails(HttpServletRequest request){
...
}