①DispatcherServlet(請求分配器,在web.xml中配置)java
②HandlerMapping(請求映射器,eg:SimpleUrlHandlerMapping)web
③Controllerspring
④ViewResolver(View)(結果視圖解析器,eg:UrlBasedViewResolver)mvc
SpringMVC 的工做流程:app
某些請求(eg:以「.do」結尾的請求)經過①進行分發給③處理,分發時是經過②所配置的映射表進行的;③處理完以後,返回一個ModelAndView對象(其中包含了視圖邏輯字符串,相似於struts2),再通過④的解析(先後綴拼接),響應視圖。jsp
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> <!-- 對處理請求和controller進行映射 --> <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="start.do">startController</prop> </props> </property> </bean> <!-- controller的配置 --> <bean id="startController" class="com.yawn.controller.StartController"></bean> <!-- 對視圖分派器進行配置 --> <bean class="org.springframework.web.servlet.view.UrlBasedViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property> <property name="prefix" value="/WEB-INF/jsp/"></property> <property name="suffix" value=".jsp"></property> <!-- 最後展現的頁面是/WEB-INF/jsp/start.jsp --> </bean> </beans>
package com.yawn.controller; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.Controller; public class StartController implements Controller { @Override public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { System.out.println("----->>>>>>>>>>>>---"); return new ModelAndView("start"); } }