1. 程式人生 > 實用技巧 >SpringMVC學習筆記(一)-概述

SpringMVC學習筆記(一)-概述

SpringMVC學習筆記(一)-概述

  • SpringMVC也是一個容器,使用IOC管理介面層中的控制器物件,底層基於Servlet
核心Servlet--DispatcherServlet
  • DispatcherServlet是SpringMVC框架的一個Servlet物件,負責接受請求,響應處理結果,父類為HttpServlet,也稱為前端控制器(front controller)
  • 在SpringMVC中使用控制器物件代替Servlet行使其職能
  • 在servlet的init()方法中,建立SpringMVC中的容器物件
配置
  • Maven配置
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.3.1</version>
</dependency>
  • web.xml配置

    • 預設解析WEB-INF下的<servlet-name>-servlet.xml文件,如果沒有會報出初始化異常
    • 使用容器WebApplicationContext
    <servlet>
        <servlet-name>dispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--自定義SpringMVC配置檔案的路徑-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
        <!--設定伺服器啟動時即建立容器,數值越小建立物件時間越小-->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcherServlet</servlet-name>
        <!--將所有請求交予前端控制器處理,
            1.使用自定義拓展名,格式:*.xxx,例如:*.do、*.action、*.mvc等等,在存在設定的拓展名結尾時匹配成功,注意不能使用*.jsp。
            2.使用"/"	
        -->
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    
  • @Controller

    • 後端控制器,放置於類上,表示建立此類的物件並放置於SpringMVC容器中
  • @RequestMapping

    • 請求對映,放置於控制器類(表示類中方法的公共地址)上或者控制器方法上,作用類比於<url-pattern>
    • 控制器中的方法的形參由於設定請求引數,返回值表示本次請求的處理結果
    • 屬性:
      • value,表示請求的uri地址,唯一且以/開始,可配置多個請求攔截路徑
      • RequestMethod[] method,設定請求方式,符合指定的請求方式才處理
  • ModelAndView

    • 模型和檢視,代表本次請求的處理結果即資料和檢視
    • 方法:
      • mv.addObject(),設定資料,在框架的後續處理中呼叫request.setAttribute()
      • mv.setViewName(),設定檢視,值應是檢視的完整路徑,後續使用request.getRequestDispatcher()轉發
  • SpringMVC請求的處理過程

    • 發起請求-->Tomcat接受請求-->DispatcherServlet排程(配置了攔截路徑)-->分配控制器-->控制器方法處理返回結果

    • 將訪問頁面資源置於WEB-INF下用於控制非正常訪問

    • 配置檢視解析器用於簡化操作(可選):

      • <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <!--字首-->
            <property name="prefix" value="/WEB-INF/pages/"/>
            <!--字尾-->
            <property name="suffix" value=".jsp"/>
        </bean>
        
      • 若配置了檢視解析器,此時檢視的值設定為檢視的邏輯名