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. mysql表结构的查询与修改

    MariaDB [test]> show create table bp \G; #查看bp表结构,id长度为20 *************************** 1. row **** ...

  2. vm如何安装xenserver

    xenserver下载链接 http://downloadns.citrix.com.edgesuite.net/12636/XenServer-7.2.0-install-cd.iso 安装过程和安 ...

  3. The key of real time embedded system

    对于实时嵌入式系统来说,最重要的是每一个进程所需时间的可检测性,可预测性.要不你的实时性是没有办法保证的.有些时候你对一些没有从事过嵌入式开发的人谈这个进程(TASK)设计是按8ms被调度一次,他们会 ...

  4. php创建桌面快捷方式实现方法

    http://blog.csdn.net/fdipzone/article/details/50423613

  5. 编写第一个python selenium-webdriver程序(二)

    上节介绍了如何搭建selenium 系统环境,那么本节来讲一下如何开始编写第一个自动化测试脚本. Selenium2.x 将浏览器原生的API封装成WebDriver API,可以直接操作浏览器页面里 ...

  6. JDK官网下载教程

    进入官网网址 https://www.oracle.com/index.html  登录成功后,即可进行下载! PS:新版谷歌浏览器可能会出现无法下载的问题,使用IE浏览器即可.

  7. WPF Demo19 命令、UC

    命令系统的基本元素和关系WPF命令系统的组成要素:A.命令(command):WPF命令实际上就是实习了ICommand接口的类.平时使用最多的就是RoutedCommand类.B.命令源(comma ...

  8. HTML5 上传前端html页面

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  9. java取余%练习

    package ltb6w1; import java.io.*; public class TestMod { String st; int c; InputStreamReader is=new ...

  10. mysql 数据库排序规则

    MySQL中的排序规则.在新建MySQL数据库或表的时候经常会选择字符集和排序规则.数据库用的字符集大家都知道是怎么回事,那排序规则是什么呢? 排序规则:是指对指定字符集下不同字符的比较规则.其特征有 ...