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

时间:2017-04-18 05:42:13

标签: spring spring-mvc spring-rest

我见过很多例子,其中@Controller注释用于使用spring f / w构建的web应用程序。 另外,我已经看到@RestController在春天创建了一个Web应用程序。 第三,我通常所说的创建Web应用程序是通过在web.xml中指定spring servlet并通过实现Controller接口或通过扩展AbstractController来创建控制器类。 这些方法有什么不同?除了我提到的以外,还有其他方法吗?

2 个答案:

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