1、概述

  Spring MVC是目前最好的实现MVC设计模式的框架,是Spring框架的一个分支产品。以Spring IOC容器为基础,并利用容易的特性来简化它的配置。Spring MVC相当于Spring的一个子模块,可以很好地和Spring 结合起来进行开发,是Java Web开发者应该要掌握的框架。

2、Spring MVC 能干什么

  实现了MVC设计模式,该设计模式是一种常用的软件架构方式:以Controller(控制层)、Model(模型层)、View(试图层)三个模块分离的形式来组织代码。

  MVC流程:控制层接收到客户端请求,调用模型层生成业务数据,传递给试图层,将最终的业务数据和试图响应给客户端做展示。

3、Spring MVC实现原理

3.1、核心组件:

  • DispatcherServerlet:前端控制器,是整个流程控制的核心,控制其他组件的执行,统一调度,降低组件之间的耦合性,相当于总指挥。
  • Handler:处理器,完成具体业务逻辑,相当于Servlet 或 Action
  • HandlerMapper:DispatcherServlet接受到请求之后,通过HandlerMapper将不同的请求分发到不同的Handler
  • HandlerInterceptor:处理器兰截图,是一个接口,如果我们需要做一些兰截处理,可以来实现这个接口
  • HandlerExecutionChain:处理器执行链,包括两部分内容,Handler和HandlerInterceptor(系统会又一个默认的HandlerInterceptor,如果需要额外拦截处理,可以添加拦截器设置)
  • HandlerAdapter:处理器适配器,Handler执行业务发放之前,需要进行一系列的操作,包括表单数据的验证、数据类型的转换、将表单数据封装到JavaBean等,这一系列的操作,都是由HandlerAdapter来完成,DispatcherServlet通过HandlerAdapter执行不同的Handler
  • ModelAndView:装载了模型数据和视图信息,作为Handler的处理结果,返回给DispatcherServlet
  • ViewResolver:试图解析器,DispatcherServlet通过它将逻辑视图解析成物理视图,最终将渲染结果响应给客户端

3.2、SpringMVC实现流程及使用

  1. 客户端请求被DispatcherServlet(前端控制器)接收
  2. 根据HandlerMapper映射到Handler
  3. 生成Handler和HandlerInterceptor(如果由则生成)
  4. Handler和HandlerInterceptor以HandlerExecutionChain的形式一并返回给DispatcherServlet
  5. DispatcherServlet通过HandlerAdapter调用Handler的方法做业务逻辑处理
  6. 返回一个ModelAndView对象给DispatcherServlet
  7. DisptcherServlet将获取的ModelAndView对象传给ViewResolver试图解析器,将逻辑视图解析成物理视图View
  8. ViewResolver返回一个View给DispatcherServlet
  9. Dispatcher根据View进行视图渲染(将模型数据填充到视图中)
  10. DispatcherServlet将渲染后的视图响应给客户端

4、HelloWorld

4.1、创建Maven工程,导入spring mvc依赖

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-webmvc</artifactId>
  <version>4.3.22.RELEASE</version>
</dependency>

4.2、在web.xml中配置Spring MVC的DispatcherServlet

<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>
</servlet>
<servlet-mapping>
  <servlet-name>spring-mvc</servlet-name>
  <url-pattern>/</url-pattern>
</servlet-mapping>

4.3、创建spring-mvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

  <context:component-scan base-package="com.ourteam" />

  <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/" />
    <property name="suffix" value=".jsp" />
  </bean>

</beans>

自动扫描的类结合注解交给IOC容器来管理,视图解析器是Spring MVC底层的类,开发者只需要进行配置即可完成JSP页面的跳转。配置也很简单,记住一条:目标资源路径=前缀 + 返回值 + 后缀

比如,DispatcherServlet返回index,配置文件中前缀是/,后缀是.jsp,带入上述公式:

  目标资源路径:= /index.jsp。

4.4、创建Handler类

@RequestMapping("/")
@Controller
public class IndexController { @RequestMapping(value = "/index",method = RequestMethod.GET)
public String index(){
return "index";
}
}

4.5、启动tomcat,打开浏览器输入URL

  1. DispatacherServlet接收到URL请求的index,结合@RequestMapper("/index")注解将请求交给index业务方法
  2. 执行index业务方法,返回“index”字符串
  3. 结合spring-mvc.xml中的视图解析器配置,找到目标资源:/index.jsp,即index.jsp,将该jsp资源返回客户端完成响应

0000 - Spring MVC 原理以及helloworld的更多相关文章

  1. spring MVC原理

    spring MVC原理   Spring MVC工作流程图   图一   图二    Spring工作流程描述       1. 用户向服务器发送请求,请求被Spring 前端控制Servelt D ...

  2. Spring MVC 原理探秘 - 容器的创建过程

    1.简介 在上一篇文章中,我向大家介绍了 Spring MVC 是如何处理 HTTP 请求的.Spring MVC 可对外提供服务时,说明其已经处于了就绪状态.再次之前,Spring MVC 需要进行 ...

  3. Spring MVC 原理探秘 - 一个请求的旅行过程

    1.简介 在前面的文章中,我较为详细的分析了 Spring IOC 和 AOP 部分的源码,并写成了文章.为了让我的 Spring 源码分析系列文章更为丰富一些,所以从本篇文章开始,我将来向大家介绍一 ...

  4. Spring学习 6- Spring MVC (Spring MVC原理及配置详解)

    百度的面试官问:Web容器,Servlet容器,SpringMVC容器的区别: 我还写了个文章,说明web容器与servlet容器的联系,参考:servlet单实例多线程模式 这个文章有web容器与s ...

  5. Spring MVC原理及配置

    Spring MVC原理及配置 1. Spring MVC概述 Spring MVC是Spring提供的一个强大而灵活的web框架.借助于注解,Spring MVC提供了几乎是POJO的开发模式,使得 ...

  6. 基于XML配置的Spring MVC 简单的HelloWorld实例应用

    1.1 问题 使用Spring Web MVC构建helloworld Web应用案例. 1.2 方案 解决本案例的方案如下: 1. 创建Web工程,导入Spring Web MVC相关开发包. Sp ...

  7. spring MVC 初探 (HelloWorld)

    1.使用spring MVC 需要导入相关jar包 2.web.xml 启用spring MVC <servlet> <servlet-name>spring3mvc</ ...

  8. Spring MVC原理及配置详解

    Spring MVC概述: Spring MVC是Spring提供的一个强大而灵活的web框架.借助于注解,Spring MVC提供了几乎是POJO的开发模式,使得控制器的开发和测试更加简单.这些控制 ...

  9. Spring MVC原理及实例基础扫盲篇

    近期 项目中刚接触了SpringMVC,就把这几天看的跟实践的东西写出来吧. 一.首先,先来了解一下SpringMVC究竟是个什么样的框架? Spring Web MVC是一种基于Java的实现了We ...

随机推荐

  1. SpringJDBC——jdbcTemplate模板

    一.定义 Spring框架对jdbc进行了封装,提供的一个JDBCTemplated对象简化jdbc开发. 使用步骤 1 导包spring-beans-5.0.0-RELEASE.jar,spring ...

  2. 世界各个地区WIFI 2.4G及5G信道划分表(附无线通信频率分配表)

    参考:https://blog.csdn.net/dxpqxb/article/details/80969760 目前主流的无线WIFI网络设备802.11a/b/g/n/ac: 传统 802.11 ...

  3. 项目中更新pip 问题。更新后还是老版本

    (venv) E:\renyuwang\venv\Scripts>python -m pip install --upgrade pipRequirement already up-to-dat ...

  4. lch 儿童围棋课堂 初级篇1 ( (李昌镐 著))

    第1章 常用术语 第2章 吃子 第3章 死活:死活题初步 第4章 劫争 第5章 中盘 第6章 官子 第7章 形势判断 第8章 对杀技巧 第9章 手筋 第1章 常用术语 一 镇 在对方棋子上方隔一路落下 ...

  5. C#中如何实现json转化时只处理部分属性

    把对象转化为json字符串,很常用,但如果因为现在大部分项目都是用了ORM映射,导致一个对象的属性特别多,如果前台只需要部分属性如何实现? 当然最简单是所有属性都json化,前台只处理需要的属性,多余 ...

  6. mysql之 sysbench0.4.12数据库性能测试

    1. 常用选项 在Shell中运行以下命令便可得到sysbench的常用选项信息: sysbench --help 上述命令的输出信息如下图所示: 1.1 使用语法 使用sysbench时,可以通过以 ...

  7. 简单的user-based协同过滤算法示例代码

    #构造一份打分数据集1 users = {"小明": {"中国合伙人": 5.0, "太平轮": 3.0, "荒野猎人" ...

  8. Centos Java环境(转)

    https://jingyan.baidu.com/article/d7130635e6118213fdf47589.htm 解压jdk的安装包.   将解压后的文件夹重命名,便于后续操作(非必需) ...

  9. C# 打印、输入和for循环的使用

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  10. 深入理解ASP.NET MVC(7)

    系列目录 Action的定位 再次回到Controller的ExecuteCore方法,回到action调用的入口: 1 if (!ActionInvoker.InvokeAction(Control ...