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>
评论