SpringMVC—DispatcherServlet
一.概述
在Spring MVC(模型-视图-控制器)框架中,DispatcherServlet扮演调度器角色,所有HTTP请求和响应都围绕着DispatcherServlet。DispatcherServlet的请求处理工作流程如下:
1.服务器收到HTTP请求后,DispatcherServlet会查询HandlerMapping 以调用相应的Controller。
2.找到对应的Controller后,再调用基于所使用GET或POST方法相应的方法。在GET或POS对应的方法中处理完业务后,将视图(View)名称返回给DispatcherServlet。
3.DispatcherServlet得到视图名称,将从ViewResolver中获取该视图。
4.一旦视图完成,DispatcherServlet将模型数据传递给最终在浏览器上呈现的视图。
上述所有组件(即HandlerMapping,Controller和ViewResolver)都是WebApplicationContext w的一部分,它是ApplicationContext的扩展类。
二.相关配置
其实一个DispatcherServlet就是一个Servlet,所以要让浏览器请求的URL映射到对应的DispatcherServlet,必须完成web.xml配置,示例如下:
<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
在初始化HelloWorld时,框架将从位于应用程序的WebContent/WEB-INF中的名为HelloWorldservlet.xml的文件加载应用程序上下文。标记以.html结尾的所有HTTP请求都将由HelloWorld处理。上下文的配置文件也可以通过在web.xml文件中添加servlet侦听器ContextLoaderListener来自定义此文件名和位置,如下:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/HelloWorld.xml</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>