首頁 > 軟體

SpringMVC設定與使用詳細介紹

2022-07-28 14:03:11

一、SpringMVC的使用

1、MVC模式

Spring mvc是基於Spring的一個模組,專門做web開發,可以理解為是Servlet的升級

在Spring MVC框架當中,Controller替代Servlet擔負控制器的職能,

**M:**指model:模型層,指工程當中的Java Bean,作用是處理資料

Java Bean分兩類:

一類是實體類Bean:專門儲存業務資料的

一類為業務處理Bean:指Servlet或Dao物件,專門處理業務邏輯和資料

V:View,檢視層指專案當中的html或jsp等頁面,作用是與使用者程序互動,展示資料

C:Contoller,控制層,指工程當中的servlet,作用是接受請求和響應資料

​ MVC思想不是那個語言所特有的設計模式,也不是web應用所特有的思想,而是一種規範。MVC思想將一個應用分成三個基本部分:Model(模型)、View(檢視)和Controller(控制器),這三個部分以最少的耦合協同工作,從而提高了應用的可延伸性和可維護性。他們三者的關係如下圖所示

2、具體的座標如下

<!--版本鎖定-->
<properties>
  <spring.version>5.0.2.RELEASE</spring.version>
</properties>
<dependencies>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>${spring.version}</version>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>${spring.version}</version>
  </dependency>
  <!--SpringMVC-->
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>${spring.version}</version>
  </dependency>
  <!--servlet API-->
  <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.5</version>
    <scope>provided</scope>
  </dependency>
  <dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.0</version>
    <scope>provided</scope>
  </dependency>
  <!--紀錄檔-->
  <dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.2.3</version>
  </dependency>
  <dependency>
    <groupId>org.thymeleaf</groupId>
    <artifactId>thymeleaf-spring4</artifactId>
    <version>3.0.9.RELEASE</version>
  </dependency>
</dependencies>

3、設定DispatcheServlet

​ Spring MVC是基於原生的servlet,通過強大的前端控制器DispatcheServlet,對請求和響應進行統一處理。

Spring MVC的本質就是一個servlet,是對原生的servlet進行了封裝。在以前我們瀏覽器的每一次請求都需要我們寫一個對應的servlet,現在我們只需要將瀏覽器的請求和響應交給DispatcheServlet進行統一的處理。

在web.xml組態檔中核心控制器DispatcherServlet

<!--在web.xml中設定Spring提供的過濾器類 -->
<filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <async-supported>true</async-supported>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<!--不攔截所有是html的頁面請求-->
<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.html</url-pattern>
</servlet-mapping>
<!--設定前端控制器,對瀏覽器傳送的請求進行統一處理-->
<servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!--載入springmvc.xml組態檔的位置和名稱,設定的是Spring設定-->
    <init-param>
        <!--contextConfigLocation:上下文設定路徑,固定值-->
        <param-name>contextConfigLocation</param-name>
        <!--classpath:類路徑,值得是Java和resources資料夾-->
        <!--springmvc.xml:指的是組態檔的名稱:需要設定springmvc.xml,在下面-->
        <param-value>classpath:springmvc.xml</param-value>
    </init-param>
    <!--設定啟動載入-->
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>
<!--開啟專案時開啟的頁面-->
<welcome-file-list>
    <welcome-file>/index.html</welcome-file>
</welcome-file-list>

4、編寫springmvc.xml的組態檔

<?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:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/mvc
       http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    <!--設定spring建立容器時要掃描的包-->
    <context:component-scan base-package="com"></context:component-scan>
    <!--處理對映器-->
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
    <!--處理器介面卡-->
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
    <!--設定檢視解析器-->
    <bean id="viewResolver" class="org.thymeleaf.spring4.view.ThymeleafViewResolver">
        <property name="order" value="1"/>
        <property name="characterEncoding" value="UTF-8"/>
        <property name="templateEngine" ref="templateEngine"/>
    </bean>
    <!-- templateEngine -->
    <bean id="templateEngine" class="org.thymeleaf.spring4.SpringTemplateEngine">
        <property name="templateResolver" ref="templateResolver"/>
    </bean>
    <bean id="templateResolver" class="org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver">
        <property name="prefix" value="/html/" />
        <property name="suffix" value=".html" />
        <property name="templateMode" value="HTML5"/>
    </bean>
    <!-- 設定spring開啟註解mvc的支援  預設就是開啟的 ,要想讓其他元件(不包含對映器、介面卡、處理器)生效就必須需要設定了-->
    <mvc:annotation-driven></mvc:annotation-driven>
</beans>

二、SpringMVC原理

1、SpringMVC中心控制器

Spring的web框架圍繞DispatcherServlet 【servlet排程】設計

DispatcherServlet的作用是將請求傳送到不同的處理器

2、入門案例的執行流程

  • 當啟動Tomcat伺服器的時候,因為設定了load-on-startup標籤,所以會建立DispatcherServlet物件,就會載入springmvc.xml組態檔
  • 開啟了註解掃描,那麼HelloController物件就會被建立
  • 從index.jsp傳送請求,請求會先到達DispatcherServlet核心控制器,根據設定@RequestMapping註解找到

執行的具體方法

  • 根據執行方法的返回值,再根據設定的檢視解析器,去指定的目錄下查詢指定名稱的JSP檔案
  • Tomcat伺服器渲染頁面,做出響應

​ SpringMVC官方提供圖形

到此這篇關於SpringMVC設定與使用詳細介紹的文章就介紹到這了,更多相關SpringMVC設定與使用內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com