天天看点

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应用程序上下文配置的(例如实际请求处理控制器和视图解析器)或者使用注解配置的组件,所有者这些都需要处理该请求。

Spring MVC 核心类和接口

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

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

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

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

  1. 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类的代码。为一个逻辑名称匹配正确的文件是视图解析器的责任。一旦控制器类已将一个视图名称解析到一个视图实现。它会根据视图实现的设计来渲染对应对象。