springMVC流程的學習和理解

先用一個圖來表示
基本流程圖這個網上很容易找到前端


基本流程圖web

圖片描述

1. 用戶發送請求到前端控制器(DispatcherServlet)spring

前端控制器是springMVC的重要部分,位於中心,提供整個框架訪問點,起到交換的做用,並且與Spring IoC容器集成。(IoC容器中包含了Bean,詳細IoC講解開濤的博客)數據庫

在實際開發中,只須要在web.xml中進行配置,其餘組件由框架提供,配置以下:mybatis

<servlet>
        <servlet-name>springMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
          <!--配置spring.xml做爲mvc的配置文件-->
          <param-name>contextConfigLocation</param-name>
          <param-value>classpath:spring/springmvc.xml </param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>springMVC</servlet-name>
        <url-pattern>*.action</url-pattern>
    </servlet-mapping>
經過過濾(根據URL)的方式進入前端控制器(init-param標籤中的contextConfigLocation會在後面說到)

2和3. 處理器映射器HandlerMappingmvc

根據請求的url查找Handler
HandlerMapping負責根據用戶請求找到Handler即處理器,springmvc提供了不一樣的映射器實現不一樣的映射方式,例如:配置文件方式,實現接口方式,註解方式等。在spring.xml中使用自動掃描的方式:app

<context:component-scan base-package="top.youzipi.test.controller"></context:component-scan>

而後返回前端控制器框架

4. 處理器適配器HandlerAdapterwebapp

須要controller繼承Controller或者@Controller,前端控制器會根據controller對應的controller類型來調用相應的HandlerAdapter來進行處理,不須要什麼操做jsp

5和6和7. 處理器Handler

就是編寫Controller類

```
    @Controller
    public class TestController {
        @Autowired
        private TestService testService;
        //信息查詢
        @RequestMapping("/test")
        public ModelAndView test() throws Exception{
            List<Test> testList=testService.findTestList(null);
            ModelAndView modelAndView=new ModelAndView();
            //至關於request中setAttribute
            modelAndView.addObject("testList",testList);
            modelAndView.setViewName("test");
    
            return modelAndView;
        }
    
    }
    ```

返回ModelAndView對象

8和9. 視圖解析器View resolver

進行視圖解析,根據邏輯視圖名解析成真正的視圖(view)。View Resolver負責將處理結果生成View視圖:View Resolver首先根據邏輯視圖名解析成物理視圖名即具體的頁面地址,再生成View視圖對象,最後對View進行渲染將處理結果經過頁面展現給用戶。

在spring.xml中配置

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/webapp/view/"/>
        <property name="suffix" value=".jsp" />
    </bean>

10和11. 視圖View

編寫JSP、excel、pdf等向用戶顯示的內容

其餘

contextConfigLocation實現ContextLoaderListener監聽器,在web.xml中定義

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring/applicationContext-*.xml</param-value>
  </context-param>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

ContextLoaderListener監聽器的做用就是啓動Web容器時,自動裝配ApplicationContext的配置信息。在web.xml配置這個監聽器,啓動容器時,就會默認執行它實現的方法。

在這裏使用這個監聽器的做用是方便加載Dao、Service、DataSource、Bean等,如applicationContext-dao.xml,applicationContext-service.xml。若是使用mybatis這些配置文件中能夠加入mapper.xml文件,提供數據庫操做


謝謝瀏覽~~~若是有不正確的地方歡迎指出~~~ ≥ω≤ ≥ω≤ ≥ω≤

相關文章
相關標籤/搜索