Spring MVC

一、  SpringMVC概述:

  SpringMVC是WEB层框架,是围绕 DispatcherServlet 而设计的;

  DispatcherServlet给处理程序分派请求,执行视图解析,并且处理语言环境和主题解析,此外还为上传文件提供支持。

二、SpringMVC优势:

(1)清晰的角色划分:

  1)前端控制器(DispatcherServlet)

  2)请求到处理器映射(HandlerMapping)

  3)处理器适配器(HandlerAdapter)

  4)视图解析器(ViewResolver)

  5)处理器或页面控制器(Controller)

  6)验证器( Validator)

  7)命令对象(Command  请求参数绑定到的对象就叫命令对象)

  8)表单对象(Form Object 提供给表单展示和提交到的对象就叫表单对象)

(2)分工明确,而且扩展点相当灵活,可以很容易扩展,虽然几乎不需要扩展;

(3)由于命令对象就是一个POJO,无需继承框架特定API,可以使用命令对象直接作为业务对象;

(4)和Spring 其他框架无缝集成,是其它Web框架所不具备的;

(5)可适配,通过HandlerAdapter可以支持任意的类作为处理器;

(6)可定制性,HandlerMapping、ViewResolver等能够非常简单的定制;

三、运行流程:

 

  1首先用户发送请求——>DispatcherServlet

  2DispatcherServlet——>HandlerMappingHandlerMapping将会把请求映射为HandlerExecutionChain对象(包含一个Handler处理器(页面控制器)对象、多个HandlerInterceptor拦截器)对象,通过这种策略模式,很容易添加新的映射策略;

  3DispatcherServlet——>HandlerAdapterHandlerAdapter将会把处理器包装为适配器,从而支持多种类型的处理器,即适配器设计模式的应用,从而很容易支持很多类型的处理器;

  4HandlerAdapter——>处理器功能处理方法的调用:HandlerAdapter将会根据适配的结果调用真正的处理器的功能处理方法,完成功能处理;并返回一个ModelAndView对象(包含模型数据、逻辑视图名);

  5ModelAndView的逻辑视图名——> ViewResolverViewResolver将把逻辑视图名解析为具体的View,通过这种策略模式,很容易更换其他视图技术;

  6View——>渲染:View会根据传进来的Model模型数据进行渲染,此处的Model实际是一个Map数据结构,因此很容易支持其他视图技术;

  7)返回控制权给DispatcherServlet由DispatcherServlet返回响应给用户,到此一个流程结束。

 四、使用示例:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-4.2.xsd
       http://www.springframework.org/schema/mvc
       http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd">
    <!--配置扫描器-->
    <context:component-scan base-package="com.qf"></context:component-scan>

    <!--配置视图解析器(InternalResourceViewResolver)-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/views/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>

</beans>
    @Controller
    public class SpringMVCHandler {
        @RequestMapping(value = "welcome")
        public String welcome(){
            return "success";
        }
}

 

 

posted @ 2019-08-11 01:18  开拖拉机的拉风少年  阅读(125)  评论(0编辑  收藏  举报