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