MVC框架组件,MVC核心组件:

什么是MVC:
MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。

Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO。它也可以带有逻辑,在数据变化时更新控制器。
View(视图) - 视图代表模型包含的数据的可视化。
Controller(控制器) - 控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。

MVC结构

MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。

  • 视图

视图是用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Macromedia Flash和象XHTML,XML/XSL,WML等一些标识语言和Web services.

如何处理应用程序的界面变得越来越有挑战性。MVC一个大的好处是它能为你的应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。

  • 模型

模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用象EJBs和ColdFusion Components这样的构件对象来处理数据库。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。

  • 控制器

控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后用确定用哪个视图来显示模型处理返回的数据。

现在我们总结MVC的处理过程,首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户。

MVC框架五大核心组件:

  1. DispatcherServlet (控制器,请求入口)
  2. HandlerMapping (控制器,请求派发 让请求和控制器建立一一对应的关系)
  3. Controller (控制器,请求处理流程 真正处理请求的组件)
  4. ModelAndView (模型,封装数据信息和视图信息的对象)
  5. ViewResolver (视图,视图显示处理器)

Spring MVC的编写步骤:

  1. 建立一个项目 导入jar包(ioc mvc) 并拷贝配置文件到src下 在WEB-INF下
    建立一个jsp 页面
  2. 在WEB-INF下的 web.xml 中 配置DispatcherServlet 并使用初始化参数
    contextConfigLocation关联Spring的配置文件
  3. 在Spring 配置文件中 配置HandlerMapping 的 实现类
    SimpleUrlHandlerMapping 并且要配置 请求和控制器的对应关系
  4. 编写控制器的实现类 实现 Controller 接口
    在接口方法中 返回 ModelAndView 同时在容器中创建 控制器对象
  5. 在Spring 配置文件中 配置ViewResolver 的实现类
    InternalResourceViewResolver 需要配置前缀和后缀

使用Spring MVC 访问WEB-INF下的jsp

基于标注的Spring MVC:

  1. 建立一个项目 导入jar包(ioc aop mvc) 拷贝配置文件到src 下 并 在WEB-INF下建立jsp文件
  2. 在web.xml 中配置 DispatcherServlet 并通过 初始化参数 contextConfigLocation
    关联Spring 配置文件
  3. 开启组件扫描 和 标注形式的mvc
    <context:component-san  base-package=""  />
    <mvc:annotation-driven />   
    
    底层创建了一个 RequestMappingHandlerMapping的组件
  4. 写一个java类 不用实现Controller接口
@RequestMapping("/请求路径")
控制器方法的返回值类型 可以是String 也可以是 ModelAndView   方法名自由了(参数自由了){

}  

在类上加对应的标注 @Controller 可以把普通类 变成控制器 并在容器中创建Controller 对象

  1. 配置视图处理器

使用标注形式的 mvc 访问 WEB-INF下的 register.jsp