如何理解SpringMVC

一、SpringMVC简介

MVC是我们开发WEB应用程序的通用架构方式

如何理解SpringMVC_第1张图片

MVC的核心思想是业务数据抽取和业务数据呈现相分离。

MVC:M(Model)+V(View)+C(Controller)

M(模型层):业务数据的信息表示,通常是业务实体

V(视图层):为用户呈现数据的页面

C(控制层):调用业务逻辑产生合适的数据(Model),同时传递数据(Model)给视图层(View)呈现给用户

MVC:是一种架构模式,将业务逻辑和页面展示分离,使程序分层、分工合作,既相互独立,又协同合作。

二、SpringMVC核心组件

2.1、DispatcherServlet

前端控制器,核心

作用:接收请求,响应结果,相当于转发器,中央处理器,降低了组件之间的耦合性。

用户发送请求交给DispatcherServlet,DispatcherServlet是整个流程控制的中心,由它调用其他组件处理用户请求,分发到具体的对应Controller,从而获取到需要的业务数据Model,Model再通过DispatcherServlet传递给View完成页面呈现;DispatcherServlet的存在降低了组件的之间的耦合性。

2.2、HandlerMapping

处理器映射器

作用:根据请求的URL,找到对应的Handler,帮助DispatcherServlet找到对应的Controller

HandlerMapping负责根据用户请求找到Handler即处理器,SpringMVC提供了多种不同的映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等。

2.3、HandlerInterceptor

Handler执行前后拦截器

HandlerInterceptor是个接口,里面包含三个方法:preHandle、postHandle、afterCompletion

分别在Handler执行前、执行中、执行完成后执行的三个方法

2.4、HandlerExecutionChain

HandlerMapping返回给DispatcherServlet的执行链

HandlerMapping返回给DispatcherServlet的不光有Handler,还有HandlerInterceptor

preHandle——>ControllerMethod——>postHandle——>afterCompletion

如何理解SpringMVC_第2张图片

这个链如何实现的呢?使用了Java的反射机制reflection

2.5、HandlerAdapter

处理器适配器

作用:将各种Controller适配成DispatcherServlet可以使用的Handler,通过特定规则(HandlerAdapter要求的规则)去执行Handler

通过HandlerAdapter对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行。

2.6、Handler

处理器(需要工程师开发)

注意:编写Handler时需要HandlerAdapter的要求去做,这样HandlerAdapter才可以正确执行Handler

Handler是继DispatcherServlet前端控制器的后台控制器,在DispatcherServlet控制下对用户请求进行处理,Handler涉及业务需求,所以需要工程师针对用户需求进行开发,最终返回业务数据

2.7、ModelAndView

SpringMVC中对Model的一种表示形式

SpringMVC中有Model、Map,但是SpringMVC都会将其转化为ModelAndView,Model、Map都是ModelAndView的具体表现

如何理解SpringMVC_第3张图片

2.8、ViewResolver

视图解析器

作用:进行视图解析,根据逻辑视图名解析成真正的视图View

ViewResolver负责将处理结果生成View视图,ViewResolver首先根据逻辑视图名解析成具体的页面地址,然后对View进行渲染,将处理结果通过页面展示给用户;SpringMVC提供了很多类型View视图,包括:jstlView、freemarkerView、pdfView、jsp、html等。

2.9、View

视图(需要工程师开发jsp、html)

View是一个接口,实现类支持不同的类型(jsp、html、freemarker、pdf等)

如何理解SpringMVC_第4张图片

三、配置Maven环境变量

3.1、Maven介绍

pom:pom.xml配置文件,通过配置完成依赖关系

DependencyManagement:通过节点配置

3.2、Maven下载安装

3.2.1、Maven下载

http://maven.apache.org/download.cgi

如何理解SpringMVC_第5张图片

3.2.2、配置环境变量

添加M2_HOME:指向Maven解压后文件夹所在根目录

编辑Path:添加%M2_HOME%\bin;

如何理解SpringMVC_第6张图片

如何理解SpringMVC_第7张图片

3.2.3、配置Maven配置文件(本地仓库路径、镜像)

将Maven安装文件夹下conf文件夹中的settings.xml拷贝一份放在电脑home下的.m2文件夹中

如何理解SpringMVC_第8张图片

对本地home下.m2中的settings.xml进行修改:

(1)可以修改本地仓库的存储位置(可选),默认存储在home下.m2文件夹中:

如何理解SpringMVC_第9张图片

(2)可以修改中央仓库的访问路径,修改为英文的这个路径,可以加快访问速度,减小中央仓库压力:

如何理解SpringMVC_第10张图片

3.2.4、用Maven创建项目

(1)首先用Eclipse集成Maven,推荐使用4.3(Kepler)及以上版本Eclipse,因为自己集成了Maven插件m2e

(2)配置Eclipse使用刚刚下载的Maven,以及刚刚配置的settings.xml配置文件:

    在eclipse中选择Window-Preferences,弹出以下窗口,然后点击Installations,在右侧点击Add添加按钮:

如何理解SpringMVC_第11张图片

找到下载安装的Maven文件夹根目录,点击Finish:

如何理解SpringMVC_第12张图片

勾选刚刚添加的maven,点击Apply,最后点击OK,配置完成:

如何理解SpringMVC_第13张图片

(3)创建一个Maven项目:

Eclipse中左侧栏右键,选择New-Project

如何理解SpringMVC_第14张图片

选择Maven Project,点击Next:

如何理解SpringMVC_第15张图片

再次Next:

如何理解SpringMVC_第16张图片

选择一个符合类型的,点击Next:

如何理解SpringMVC_第17张图片

填写Group Id,Artifacted Id,Version,Package,点击Finish:

如何理解SpringMVC_第18张图片

(4)修改pom.xml


 
 	2.6
 	1.7.6
 	4.1.3.RELEASE
 
 
 
 
 	
 		
 			org.springframework
 			spring-framework-bom
 			${spring.version}
 			import
 		
 	
 
 
 
 
   
     junit
     junit
     3.8.1
     test
   
   
   
   	org.springframework
   	spring-webmvc
   	4.1.3.RELEASE
   
   
   
   	commons-lang
   	commons-lang
   	2.6
   
   
   
   	org.slf4j
   	slf4j-log4j12
   	1.7.6
   	
   		
   			org.slf4j
   			slf4j-api
   		
   	
   
   
 
 
 
 
 	
 		
 			org.eclipse.jetty
 			jetty-maven-plugin
 			9.2.2.v20140723
 		
 	
 

如果当前包本地仓库,不存在,可以点击项目,右键,选择Maven-Add Dependency

如何理解SpringMVC_第19张图片

填写Group Id, Artifacted Id, Version之后,点击OK,Maven就会自动从Maven仓库下载对应版本的jar包到本地仓库中:

如何理解SpringMVC_第20张图片

(5)配置WEB应用,修改web.xml



    
    
    
    
    
    
    	
    
    
    
    
    
    
    
    
    	
    	
    	
    
    
    
    	
    		
    			error
    			exception
    		
    	
    

(6)创建一个Controller,以及对应的页面,写个简单demo

写一个HelloMvcController类:

package com.ztl.springmvc.controller;
 
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
 
@Controller
@RequestMapping("/hello")
public class HelloMvcController {
	@RequestMapping("/sayhello")
	public String sayHello(){
		return "home";
	}	
}

通过pom.xml中配置的jetty插件来进行启动测试:

使用cmd命令行,找到项目地址,然后找到当前这个模块项目:

如何理解SpringMVC_第21张图片

当看见Started Jetty Server时,则代表启动完成了,可以在浏览器访问了

如何理解SpringMVC_第22张图片

在浏览器地址栏输入http://localhost:8080/hello/sayhello进行访问:

如何理解SpringMVC_第23张图片

以上就是如何理解SpringMVC的详细内容,更多关于SpringMVC的资料请关注脚本之家其它相关文章!

你可能感兴趣的:(如何理解SpringMVC)