?一、SpringMVC 簡介
1.1 什么是 MVC?
MVC 是一種軟件架構的思想,將軟件按照模型、視圖、控制器來劃分
1.M:Model
模型層,指工程中的 JavaBean ,作用是處理數據
JavaBean 分為兩類
- 實體類Bean:專門存儲業務數據的,如 Student、User等
- 業務處理Bean:指 Service 或 Dao 對象,專門用于處理業務邏輯和數據訪問
2.V:View
視圖層,指工程中的html 或 jsp 等頁面,作用是與用戶進行交互,展示數據
3.C:Controller
控制層,指工程中的 servlet ,作用是接收請求和響應瀏覽器
4.MVC 的工作流程
用戶通過視圖層發送請求到服務器,
在服務器中請求被 Controller 接收 ,
Controller 調用相應的 Model 層處理請求,
處理完畢將結果返回 Controller,
Controller 再根據請求處理的結果找到相應的 View 視圖,渲染數據后最終響應給瀏覽器
1.2 什么是 SpringMVC
SpringMVC 是 Spring 的一個后續產品,是 Spring 的一個子項目。
SpringMVC 是 Spring 為表述層開發提供的一整套完備的解決方案。在表述層框架歷經 Strust、WebWork、Strust2 等諸多產品的歷代更迭之后,目前業界普遍選擇了 SpringMVC 作為 Java EE 項目表述層開發的首選方案。
注:三層架構分為表述層(或表示層)、業務邏輯層、數據訪問層,表述層表示前臺頁面和后臺 servelt
1.3 SpringMVC 的特點
二、HelloWorld
2.1 開發環境
IDE:idea
構建工具:maven
服務器:tomcat
Spring版本:6.1.4
2.2 創建 maven 工程
1. 添加 web 模塊
2.打包方式:war
3.引入依賴
tomcat 自帶 ServletAPI和JSPAPI?
視圖技術用到的是:Thymeleaf
<dependencies><!-- SpringMVC--><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>6.1.4</version></dependency><!-- 日志 --><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.4.7</version></dependency><!-- ServletAPI --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency><!-- Spring5 和 Thymeleaf整合包--><dependency><groupId>org.thymeleaf</groupId><artifactId>thymeleaf-spring5</artifactId><version>3.0.10.RELEASE</version></dependency></dependencies>
2.3 配置 web.xml
框架就是:配置文件+jar包
原因:SpringMVC 基于原生的Servlet,通過了功能強大的前端控制器DispatcherServlet,對請求和響應進行統一處理
注冊 SpringMVC 的前端控制器 DispatcherServlet
1. 默認配置方式(位置、名稱默認)
此配置作用下,SpringMVC的配置文件默認位于 WEB-INF 下,默認名稱為<servlet-name>-servlet.xml,例如,如下配置所對應SpringMVC 的配置文件位于 WEB-INF 下,文件名為 SpringMVC-servlet.xml
<!--配置SpringMVC的前端控制器,對瀏覽器發送的請求進行統一處理--><servlet><servlet-name>springMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class></servlet><servlet-mapping><servlet-name>springMVC</servlet-name><!--設置sprigMVC的核心控制器所能處理的請求請求路徑/所匹配的的請求可以是/login或.html或.js或.css方式的請求路徑但是/不能匹配.jsp請求路徑的請求.jsp本質是servlet,它需要我們服務器里面特定的servlet來進行處理的/* 表示所有請求,包括.jsp的請求--><url-pattern>/</url-pattern></servlet-mapping>
?
2. 擴展配置方式(?用的最多)
Maven工程的所有的Spring配置文件放的位置是:resources
可通過init-param標簽設置 SpringMVC 配置 文件的位置和名稱,通過load-on-startup 標簽設置 SpringMVC 前端控制器 DispatcherServlet 的初始化時間
web.xml
<!--配置SpringMVC的前端控制器,對瀏覽器發送的請求進行統一處理--><servlet><servlet-name>springMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!--配置SpringMVC配置文件的位置和名稱--><!--初始化配置--><init-param><!--contextConfigLocation 為固定值 --><param-name>contextConfigLocation</param-name><!--使用classpath:表示從類路徑查找配置文件,例如maven工程中的src/main/resources--><param-value>classpath:springMVC.xml</param-value></init-param><!--作為框架的核心組件,在啟動過程中有大量的初始化操作要做而這些操作放在第一次請求時才執行會嚴重影響訪問速度因此需要此標簽將啟動控制DispatcherServlet的初始化時間提到服務器啟動時--><!--將SpringMVC的前端控制器 DispatcherServlet初始化時間提前到服務器啟動時--><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>springMVC</servlet-name><!--設置sprigMVC的核心控制器所能處理的請求請求路徑/所匹配的的請求可以是/login或.html或.js或.css方式的請求路徑但是/不能匹配.jsp請求路徑的請求.jsp本質是servlet,它需要我們服務器里面特定的servlet來進行處理的/* 表示所有請求,包括.jsp的請求--><url-pattern>/</url-pattern></servlet-mapping>
2.4 創建請求控制器
2.5 創建 SpringMVC的配置文件
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"xsi:schemaLocation="http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><!--掃描組件--><context:component-scan base-package="com.atguigu.mvc.controller"></context:component-scan><!--配置Thymeleaf視圖解析器--><bean id="viewResolver" class="org.thymeleaf.spring5.view.ThymeleafViewResolver"><property name="order" value="1"/><property name="characterEncoding" value="UTF-8"/><property name="templateEngine"><bean class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver"><!--視圖前綴--><property name="prefix" value="/WEB-INF/templates/"/><!--視圖后綴--><property name="suffix" value=".html"/><property name="templateMode" value="HTML5"/><property name="characterEncoding" value="UTF-8"/></bean></property></bean></beans>
2.6 測試HelloWorld
1. 實現對首頁的訪問
1.1創建tomcat 服務器
?
2. 通過超鏈接跳轉到指定頁面
在主頁index.html中設置超鏈接