第二章:SpringBoot與JSP間不可描述的秘密

springboot內(nèi)部對(duì)jsp的支持并不是特別理想,而springboot推薦的視圖是Thymeleaf,對(duì)于java開發(fā)人員來(lái)說還是大多數(shù)人員喜歡使用jsp,接下來(lái)我們來(lái)講解下springboot是如何支持jsp的。

本章目標(biāo)

整合springboot web項(xiàng)目支持jsp作為視圖輸出。

免費(fèi)專題文章匯總

恒宇少年在博客整理出來(lái)了SpringBoot、ApiBoot、SpringCloud的文章匯總【SpringBoot基礎(chǔ)教程專題】,【SpringCloud基礎(chǔ)教程專題】,【ApiBoot組件使用專題

開始構(gòu)建項(xiàng)目

我們使用IntelliJ IDEA 工具來(lái)構(gòu)建項(xiàng)目,首先我們需要?jiǎng)?chuàng)建一個(gè)springboot項(xiàng)目,如下圖1所示.

圖1

點(diǎn)擊Next后輸入一些項(xiàng)目的基本參數(shù)(包名,工程名,打包形式,maven形式構(gòu)建等),如下圖2所示:

圖2

點(diǎn)擊Next后選擇我們預(yù)先加入到工程的springboot內(nèi)置的jar包組件,我們這里選擇一個(gè)web組件。如下圖3所示:

圖3

點(diǎn)擊Next輸入項(xiàng)目名稱后店家Finish既可以完成了項(xiàng)目的構(gòu)建。新構(gòu)建的項(xiàng)目目錄結(jié)構(gòu)如下圖4所示:

圖3

可以看到上圖中比我們lessonOne項(xiàng)目中多出來(lái)了一個(gè)類文件,ServletInitlalizer,打開該類我們不難發(fā)現(xiàn)它繼承了SpringBootServletInitializer這個(gè)父類,而SpringBootServletInitializer這個(gè)類是springboot提供的web程序初始化的入口,當(dāng)我們使用外部容器(后期文章講解使用外部tomcat如何運(yùn)行項(xiàng)目)運(yùn)行項(xiàng)目時(shí)會(huì)自動(dòng)加載并且裝配。
實(shí)現(xiàn)了SpringBootServletInitializer的子類需要重寫一個(gè)configure方法,方法內(nèi)自動(dòng)根據(jù)LessontwoApplication.class的類型創(chuàng)建一個(gè)SpringApplicationBuilder交付給springboot框架來(lái)完成初始化運(yùn)行配置。

配置springboot支持jsp

我們打開pom.xml(maven配置文件)可以看到我們之前構(gòu)建項(xiàng)目時(shí)已經(jīng)添加了web模塊,而springboot給我們自動(dòng)添加了spring-boot-starter-tomcat配置引入。springboot內(nèi)部集成了tomcat組件,這里我們就不需要重復(fù)引入tomcat組件。

JSP maven

我們先來(lái)添加jsp的maven支持,如下圖4所示:

圖4

Servlet maven

我們還需要引入jsp對(duì)servlet容器的支持,如下圖5所示:

圖5

JSTL maven

除了上面的jsp,servlet支持以外,如果你還需要在jsp頁(yè)面使用jstl標(biāo)簽來(lái)處理界面邏輯,那么需要引入jstl maven,如下圖6所示:

圖6

初嘗試運(yùn)行項(xiàng)目

上面配置就是我們本章需要的全部配置,那么我們先來(lái)嘗試運(yùn)行下項(xiàng)目是否已經(jīng)可以正常運(yùn)行。這里項(xiàng)目運(yùn)行也可以使用IntelliJ IDEA工具提供的組件來(lái)完成,如下圖7所示,:
(注意:如果你已經(jīng)開啟了另外一個(gè)spring boot項(xiàng)目請(qǐng)先關(guān)閉,因?yàn)閟pringboot內(nèi)置的端口號(hào)都是8080這樣會(huì)引起沖突)

圖7

點(diǎn)擊綠色三角號(hào)即可開始運(yùn)行項(xiàng)目,我們先來(lái)嘗試下點(diǎn)擊后看看控制臺(tái)輸入的日志信息。可以看到項(xiàng)目已經(jīng)正常運(yùn)行了,右上角的綠色三角號(hào)也變成了重啟的按鈕,如下圖8所示:

圖8

項(xiàng)目運(yùn)行如圖9所示:

圖9

可以看到項(xiàng)目已經(jīng)正常運(yùn)行,但是我們現(xiàn)在還沒有配置,創(chuàng)建JSP文件,我們接下來(lái)開始配置,創(chuàng)建JSP。

配置視圖

基本配置

如果是使用過eclipse工具的人肯定知道jsp文件之前是在/webapp/WEB-INF/jsp目錄下,那么我們也沿用eclipse的風(fēng)格。
1. 在main目錄下創(chuàng)建webapp文件夾
2. 在webapp下創(chuàng)建jsp文件夾如下圖10所示:

3. 修改application.properties文件讓springmvc支持視圖的跳轉(zhuǎn)目錄指向?yàn)?main/webapp/jsp,配置如下圖11所示:

圖11
圖11

創(chuàng)建index.jsp

我們?cè)趙ebapps/jsp目錄下創(chuàng)建一個(gè)index.jsp用于測(cè)試我們的配置是否已經(jīng)支持了jsp,新建jsp文件如下圖12所示:

圖12

創(chuàng)建IndexController

上面工作我們已經(jīng)完成了jsp的所有配置,那么接下來(lái)我們需要配置springmvc的控制器,我們新建indexController如下圖13所示:

圖13

可以看到上圖我們?cè)贗ndexController配置文件內(nèi)添加了index()方法配置了@RequestMapping注解來(lái)描述index()方法是一個(gè)可以被springmvc管理的請(qǐng)求視圖。我們的index()方法返回值這里是"index"。
為什么我們返回"index",還記得上述步驟中配置的application.properties文件的springmvc請(qǐng)求前綴以及后綴,那么當(dāng)我們?cè)L問/index時(shí)springmvc就會(huì)去找/webapp/WEB-INF/jsp/index.jsp文件。

重啟項(xiàng)目

重啟項(xiàng)目我們嘗試訪問127.0.0.1:8080/index,可以看到如下圖14的效果,證明已經(jīng)完成了springboot與jsp的整合:

圖14

總結(jié)

上述便是我們本章的全部?jī)?nèi)容,本章主要是講解了springboot集成jsp作為渲染視圖,結(jié)合springmvc來(lái)轉(zhuǎn)發(fā)請(qǐng)求。

本章內(nèi)容已經(jīng)上傳到碼云:

SpringBoot配套源碼地址:https://gitee.com/hengboy/spring-boot-chapter

SpringCloud配套源碼地址:https://gitee.com/hengboy/spring-cloud-chapter

SpringBoot相關(guān)系列文章請(qǐng)?jiān)L問:目錄:SpringBoot學(xué)習(xí)目錄

QueryDSL相關(guān)系列文章請(qǐng)?jiān)L問:QueryDSL通用查詢框架學(xué)習(xí)目錄

SpringDataJPA相關(guān)系列文章請(qǐng)?jiān)L問:目錄:SpringDataJPA學(xué)習(xí)目錄

SpringBoot相關(guān)文章請(qǐng)?jiān)L問:目錄:SpringBoot學(xué)習(xí)目錄,感謝閱讀!

歡迎微信掃碼加入知識(shí)星球,恒宇少年帶你走以后的技術(shù)道路?。?!

知識(shí)星球 - 恒宇少年

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,546評(píng)論 6 533
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,570評(píng)論 3 418
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 176,505評(píng)論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,017評(píng)論 1 313
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,786評(píng)論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,219評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,287評(píng)論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,438評(píng)論 0 288
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,971評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,796評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,995評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,540評(píng)論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,230評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,662評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,918評(píng)論 1 286
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,697評(píng)論 3 392
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,991評(píng)論 2 374

推薦閱讀更多精彩內(nèi)容