12.14易科

SpringMvc控制器

Springmvc将控制器分为了前端控制器(DispatcherServlet)和Controller,之所以叫他前端控制器是因为DispatcherServlet是整个应用的入口,所有请求都会经过这个Servlet,而且这个Servlet是SpringMvc框架为我们定义好的,整个框架的启动都由他来完成,处于最前端,所以称为前端控制器,而Controller则是我们自己定义的类,前端控制器根据配置,将请求可以“路由”到我们自己定义的控制器上的方法上,所以不管是前端控制器还是Controller都是再SpringMvc中‘c'的范畴中

DispatcherServlet

DispatcherServlet是从HttpServlet中继承而来,所以是一个标准的Servlet,再DIspatcherServlet的父类FrameworkServlet中定义了一个属性contextConfigLocation,他保存了SpringMvc的配置文件的位置,它的值可以再web.xml的Servlet配置中通过初始化参数init-param来配置

使用基于注解的控制器具有以下优点:

  • 一个控制器可以处理多个动作(而实现了Controller接口的一个控制器只能处理一个动作)。这就允许将相关的操作写在同一个控制器类中,从而减少应用程序中类的数量;
  • 基于注解的控制器的请求映射不需要存储在配置文件中。使用RequestMapping注释类型,可以对同一个方法进行请求处理;

Controller和RequestMapping注解类型是Spring MVC API最重要的两个注解类型,本节将会重点介绍着两个,并简要介绍一些其它不太流行的注解类型。

Controller注解类型

org.springframework.stereotype.Controller注解类型位于spring-context-x.x.x.RELEASE.jar包下,用于指示Spring类的实例是一个控制器。下面是一个带注解@Controller的例子:

package com.example.controller;

import org.springframework.stereotype.Controller;
...

@Controller
public class CustomerController {
    //request-handing methodshere
}

Spring使用扫描机制来找到应用程序中所有基于注解的控制器类。为了保证Spring能找到控制器,需要完成两件事情:

1)需要在Spring MVC的配置文件中声明,spring-context,如下所示:

<beans 
   ...
  xmlns:context="http://www.springframework.org/schema/context"
   ...>...    
</beans>

评论