1. 程式人生 > 實用技巧 >SpringMVC學習筆記(三)-SSM整合開發

SpringMVC學習筆記(三)-SSM整合開發

SpringMVC學習筆記(三)-SSM整合開發

攔截引數的配置
  • <url-pattern>/</url-pattern>:將對應攔截引數的請求交予指定的servlet處理

  • 當攔截引數為*.xx時,靜態資源等交予Tomcat處理,匹配字尾的交予DispatcherServlet處理

    • Tomcat的DefaultServlet,處理靜態資源及沒有被其他Servlet匹配的請求

      <servlet>
          <servlet-name>default</servlet-name>
          <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
          <init-param>
              <param-name>debug</param-name>
              <param-value>0</param-value>
          </init-param>
          <init-param>
              <param-name>listings</param-name>
              <param-value>false</param-value>
          </init-param>
          <load-on-startup>1</load-on-startup>
      </servlet>
      
      <servlet-mapping>
          <servlet-name>default</servlet-name>
          <url-pattern>/</url-pattern>
      </servlet-mapping>
      
  • 當攔截器引數設定為/時,DispatcherServlet將替代Tomcat的DefaultServlet,預設情況下js、圖片、html等靜態資源都沒有配置對應的控制器物件,導致不能正常訪問

  • 使用<mvc:default-servlet-handler />標籤後,SpringMVC將在容器中呼叫DefaultServletHttpRequestHandler將靜態資源的訪問交予伺服器預設的處理器處理,此標籤與@RequestMapping註解存在一定的衝突,需要加入註解驅動標籤<mvc:annotation-driven/>解決

  • 使用<mvc:resources mapping="/Xxx/Xxx" location="/Xxx/"/>

    標籤處理,此時框架將會呼叫ResourceHttpRequestHandler進行處理,mapping為訪問靜態資源的uri地址,location為靜態資源在專案中的位置,且由框架進行處理,不會呼叫Tomcat的DefaultServlet進行處理

    <!--可以使用萬用字元 ** -->
    <mvc:resources mapping="/resource/**" location="/resource/"/>
    
SSM整合開發
  • 由於SpringMVC本身就是Spring的一部分,其並不需要專門整合,SSM整合實質是將Mbatis整合入Spring,實現方式有兩種:1.基於XML配置方式;2.基於註解的方式

  • 將物件交予容器管理,存在的兩個容器分別為:1.Spring容器;2.SpringMVC容器(管理控制器物件)

  • Spring容器的建立

    • 容器物件是WebApplicationContext,將會讀取指定的檔案,將bean標籤與註解標識的物件放入容器

    • <listener>
          <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
      </listener>
      
  • SpringMVC容器的建立

    • 前端控制器DispatcherServlet將會呼叫Servlet的init()方法建立容器物件,容器物件是WebApplicationContext,將會讀取配置檔案,將控制權物件放入容器中進行管理

    • <servlet>
          <servlet-name>dispatcherServlet</servlet-name>
          <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
          <init-param>
              <param-name>contextConfigLocation</param-name>
              <param-value>classpath:springmvc.xml</param-value>
          </init-param>
          <load-on-startup>1</load-on-startup>
      </servlet>
      
  • SpringMVC是Spring的子容器,可以訪問父容器的Service或Dao物件