Spring MVC 核心类和接口

目录 


一、Spring MVC 核心类和接口


二、 Spring MVC 工作流程

 

 

一、Spring MVC 核心类和接口:
     1.DispatcherServlet接口  -- 前置控制器
 
     2.HandlerMapping接口 -- 处理请求的映射
        1).SimpleUrlHandlerMapping  通过配置文件,把一个URL映射到Controller
        2).DefaultAnnotationHandlerMapping  通过注解,把一个URL映射到Controller类上
 
     3.HandlerAdapter接口 -- 处理请求的映射
        1).AnnotationMethodHandlerAdapter类 通过注解,把一个URL映射到Controller类的方法上
 
     4.Controller接口 -- 控制器
        1).添加了 @Controller注解的类就可以担任控制器(Action)的职责,所以我们并没有用到这个接口
 
     5.HandlerInterceptor接口--拦截器
        注:自定义的实现这个接口,来完成拦截的器的工作。
 
     6.ViewResolver接口 --视图
        1).UrlBasedViewResolver类 通过配置文件,把一个视图名交给到一个View来处理
        2).InternalResourceViewResolver类  通过配置文件,把一个视图名交给到一个View来处理,并且加入了JSTL的支持
 
     7.HandlerExceptionResolver接口 --异常
        1).SimpleMappingExceptionResolver 异常处理类
 
 
 
 
 
二、Spring MVC 工作流程:

在最简单的SpringMVC应用程序中,控制器是唯一的你需要在java web部署描述文件(即Web.xml文件)中配置Servlet。Spring MVC控制器---通常称做DispatcherServlet,实现了前端控制器设计模式,并且每个web请求必须通过他以便它能够管理请求的生命周期。

当一个web请求发送到SpringMVC应用程序,dispatcher servlet首先接受请求,然后他组织哪些在 Spring Web应用程序上下文配置的(例如实际请求处理控制器和视图解析器)或者使用注解配置的组件,所有者这些都需要处理该请求。

 

1.HandlerMapping的使用主要分为两步:注册和查找。

        注册是根据配置文件中的配置将一个字符串和一个Controller类以<key,value>的形式存入到Map中,这个key就是对应的url中的某个字段。

        查找就是HandlerMapping根据url中的的某个字段,在Map中以这个字段为key值对应的Controller类,并将Controller类封装成一个HandlerExecutionChain对象,HandlerExecutionChain中除了有Controller对象外,还有一组拦截器。

 

2.Controller 是负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示

 

3. ViewResolver的作用就是通过解析MdoelAndView,将MdoelAndView中的逻辑视图名变为一个真正的View对象,并将MdoelAndView中的Model取出。

 

4.View的作用就是在获取到ViewResolve传来的View和Model,对Model进行渲染,通过View对象找到要展示给用户的物理视图,将渲染后的视图展示给用户。用很直白的话将就是将数据通过request存储起来,找到要展示给用户的页面,将这些数据放在页面中,并将页面呈现给用户。

 

在Spring3.0中定义一个控制器类,这个类必须标有@Controller注解。

当有@Controller注解的控制器收到一个请求时,它会寻找一个合适的handler方法去处理这个请求。这就需要控制器通过一个或多个handler映射去把每个请求映射到handler方法。为了这样做,一个控制器类的方法需要被@RequestMapping注解装饰,使它们成为handler方法。handler方法处理完请求后,它把控制权委托给视图名与handler方法返回值相同的视图。为了提供一个灵活的方法,一个handler方法的返回值并不代表一个视图的实现而是一个逻辑视图,即没有任何文件扩展名。你可以将这些逻辑视图映射到正确的实现,并将这些实现写入到上下文文件,这样你就可以轻松的更改视图层代码甚至不用修改请求handler类的代码。为一个逻辑名称匹配正确的文件是视图解析器的责任。一旦控制器类已将一个视图名称解析到一个视图实现。它会根据视图实现的设计来渲染对应对象。

posted on 2018-08-01 17:03  Luwak  阅读(504)  评论(0编辑  收藏  举报

导航