MVC是一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个组件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑,MVC分层有助于管理和架构复杂的应用程序
M:代表模型Model
模型就是数据,应用程序的核心。
V:代表视图View
回显数据的界面,例如JSP就是用来展示模型中的数据。
C:代表控制器Controller
控制器的作用就是根据入参,把不同的响应数据(Model),显示在不同的视图(View)上。
2、SpringMvc简介框架描述
SpringMVC是一种基于Java实现的MVC设计模式的请求驱动类型的轻量级Web框架,出自Spring框架全家桶,与Spring框架无缝整合,使用了MVC架构模式的思想,将Web层进行职责解耦。
框架优点
结构松散,几乎可以在SpringMVC中使用各类视图,各个模块分离而且耦合度非常低,且易于扩展。与Spring无缝集成,且简单,灵活,容易上手。
二、SpringMvc执行流程 1、流程图解 2、步骤描述(1)、发起请求到前端控制器DispatcherServlet;
(2)、前端控制器请求HandlerMapping查找,Handler可以根据xml配置、注解进行查找;
(3)、处理器映射器HandlerMapping向前端控制器返回Handler;
(4)、前端控制器调用处理器适配器去执行Handler;
(5)、处理器适配器去执行Handler ;
(6)、Handler执行完成给适配器返回ModelAndView ;
(7)、处理器适配器向前端控制器返回ModelAndView,ModelAndView是springmvc框架的一个底层对象,包括Model和view;
(8)、前端控制器请求视图解析器去进行视图解析,根据逻辑视图名解析成真正的视图 ;
(9)、视图解析器向前端控制器返回View ;
(10)、前端控制器进行视图渲染,视图渲染将模型数据(在ModelAndView对象中)填充到request域中;
(11)、前端控制器向用户响应结果 ;
3、核心组件前端控制器
DispatcherServlet:请求离开浏览器后,最先到达的就是DispatcherServlet,是整个流程控制的中心,作用接收请求,响应结果,相当于转发器,中央处理器。减少各个组件之间的耦合度。
处理器映射器
HandlerMapping:根据请求的url路由到指定接口,用户请求找到Handler处理器,springmvc提供不同类型映射器,例如:Xml配置方式,注解方式等。
处理器适配器
HandlerAdapter:按照特定规则去执行Handler,SpringMvc支持多种处理器,各种处理器中的处理方法各不相同,为了解决适应多种处理器,就出现了处理器适配器。
处理器
Handler:处理用户请求,涉及具体业务逻辑,需要程序员根据业务需求开发。编写Handler时按照HandlerAdapter的规则开发,这样适配器才可以正确执行Handler。
视图解析器
ViewResolver:负责将请求的响应结果生成View,根据逻辑视图名解析成物理视图名,就是具体页面地址,生成View视图对象,对View进行渲染,通过页面展示给用户。
视图
View:SpringMvc框架提供很多的View视图类型的支持,包括:jsp、freemarker、pdf等。通过页面标签或页面模版解析模型数据回显到页面,需要根据业务开发具体页面。
三、整合Spring框架配置 1、spring-mvc配置 <!-- 扫描文件 --> <context:component-scan base-package="com.spring.mvc.controller" /> <!-- MVC默认的注解映射的方式 --> <mvc:annotation-driven /> <mvc:default-servlet-handler/> <!-- 视图解析器 --> <bean> <property value="/WEB-INF/page/" /> <property value=".jsp" /> </bean> 2、Web.xml配置 <servlet> <servlet-name>spring-mvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring-mvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> 3、测试接口 @Controller public class HelloController { @RequestMapping("/getInfo") public @ResponseBody String getInfo (String name){ return name ; } } 4、常用注解说明@Controller
标记一个类是Handler,也就是开发的Controller,然后使用@RequestMapping或其他相关注解(@GetMapping、@PostMapping、@PutMapping、@DeleteMapping),用来关联请求和Controller方法之间的映射关系,这样的Controller 就可以被请求访问。
@RequestMapping
处理请求地址映射的注解,可作用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以类上标注地址作为父路径。
@requestParam