控制器接口Controller

23.2  Spring MVC的控制器

和Struts2一样,Spring MVC框架的控制器也用来建立视图层和模型层的联系,Spring的控制器可以通过继承一些接口来实现,下面进行讲解。

23.2.1  核心控制器DispatcherServlet

DispatcherServlet是Spring MVC的核心控制器,其作用相当于Struts2的FilterDispatcher,负责对客户端的请求进行分发,把满足特定格式的请求交给业务控制器去处理。

1.DispatcherServlet的配置

【示例23-4】下面通过一段代码来说明在web.xml中如何配置DispatcherServlet。

 
 
  1. <context-param>                 <!--配置contextConfigLocation 参数-->  
  2.     <param-name>contextConfigLocation</param-name>  
  3.     <param-value>/WEB-INF/applicationContext-jdbc.xml</param-value>  
  4. </context-param>  
  5. <servlet>                       <!--配置DispatcherServlet -->  
  6.     <servlet-name>petclinic</servlet-name>  
  7.     <servlet-class>org.springframework.web.servlet.
    DispatcherServlet</servlet-
    class>  
  8.     <load-on-startup>2</load-on-startup>  
  9. </servlet>  
  10. <servlet-mapping>               <!--为DispatcherServlet 建立映射-->  
  11.     <servlet-name>petclinic</servlet-name>  
  12.     <url-pattern>*.htm</url-pattern>  
  13. </servlet-mapping> 

上面的代码通过contextConfigLocation参数来定义Spring MVC的配置文件,这样当DispatcherServlet初始化时就会加载该文件中的配置信息。把DispatcherServlet的URL映射为*.htm,这样所有的以.htm结尾的请求都会被DispatcherServlet处理。

2.DispatcherServlet的工作流程

当DispatcherServlet接收到用户请求后,按照如下步骤进行处理。

(1)搜索封装配置文件信息的WebApplicationContext,并将它作为一个属性存储在请求对象中,这样DispatcherServlet就可以使用WebApplicationContext调用配置文件中定义的源。

(2)把本地化信息、主体信息也存储到请求对象上。

(3)根据配置文件搜索合适的业务处理器,并准备用于返回的ModelAndView。

(4)当业务处理器处理完业务逻辑后,根据WebApplicationContext中绑定的视图信息显示对应的视图。



23.2.2  控制器接口Controller

Controller接口是所有控制器接口的父类,所有Spring框架提供的控制器,以及所有用户自定义的控制器都得实现这个接口。

【示例23-5】该示例分析Controller.Java的源代码,如下所示。

 
 
  1. package org.springframework.web.servlet.mvc;  
  2. import Javax.servlet.http.HttpServletRequest;  
  3. import Javax.servlet.http.HttpServletResponse;  
  4. import org.springframework.web.servlet.ModelAndView;  
  5. public interface Controller {  
  6.     ModelAndView handleRequest(HttpServletRequest 
    request, HttpServletResponse  
  7.     response) throws Exception;  
可以看出,该接口的handleRequest(HttpServletRequest request, HttpServletResponse response)方法用来对用户的请求进行处理,所有的实现类都要重写这个方法,该方法对请求处理完后返回一个ModelAndView对象。 

猜你喜欢

转载自blog.csdn.net/liu4532617/article/details/9046101