以前咱們使用註解的方式,如今使用配置的方式!java
註冊DispatcherServlet(和以前同樣)web
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd>
<bean id="beanNameUrlHandlerMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<bean id="simpleControllerHandlerAdapter" class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"/> <property name="suffix" value=".jsp"/> </bean>
package com.star.controller; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.Controller; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class MyController implements Controller { public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { //ModelAndView 模型和視圖 ModelAndView model = new ModelAndView(); //封裝對象,放在ModelAndView中。Model model.addObject("msg","Hello,SpringMVC!"); //封裝要跳轉的視圖,放在ModelAndView中 model.setViewName("hello"); // :/WEB-INF/view/hello.jsp return model; } }
<!--id:請求的映射路徑--> <bean id="/hello" class="com.star.controller.MyController"/>
一、DispatcherServlet表示前置控制器,是整個SpringMVC的控制中心,用戶發出請求,DispatcherServlet接收請求並攔截請求。spring
二、HandlerMapping爲處理器映射。DispatcherServlet調用HandlerMapping,HandlerMapping根據請求url查找Handler。tomcat
三、HandlerExecution表示具體的Handler,其主要做用是根據查找url查找控制器,好比上面的hello。服務器
四、HandlerExecution將解析後的信息傳遞給DispatcherServlet,如解析控制器映射等。mvc
五、HandlerAdapter表示處理器適配器,其按照特定的規則取執行Handler。app
六、Handler讓具體的Controller執行。框架
七、Controller將具體的執行信息返回給HandlerAdapter,如ModelAndView。jsp
八、HandlerAdapter將視圖邏輯名或模型傳遞給DispatcherServlet。maven
九、DispatcherServlet調用視圖解析器來解析HandlerAdapter傳遞的邏輯視圖名
十、視圖解析器將解析的邏輯視圖名傳給DispatcherServlet。
十一、DispatcherServlet根據視圖解析的視圖結果,調用具體的視圖。
十二、最終呈現給用戶。
下圖爲SpringMVC的一個較完整的流程圖,實線表示SpringMVC框架提供的技術,不須要開發者實現,虛線表示須要開發者實現。