SpringMVC執行原理

執行原理

一、使用配置的方式編寫程序

以前咱們使用註解的方式,如今使用配置的方式!java

一、建立maven項目

二、導入依賴

三、編寫web.xml

註冊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>

八、編寫咱們要操做業務Controller ,實現Controller接口;須要返回一個ModelAndView,裝數據,封視圖;

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;
    }
}

九、將本身的類交給SpringIOC容器,註冊bean

<!--id:請求的映射路徑-->
<bean id="/hello" class="com.star.controller.MyController"/>

十、寫跳轉的頁面hello.jsp

十一、配置Tomcat,啓動測試:

二、分析執行流程

一、DispatcherServlet表示前置控制器,是整個SpringMVC的控制中心,用戶發出請求,DispatcherServlet接收請求並攔截請求。spring

  • 咱們假設請求的url爲:http://localhost:8080/star/hello
  • 將url拆分爲三部分:
  • http://localhost:8080:服務器域名
  • /star:部署在服務器上的web站點
  • /hello:表示控制器
  • url就表示爲:請求位於服務器lcoalhost:8080上的SpringMVC站點的hello控制器。

二、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框架提供的技術,不須要開發者實現,虛線表示須要開發者實現。

相關文章
相關標籤/搜索