前言
為了鞏固所學(xué)的知識,作者嘗試著開始發(fā)布一些學(xué)習(xí)筆記類的博客,方便日后回顧。當然,如果能幫到一些萌新進行新技術(shù)的學(xué)習(xí)那也是極好的。作者菜菜一枚,文章中如果有記錄錯誤,歡迎讀者朋友們批評指正。
(博客的參考源碼可以在我主頁的資源里找到,如果在學(xué)習(xí)的過程中有什么疑問歡迎大家在評論區(qū)向我提出)
發(fā)現(xiàn)寶藏
前些天發(fā)現(xiàn)了一個巨牛的人工智能學(xué)習(xí)網(wǎng)站,通俗易懂,風(fēng)趣幽默,忍不住分享一下給大家。【寶藏入口】。
一、初識SpringMVC
1.認識SpringMVC
- SpringMVC是什么
Spring MVC屬于SpringFrameWork的后續(xù)產(chǎn)品,已經(jīng)融合在Spring Web Flow里面。Spring 框架提供了構(gòu)建 Web 應(yīng)用程序的全功能 MVC 模塊。使用 Spring 可插入的 MVC 架構(gòu),從而在使用Spring進行WEB開發(fā)時,可以選擇使用Spring的Spring MVC框架或集成其他MVC開發(fā)框架。
- SpringMVC的優(yōu)點
- SpringMVC框架提供了一整套完善的組件。
不同于以前框架只提供接口,然后讓使用者自己根據(jù)接口寫實現(xiàn)類來實現(xiàn)功能,SpringMVC提供了一整套完善的組件,可以直接使用。這就相當于以前的框架只給你提供設(shè)計圖紙,你需要根據(jù)設(shè)計圖紙自己把工具造出來,而現(xiàn)在SpringMVC直接給你一套現(xiàn)成的工具箱,里面有你用得到的各種工具。而且使用SpringMVC框架提供這些工具也巨簡單,通過一些簡單的注解就搞定了,不需要編寫繁瑣冗長的代碼,簡直比夏天喝雪碧還要爽。
- SpringMVC是以強大的Spring容器為基礎(chǔ)的框架。
如果同學(xué)你使用過Spring容器,那你一定知道Spring容器的對象托管功能有多么的好用。它不需要你自己去創(chuàng)建和釋放對象,Spring容器幫你全搞定! 同樣地,能夠放入Spring容器里面的這個SpringMVC工具箱,里面各種工具類的管理也是不需要操心的。而這省心省力的優(yōu)點,是其他框架都沒有的。
- 框架的配置簡單又不失靈活性.
SpringMVC框架的常用配置項就已經(jīng)涵蓋了項目中80%的配置需求,簡單的項目甚至可以做到零配置,拿過來就用。
- 代碼的可重用性很高。
翻譯成大白話就是,一個成熟的,上線穩(wěn)定運行過的SpringMVC項目,經(jīng)過簡單修改,甚至不用修改,就可以作為另一個新項目開發(fā)的基礎(chǔ)。這樣能在開發(fā)新項目時省很多力氣。
- 可擴展性好。
如果SpringMVC框架提供的工具不能100%滿足你的需求,你需要定制開發(fā),SpringMVC框架同樣也提供了相應(yīng)的接口,可以進行工具的升級。這樣你在遇到強力精英怪的時候,照樣能用SpringMVC框架打敗它。
- SpringMVC三層架構(gòu)
Spring web MVC 框架提供了模型(Model)- 視圖(View)- 控制(Controller)的體系結(jié)構(gòu)和可以用來開發(fā)靈活、松散耦合的 web 應(yīng)用程序的組件。MVC 模式導(dǎo)致了應(yīng)用程序的不同方面(輸入邏輯、業(yè)務(wù)邏輯和 UI 邏輯)的分離,同時提供了在這些元素之間的松散耦合。
模型封裝了應(yīng)用程序數(shù)據(jù),并且通常它們由 POJO 組成。
視圖主要用于呈現(xiàn)模型數(shù)據(jù),并且通常它生成客戶端的瀏覽器可以解釋的 HTML 輸出。
控制器主要用于處理用戶請求,并且構(gòu)建合適的模型并將其傳遞到視圖呈現(xiàn)。
- 學(xué)習(xí)目標
2.SpringMVC入門案例
- 創(chuàng)建maven模塊,選擇webapp開發(fā)模板(Archetype)
2.右鍵打開模塊設(shè)置,創(chuàng)建一個目錄java,標記為Source源碼,并將Language level等級設(shè)置成8
- 在pom.xml配置文件中導(dǎo)入SpringMVC以及Servlet坐標
(此處先將plugins中的插件都先刪除)
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>
- 創(chuàng)建SpringMVC控制器類
//定義表現(xiàn)層控制器bean
@Controller
public class UserController {
//設(shè)置映射路徑為/save,即外部訪問路徑
@RequestMapping("/save")
//設(shè)置當前操作返回結(jié)果為指定json數(shù)據(jù)(本質(zhì)上是一個字符串信息)
@ResponseBody
public String save(){
System.out.println("user save ...");
return "{'info':'springmvc'}";
}
}
- 初始化SpringMVC環(huán)境(同Spring環(huán)境),設(shè)定SpringMVC加載對應(yīng)的bean
//springmvc配置類,本質(zhì)上還是一個spring配置類
@Configuration
@ComponentScan("org.example.controller")
public class SpringMvcConfig {
}
- 初始化Servlet容器,加載SpringMVC環(huán)境,并設(shè)置SpringMVC技術(shù)處理的請求
//web容器配置類
public class ServletContainersInitConfig extends AbstractDispatcherServletInitializer {
//加載springmvc配置類,產(chǎn)生springmvc容器(本質(zhì)還是spring容器)
protected WebApplicationContext createServletApplicationContext() {
//初始化WebApplicationContext對象
AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
//加載指定配置類
ctx.register(SpringMvcConfig.class);
return ctx;
}
//設(shè)置由springmvc控制器處理的請求映射路徑
protected String[] getServletMappings() {
return new String[]{"/"};
}
//加載spring配置類
protected WebApplicationContext createRootApplicationContext() {
return null;
}
}
- 在pom.xml中添加tomcat插件,配置端口號為80
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.1</version>
<configuration>
<port>80</port>
<path>/</path>
</configuration>
</plugin>
- 啟動服務(wù)器類型選擇maven,運行命令選tomcat-run
- 運行結(jié)果
3.SpringMVC入門編碼的一般步驟
- 使用SpringMVC技術(shù)需要先導(dǎo)入SpringMVC坐標與Servlet坐標
- 創(chuàng)建SpringMVC控制器類(等同于Servlet功能)
- 初始化SpringMVC環(huán)境(同Spring環(huán)境),設(shè)定SpringMVC加載對應(yīng)的bean
- 初始化Servlet容器,加載SpringMVC環(huán)境,并設(shè)置SpringMVC技術(shù)處理的請求
4.入門案例涉及的知識點
- @Controller注解
名稱:@Controller
類型:類注解
位置:SpringMVC控制器類定義上方
作用:設(shè)定SpringMVC的核心控制器bean
范例:如下
- @ResponseBody注解
名稱:@ReaponseBody
類型:方法注解
位置:SpringMVC控制器類定義上方
作用:設(shè)置當前控制器方法響應(yīng)內(nèi)容為當前返回值,無懈解析
范例:如下
- SpringMVC入門程序開發(fā)總結(jié)(1+N)
- 一次性工作
1.創(chuàng)建工程,設(shè)置服務(wù)器,加載工程導(dǎo)入坐標
2.創(chuàng)建web容器啟動類,加載SpringMVC配置,并設(shè)置SpringMVC請求攔截路徑
3.SpringMVC核心配置類(設(shè)置配置類,掃描controller包,加載Controller控制器bean)
- 多次性工作
1.定義處理請求的控制器類
2.定義處理請求的控制器方法,并配置映射路徑(@RequestMapping)與返回json數(shù)據(jù)(@ResponseBody)
3.示例如下:
//定義表現(xiàn)層控制器bean
@Controller
public class UserController {
//設(shè)置映射路徑為/delete,即外部訪問路徑
@RequestMapping("/delete")
//設(shè)置當前操作返回結(jié)果為指定json數(shù)據(jù)(本質(zhì)上是一個字符串信息)
@ResponseBody
public String delete(){
System.out.println("user delete ...");
return "{'info':'springmvc666'}";
}
}
- 初始化Servlet容器
AbstractDispatcherServletInitializer 類是SpringMVC提供的快速初始化Web30容器的抽象類,它提供三個接口方法供用戶實現(xiàn)
- createServletApplicationContext()方法
創(chuàng)建Servlet容器時,加載 SpringMVC 對應(yīng)的bean并放入 WebApplicationContext 對象范圍中,而 WebApplicationContext 的作用范圍為 ServletContext 范圍,即整個web容器范圍,示例代碼如下:
//加載springmvc配置類,產(chǎn)生springmvc容器(本質(zhì)還是spring容器)
protected WebApplicationContext createServletApplicationContext() {
//初始化WebApplicationContext對象
AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
//加載指定配置類
ctx.register(SpringMvcConfig.class);
return ctx;
}
- getServletMappings()方法方法
設(shè)定SpringMVC對應(yīng)的請求映射路徑,設(shè)置為/表示攔截所有請求,任意請求都將轉(zhuǎn)入到 SpringMVC進行處理,示例代碼如下:
//設(shè)置由springmvc控制器處理的請求映射路徑
protected String[] getServletMappings() {
return new String[]{"/"};
}
- createRootApplicationContext()方法
如果創(chuàng)建Servlet容器時需要加載非SpringMVc對應(yīng)的bean,使用當前方法進行,使用方式同createServletApplicationContext(),示例代碼如下:
//加載spring配置類
protected WebApplicationContext createRootApplicationContext() {
return null;
}
5.入門案例工作流程
- 啟動服務(wù)器初始化過程
1.服務(wù)器啟動,執(zhí)行ServletContainersInitConfig類,初始化web容器
2.執(zhí)行createServletApplicationContext方法,創(chuàng)建了WebApplicationContext對象
3.加載SpringMvcConfig
4.執(zhí)行@ComponentScan加載對應(yīng)的bean
5.加載UserController,每個@RequestMapping的名稱對應(yīng)一個具體的方法
6.執(zhí)行g(shù)etServletMappings方法,定義所有的請求都通過SpringMVC
- 單次請求過程
1.發(fā)送請求localhost/save
2.web容器發(fā)現(xiàn)所有請求都經(jīng)過SpringMVC,將請求交給SpringMVC處理
3.解析請求路徑/save
4.由/save匹配執(zhí)行對應(yīng)的方法save()
5.執(zhí)行save()
6.檢測到有@ResponseBody直接將save()方法的返回值作為響應(yīng)求體返回給請求方文章來源:http://www.zghlxwxcb.cn/news/detail-471101.html
歡迎各位留言交流以及批評指正,如果文章對您有幫助或者覺得作者寫的還不錯可以點一下關(guān)注,點贊,收藏支持一下作者,后續(xù)還會更新mybatis, springboot,maven高級,微信小程序,等前后端內(nèi)容的學(xué)習(xí)筆記。
(博客的參考源碼可以在我主頁的資源里找到,如果在學(xué)習(xí)的過程中有什么疑問歡迎大家在評論區(qū)向我提出)文章來源地址http://www.zghlxwxcb.cn/news/detail-471101.html
到了這里,關(guān)于初識SpringMVC -- SpringMVC快速入門保姆級教程(一)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!