了解Spring MVC子项目

时间:2016-07-25 18:01:32

标签: spring spring-mvc

我在使用Spring MVC框架方面有一些经验,但是,我仍然有疑问。据我所知,它是一个MVC框架,它有助于使用MVC设计模式编写Web应用程序。

现在,当我试图更好地理解它时,我开始知道它基本上使用了两种设计模式:“前控制器”,然后是“MVC”设计模式。

我理解的第一部分,“前端控制器”由Spring MVC以DispatcherServlet的形式提供,它拦截了所有传入的请求。

Spring MVC框架中的“MVC框架”在哪里?据我所知,是编写控制器,模型,视图的开发人员。如果开发人员没有编写代码,比如控制器,那么这个框架就没有提供控制器。

我很难在开发人员必须编写所有代码时,Spring MVC如何支持MVC模式。

3 个答案:

答案 0 :(得分:1)

让我以控制器为例来解释这一点。

是的。乍一看,看起来Spring似乎什么也没做。

可能是因为应用程序代码和框架之间的集成代码被Annotations减少了。所以开发人员只是没有注意到单个单词" @Controller"并开始搜索" MVC"在哪里?

Spring 2.5控制器示例:

由于这个" 实施控制器",Spring的角色更引人注目

import org.springframework.web.servlet.mvc.Controller;

public class HelloController implements Controller {

}

Spring 4 Controller:

现在Spring的贡献不太明显/可见或多或少此类可能看起来像我们自己的普通 java类, out 任何框架。

@Controller
@RequestMapping("/")
public class HelloWorldController {

MVC是体系结构模式,它定义了应用程序组件的体系结构以及这些组件之间的交互(请求/数据流)。 / p>

始终开发人员必须自己编写业务/应用程序逻辑。

开发人员扩展 Spring MVC 控制器。 开发人员正在扩展 Spring MVC 模型。 开发人员在请求URL和控制器方法之间执行请求映射。 但是,当请求到来时,这种映射是如何发生的? - 这是Spring MVC的职责,应用程序开发人员无需费心。

在简单的旧Servlet时代中,应用程序开发人员通过提及http方法和doGet(),doPost()等来完成映射。

同样,模型使用 @Repository 进行注释。 而View是旧时的JSP或现代的角度JS ......

所以,简而言之,MVC就在那里,但现在不那么明显

我希望这个答案能给出一些见解。

答案 1 :(得分:1)

看看这个例子:

@Controller
public class HomeController {

    @Autowired
    private IHomeService service;

    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String home(Model model) {

        model.addAttribute("data", service.getHomeContainer()); // model is just a map...

       //
       // create html response using model + home.jsp
       // former usage: return new ModelAndView("home");
       //
        return "home"; 
    }

}

因此,您不必实施@ControllerModelView实习生协作和生命周期。春天为你做。你只需要以你上面看到的方式初始化并调用它们。

最后,我相信MVC的主要思想和好处是分而治之:

  • 团队A开发@Controller - 级别
  • B队开发@Service - 级别
  • Team C开发View(Html,js)

答案 2 :(得分:0)

Dispatcher Servlet是Spring MVC的前端控制器,它拦截应用程序的所有URL。但是,您(开发人员)必须编写自己的控制器来处理请求。前端控制器是联系人的初始点(因此提供应用程序的中心入口点),而dev编写的控制器实际上处理请求。

前端控制器将URL映射到正确的处理程序。