我们可以在 spring 中创建 Web 应用程序的方式有多少

How many ways we can create web application in spring

我见过许多在使用 spring f/w 构建的 Web 应用程序中使用 @Controller 注释的示例。 此外,我在 spring 中看到了用于创建 Web 应用程序的 @RestController。 第三个我通常提到的创建 Web 应用程序是通过在 web.xml 中指定 spring servlet 并通过实现 Controller 接口或扩展 AbstractController 创建控制器 类。 这些方法有什么区别?除了我提到的,还有其他方法吗?

@Controller 通常用于 MVC 控制器系统,这允许您从控制器中 return 模型到您的视图。

@RestController 通常用于 RESTful 网络服务,这通常会输出 XML 或 JSON,您可以使用库或通过覆盖 ToString() 从 POJO 解组POJO的方法。

在所有情况下(除非您使用 Spring 引导),您通常仍会使用 web.xml。我更喜欢使用注释方法 (@Controller and/or @RestController),因为它意味着更少摆弄 XML 个文件。

我不想使用你提到的第三种方法,因为我觉得它不太灵活而且更复杂。

除了上面的回答,我想补充一些可能对你有帮助的@Controller注释的用例。

1) 多个 URL 模式可以由一个方法处理。

@RequestMapping({"/hello", "/hi", "/greetings"})

2) class 和方法级别的控制器

@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){
...
}