ishowcode.eth

ishowcode.eth

区块链小白

Springmvc基礎

Springmvc 基礎#

  • 【應用】能夠獨立完成 springmvc 的入門案例
  • 【應用】能夠說出 springmvc 的執行流程
  • 【應用】能夠熟悉 springmvc 的常用組件

1、SpringMVC 的簡介#

1.1 SpringMVC 概述#

SpringMVC 是一種基於 Java 的實現 MVC 設計模型的請求驅動類型的輕量級 Web 框架,屬於 SpringFrameWork 的後續產品,已經融合在 Spring Web Flow 中。

SpringMVC 已經成為目前最主流的 MVC 框架之一,並且隨著 Spring3.0 的發布,全面超越 Struts2,成為最優秀的 MVC 框架。它通過一套註解,讓一個簡單的 Java 類成為處理請求的控制器,而無須實現任何接口。同時它還支持 RESTful 編程風格的請求。

1.2 Springmvc 處理流程#

在這裡插入圖片描述

1.3 SpringMVC 快速入門#

需求:客戶端發起請求,伺服器端接收請求,執行邏輯並進行視圖跳轉。

開發步驟

①導入 SpringMVC 相關坐標
②配置 SpringMVC 核心控制器 DispathcerServlet
③創建 Controller 類和視圖頁面
④使用註解配置 Controller 類中業務方法的映射地址
⑤配置 SpringMVC 核心文件 spring-mvc.xml
⑥客戶端發起請求測試

代碼實現
①導入 Spring 和 SpringMVC 的坐標、導入 Servlet 和 Jsp 的坐標

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring‐context</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring‐test</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring‐jdbc</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring‐tx</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
<!‐‐springmvc相關‐‐>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring‐web</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring‐webmvc</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
<!‐‐數據源相關‐‐>
<!‐‐ Druid連接池 ‐‐>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
<!‐‐ mysql驅動 ‐‐>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql‐connector‐java</artifactId>
<version>5.1.39</version>
</dependency>
<!‐‐servlet相關‐‐>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet‐api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp‐api</artifactId>
<version>2.2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>

②在 web.xml 配置 SpringMVC 的核心控制器

<!‐‐配置springmvc前端控制器 ‐‐>
<servlet>
<servlet‐name>springmvc</servlet‐name>
<servlet‐class>org.springframework.web.servlet.DispatcherServlet</servlet‐class>
<!‐‐加載springmvc配置文件‐‐>
<init‐param>
<param‐name>contextConfigLocation</param‐name>
<param‐value>classpath:spring‐mvc.xml</param‐value>
</init‐param>
<load‐on‐startup>1</load‐on‐startup>
</servlet>
<servlet‐mapping>
<servlet‐name>springmvc</servlet‐name>
<!‐‐
*.action 只處理 後綴為.action的請求
/* 攔截所有請求 jsp 等所有靜態資料
/ 除了 jsp 其他請求都攔截 建議配置 /
‐‐>
<url‐pattern>/</url‐pattern>
</servlet‐mapping>

③創建 Controller 和業務方法

@Controller
public class UserController {
@RequestMapping("/quick")
public String list(){
System.out.println("我執行了");
return "success.jsp";
}
}

③創建視圖頁面 success.jsp

<%@ page contentType="text/html;charset=UTF‐8" language="java" %>
<html>
<head>
<title>標題</title>
</head>
<body>
<h1>hello,springmvc!!</h1>
</body>
</html>

④配置註解

@Controller
public class UserController {
@RequestMapping("/quick")
public String list(){
System.out.println("我執行了");
return "success.jsp";
}
}

⑤創建 spring-mvc.xml

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema‐instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring‐beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring‐mvc.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring‐context.xsd">
<!‐‐配置註解掃描‐‐>
<context:component‐scan base‐package="com.bailiban.controller/>
</beans>

⑥訪問測試地址

http://localhost:8080/quick

控制台打印

在這裡插入圖片描述

頁面顯示

在這裡插入圖片描述

1.4 知識要點#

SpringMVC 的開發步驟
①導入 SpringMVC 相關坐標
②配置 SpringMVC 核心控制器 DispathcerServlet
③創建 Controller 類和視圖頁面
④使用註解配置 Controller 類中業務方法的映射地址
⑤配置 SpringMVC 核心文件 spring-mvc.xml
⑥客戶端發起請求測試

2、SpringMVC 的組件解析#

2.1 SpringMVC 的執行流程#

在這裡插入圖片描述

①用戶發送請求至前端控制器 DispatcherServlet。
②DispatcherServlet 收到請求調用 HandlerMapping 處理器映射器。
③處理器映射器找到具體的處理器 (可以根據 xml 配置、註解進行查找),生成處理器對象及處理器攔截器 (如果有則生成) 一並返回給 DispatcherServlet。
④DispatcherServlet 調用 HandlerAdapter 處理器適配器。
⑤HandlerAdapter 經過適配調用具體的處理器 (Controller,也叫後端控制器)。
⑥Controller 執行完成返回 ModelAndView。
⑦HandlerAdapter 將 controller 執行結果 ModelAndView 返回給 DispatcherServlet。
⑧DispatcherServlet 將 ModelAndView 傳給 ViewReslover 視圖解析器。
⑨ViewReslover 解析後返回具體 View。
⑩DispatcherServlet 根據 View 進行渲染視圖(即將模型數據填充至視圖中)。DispatcherServlet 響應用戶

2.2 SpringMVC 組件解析#

  1. 前端控制器:DispatcherServlet

    用戶請求到達前端控制器,它就相當於 MVC 模式中的 C,DispatcherServlet 是整個流程控制的中心,由
    它調用其它組件處理用戶的請求,DispatcherServlet 的存在降低了組件之間的耦合性。

  2. 處理器映射器:HandlerMapping

    HandlerMapping 負責根據用戶請求找到 Handler 即處理器,SpringMVC 提供了不同的映射器實現不同的
    映射方式,例如:配置文件方式,實現接口方式,註解方式等。

  3. 處理器適配器:HandlerAdapter

    通過 HandlerAdapter 對處理器進行執行,這是適配器模式的應用,通過擴展適配器可以對更多類型的處理

    器進行執行。

  4. 處理器:Handler

    它就是我們開發中要編寫的具體業務控制器。由 DispatcherServlet 把用戶請求轉發到 Handler。由
    Handler 對具體的用戶請求進行處理。

  5. 視圖解析器:View Resolver

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

  6. 視圖:View

    SpringMVC 框架提供了很多的 View 視圖類型的支持,包括:jstlView、freemarkerView、pdfView 等。最常用的視圖就是 jsp。一般情況下需要通過頁面標籤或頁面模板技術將模型數據通過頁面展示給用戶,需要由程序員根據業務需求開發具體的頁面。

說明:在springmvc的各個組件中,處理器映射器、處理器適配器、視圖解析器稱為springmvc的三大組件。
需要用戶開發的組件有handler、view

2.3 默認加載的組件#

我們沒有做任何配置,就可以使用這些組件

因為框架已經默認加載這些組件了,配置文件位置如下圖:

在這裡插入圖片描述

2.4 註解驅動#

直接配置處理器映射器和處理器適配器比較麻煩,可以使用註解驅動來加載。

SpringMVC 使用

<!‐‐ 註解驅動 ‐‐>
<mvc:annotation‐driven />

自動加載 RequestMappingHandlerMapping RequestMappingHandlerAdapter可以在springmvc.xml配置文件中使用<mvc:annotation-driven /> 替代默認的註解處理器和適配器的配置。

2.5 SpringMVC 的視圖解析器配置#

SpringMVC 有默認組件配置,默認組件都是 DispatcherServlet.properties 配置文件中配置的,該文件中配置了默認的視圖解析器,如下:

org.springframework.web.servlet.ViewResolver=org.springframework.web.servlet.view.InternalResourceViewResolver

翻看該解析器源碼,可以看到該解析器的默認設置,如下:

REDIRECT_URL_PREFIX = "redirect:" ‐‐重定向前綴
FORWARD_URL_PREFIX = "forward:" ‐‐轉發前綴(默認值)
prefix = ""; ‐‐視圖名稱前綴
suffix = ""; ‐‐視圖名稱後綴

開發中我們一般將視圖放在 WEB-INF 目錄,可以通過屬性注入的方式修改視圖的的前後綴,方便我們開發

<!‐‐配置視圖解析器‐‐>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
<property name="prefix" value="/WEB‐INF/jsp/" ></property>
<property name="suffix" value=".jsp"></property>
</bean>

2.6 SpringMVC 註解解析#

@RequestMapping

作用:用於建立請求 URL 和處理請求方法之間的對應關係
位置:
類上,請求 URL 的第一级訪問目錄。此處不寫的話,就相當於應用的根目錄
方法上,請求 URL 的第二級訪問目錄,與類上的使用 @ReqquestMapping 標註的一级目錄一起組成訪問虛擬路徑
屬性:
value:用於指定請求的 URL。它和 path 屬性的作用是一樣的
method:用於指定請求的方式
params:用於指定限制請求參數的條件。它支持簡單的表達式。要求請求參數的 key 和 value 必須和配置的一模一樣
例如:

params = {"accountName"},表示請求參數必須有 accountName
params = {"moeny!100"},表示請求參數中 money 不能是 100

2.7 知識要點#

SpringMVC 的相關組件

前端控制器:DispatcherServlet
處理器映射器:HandlerMapping
處理器適配器:HandlerAdapter
處理器:Handler
視圖解析器:ViewResolver
視圖:View

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。