什么是Spring的MVC框架?

Spring 配备构建Web 应用的全功能MVC框架。Spring可以很便捷地和其他MVC框架集成,如Struts,Spring 的MVC框架用控制反转把业务对象和控制逻辑清晰地隔离。它也允许以声明的方式把请求参数和业务对象绑定。

spring mvc是一个基于mvc的web框架。spring mvc是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合。

MVC设计模式

例如:

数据访问接口:DAO层。   处理业务Service层。  数据实体:POJO   负责前端请求的接受并处理:Servlet   赋值前端页面展示:JSP

这种结构模式就是MVC设计模

java有几个控制器 java控制器是什么_spring

式,它是软件工程中的一种软件架构模式。它强制性的使软件系统的输入、处理和输出分开、把软件系统分为三个基本部分:模型(Model)、视图(View)、控制器(Controller)

java有几个控制器 java控制器是什么_java 控制器如何实现_02

java有几个控制器 java控制器是什么_MVC_03

JSP Mondel1

当业务流程简单的时候,可以把控制器的功能交给视图实现,这种模式称为JsPMondel1  如下图:

java有几个控制器 java控制器是什么_mvc_04

相比于JSP Mondel1,当业务流程复杂的时候就需要把业务流程控制交给控制器来实现,jsp专注与视图的展示即可  如下图:

java有几个控制器 java控制器是什么_spring_05

MVC处理过程

如图所示:

java有几个控制器 java控制器是什么_java 控制器如何实现_06

通过上图我们可以得知MVC处理过程:

(1)搜先视图提供系统与用户交互的界面,并发送用户输入给控制器

(2)控制器接受用户的请求,并决定应该调用那个魔心来进行处理

(3)模型根据用户请求进行相应的雨雾逻辑处理,并返回处理结果

(4)控制器根据返回的处理结果,调用相应的视图格式化模型返回的数据,并通过视图呈现给用户结果

MVC 优点

多视图共享一个模型,大大提高代码的可重用性

MVC三个模块相互独立,松耦合架构

控制器提高了应用程序的灵活性和可配置性

有利于软件工程化管理

MVC 缺点

原理复杂

增加了系统结构和实现的复杂性

视图对模型数据的低效率访问

Spring MVC 架构

java有几个控制器 java控制器是什么_mvc_07

Spring MVC框架搭建步骤

(1)下载jar文件并导入工程

spring-web-3.2.13.RELEASE.jar

spring-webmvc-3.2.13.RELEASE.jar

java有几个控制器 java控制器是什么_mvc_08

2.配置文件

在web.xml中配置Servlet

version="3.0">
springmvc
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:springmvc-servlet.xml
1
springmvc
/

3.创建Spring MVC的配置文件

4.创建Controller-处理请求的控制器

packagecn.smbms.controller;importcn.smbms.pojo.User;importorg.apache.log4j.Logger;importorg.springframework.stereotype.Controller;importorg.springframework.ui.Model;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RequestMethod;importorg.springframework.web.bind.annotation.RequestParam;importorg.springframework.web.servlet.ModelAndView;importorg.springframework.web.servlet.mvc.AbstractController;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjava.util.Map;public class IndexController extendsAbstractController {
@Overrideprotected ModelAndView handleRequestInternal(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throwsException {
System.out.println("hello,SpringMVC"); //在控制台输出日志信息
return new ModelAndView("index");
}

5.创建View-JSP(此处使用jsp作为视图了)

Insert title here


hello,SpringMVC!

部署运行

java有几个控制器 java控制器是什么_java 控制器如何实现_09

查看后台日志:控制台也输出了hello,Spring MVC

补存知识:

基于注解的处理器

@Controller:标注一个普通的JavaBean成为可以处理请求的控制器

java有几个控制器 java控制器是什么_java 控制器如何实现_10

@RequestMapping:通过请求URL进行映射

java有几个控制器 java控制器是什么_java控制器与接口_11

一键式配置,通过注解的方式进行Spring MVC开发

DefaultAnnotationHandlerMapping

AnnotationMethodHandlerAdapter

Spring MVC 请求过程

java有几个控制器 java控制器是什么_java控制器与接口_12

java有几个控制器 java控制器是什么_java 控制器如何实现_13

DispatcherServlet(前端控制器)

Spring MVC最核心的类

web.xml中配置

Handler(处理器):对应MVC中C(Controller层)

类型:Object

作用:实际处理请求

标注了@RequestMapping的所有方法都可以看作是一个Handler

ModelAndView

逻辑视图名

模型对象

核心组件

HandlerMapping(处理器映射)

BeanNameUrlHandlerMapping(默认)

将请求URL映射到同名的控制器Bean上

DefaultAnnotationHandlerMapping

将请求映射到标注@RequestMapping注解的控制器和处理方法上

RequestMappingHandlerMapping

HandlerAdapter(适配器)

AnnotationMethodHandlerAdapter

RequestMappingHandlerAdapter

ViewResolver(视图解析器)

InternalResourceView

总结:

Spring框架特点

清晰地角色划分

灵活的配置功能

提供了大量的控制器接口和实现类

真正做到与View层的实现无关(JSP、Velocity、Xslt等)

国际化支持

面向接口编程

Spring提供了Web应用开发的一整套流程,不仅仅是MVC,他们之间可以很方便的结合一起