SpringMVC入门

  • 前言
  • 一、MVC模式和SpringMVC工作原理
  • 1、MVC的模式和概念
  • 2、基于servlet的MVC模式
  • 二、SpringMVC的工作原理
  • 1.SpringMVC框架组成
  • 2.SpringMVC工作流程
  • 三、SpringMVC接口
  • 四、一个简单的SpringMVC实例创建
  • 1.创建web应用,web.xml配置
  • 2.spring-mvc.xml配置
  • 3.HelloController控制器的内容
  • 4. hello.jsp页面代码
  • 5. 最后结果
  • 总结

前言

本文重点讲解MVC的设计思想以及SpringMVC的工作原理。
首先要知道MVC思想的三个基本部分

MVC思想的三个基本部分

(1)

Model(模型)

(2)

View(视图)

(3)

Controller(控制器)

SpringMVC是应用框架,是由Springt提供的一个实现WebMVC设计模式的轻量级框架,降低耦合,且方便应用的扩展和维修。


一、MVC模式和SpringMVC工作原理

1、MVC的模式和概念

Spring mvc 实战 spring mvc实现_Spring mvc 实战


对于上面是三个模块的功能,下面做详细解释:

MVC

Web程序中的职责

模型

用于存储数据以及处理用户请求的业务逻辑

视图

向控制器提交数据,显示模型中的数据

控制器

根据视图提出的请求判断将请求和数据交给哪个模型处理,将处理后的结果交给哪个视图更新和显示

2、基于servlet的MVC模式

基于servlet的MVC模式实现如下
模型:一个或者多个JavaBean对象用于存储数据和处理业务逻辑。
视图:一个或者多个JSP页面,向控制器提交数据和为模型提供数据显示,JSP页面主要使用HTML标记和JavaBean标记显示数据。
控制器:一个或者多个Servlet对象,根据视图提交的请求进行控制,即将请求转发给处理业务逻辑的—>模型(一个或者多个JavaBean对象),并将处理结果存放到实体模型JavaBean中,输出给视图显示。

继续向下走,这样我们是不是就可以写出来他的流程图,如下:

Spring mvc 实战 spring mvc实现_servlet_02

二、SpringMVC的工作原理

1.SpringMVC框架组成

Spring框架主要由DispatcherServlet、处理器映射、控制器、视图解析器、视图组成

2.SpringMVC工作流程

  1. 客户端请求提交到DispatcherServlet;
  2. 由DispatcherServlet控制器寻找一个或者多个HandlerMapping找到处理请求的Controller;
  3. DispatcherServlet将请求提交到Controller;
  4. Controller调用业务逻辑处理后返回ModelAndView;
  5. DispatcherServlet寻找一个或者多个ViewResolver视图解析器,找到ModelAndView指定的视图;
  6. 视图负责将结果显示到客户端。

同样的接下来我们一样可以划出其流程图,如下:

Spring mvc 实战 spring mvc实现_servlet_03

三、SpringMVC接口

SpringMVC接口这里讲上图中用到的四个

SpringMVC接口

作用

DispatcherServlet

SpringMVC所有的请求都经过DispatcherServlet来统一分发给Controller,但在这之前,需要借助HandlerMapping定位到具体的Controller

HandlerMapping

负责完成客户请求到Controller的映射

Controller

处理用户请求,处理完之后将返回ModelAndView对象给DispatcherServlet 前段控制器

ViewResolver

视图解析器负责在Web应用中查找View对象,从而将相应结果渲染给客户

这里补充一下Controller中的知识:ModelAndView中包含了模型和视图。宏观上看,DispatcherServlet 是整个Web应用的控制器;微观上看,Controller是单个Http请求处理过程中的控制器,而ModelAndView是Http请求过程中返回的模型和视图。

四、一个简单的SpringMVC实例创建

1.创建web应用,web.xml配置

<!-- 配置核心控制器 -->
    <servlet>
        <servlet-name>dispatcherServlet</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>dispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

2.spring-mvc.xml配置

<bean id="helloController" class="com.cc.controller.HelloController" />
    <!-- 配置映射处理器 -->
        <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
          <property name="mappings">
            <props>
               <prop key="/hello">helloController</prop>
            </props>
          </property>
        </bean>
    <!-- 2.配置视图解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 2.1 页面前缀 -->
        <property name="prefix" value="/WEB-INF/"/>
        <!-- 2.2 页面后缀 -->
        <property name="suffix" value=".jsp"/>
    </bean>

3.HelloController控制器的内容

public class HelloController implements Controller {

    @Override
    public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {    
        return new ModelAndView("hello","message","浅聪");
    }

}

4. hello.jsp页面代码

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
你好
<h1>${message }</h1>
</body>
</html>

5. 最后结果

最后页面出现
------->你好,浅聪。四个字即为成功。

总结

本文简单的介绍了MVC的设计模式,详细讲解了SpringMVC的工作原理,最后简单的介绍了SpringMVC应用的开发步骤。

最后SpringMVC中无需编写自己的DispatcherServlet,传统的控制器类需要实现Controller接口,但是Spring2.5之后有了基于注解的控制器,很方便的。