Servlet思維教程


終極版Servlet

前言:這兩天看了SSM框架,本來是想往后繼續學的,腦門一轉又回來了,不能就這么不聲不響的走了,看了這么多天的Servlet,再寫最后一篇做個告別吧,這篇起名為終極版,是我現在所能理解的最高境界,獻給需要的朋友們,希望有所幫助,如有大佬路過,還望海涵,菜鳥依然在路上

認識Servlet

想想我們的JavaSE學習歷程,從最簡單的常量,變量,數據類型到函數,數組,面向對象再到工具類的學習,一路披荊斬棘,所向披靡殺過來了,卻發現在大學忙活了大半年,卻一直在控制台輸出,噫吁嚱,危乎高哉!編程之難,難於上青天!哈哈,其實說這些話的朋友,不是編程難,只是你還沒發現編程之美,要想看美的風景,就要“一覽眾山小”,同樣,要想發現編程之美,你要“一覽編程美”,思維決定高度,這時候你該想,總在控制台輸出,有什么意思,瀏覽器上的東西不也是程序員寫出來的嗎,那什么時候能干點新鮮的。你要是真這樣想了,別急,不論干什么你得了解需求,要想高飛瀏覽器,先看篇博客《B/S和C/S》普及一下常識。了解完了之后,我來給你解說,要想與瀏覽器相關聯,你必須學習Serlvet,不為什么,就是因為Servlet是溝通前端和后端的橋梁(有點皮了,不知道這句話算不算病句,哈哈),你想想,你在瀏覽器的地址欄里輸入一個網址,比如說https://www.cnblogs.com/zyx110/,這就是你在瀏覽器向服務器發送了一次請求,然后你就發現你的瀏覽器頁面就跳轉到我的博客園頁面(就是這么神奇,多試試,增加點人氣),這是你向服務器發送請求后服務器給你的響應,而這個過程就是傳說中的Servlet完成的,Servlet就是專門負責請求數據、處理請求、完成響應的,所以,知道Servlet的重要性了吧。

 

學習Servlet

看完上面這一段你就應該懂Servlet了吧(懂個毛,門都還沒入呢),下面我來教你如何學習Servlet.說到學習,我不得不再重復一下“二八定律”的重要性,學習切忌死學,既然都知道興趣是最好的老師,那何不自己培養自己的興趣呢,再贈你一篇“教你愛上編程妹子” ,我的學習方法,技術知識都分享給你,接下來的就看你自己了。我現在只引導你去學習那必須掌握的20%,我以問題的形式先寫出來,然后給你學習路線,你帶着問題去學習:

如何實現Servlet?

什么是JavaWeb四大域?

如何理解轉發和重定向?

 

先說第一個問題,實現Servlet有三種方式

 

 

 

具體如何實現去看《Servlet學習》,我在這主要講思維講方法,不講具體的知識點,知識是死的,寫這浪費白紙,菜鳥教程上全是知識點,去查就行了,思維才是最重要的,因為這需要自己去悟,長大后很少有人會給你講這些,我也是聽別人給我講,自己領悟,但我想把我收獲的分享給別人,希望能對一些朋友有所幫助。

 

好,進入主題,知道如何實現Servlet后,了解Servlet的生命周期,這個自己看,然后不知道大家看沒看過一些玄幻小說,玄幻小說中有許多中都有空間戒指,空間袋等用來存儲東西的,就拿空間戒指說吧,不知道有沒有看過《斗破蒼穹》的朋友,這部小說里就有空間戒指,叫做“納戒”,此物內部自成空間,能容納很多東西,戴在手上就跟普通戒指一樣。為什么要提這個“納戒”,廢話,當然跟學習有關了,要是想看小說,就看看我寫的小說《匹馬行天下》,不僅能豐富你的精神世界,還能增長知識,何樂而不為呢(其實是想拉點粉,哈哈,記得關注哦)。再回到戒指,之前提到了JavaWeb四大域,這個域有點抽象,所以你先理解為空間戒指,Servlet有一個戒指叫ServletContext,里面能存放東西,這還不是神奇的,最神奇的是存到這個“戒指”里的東西不僅自己能拿,別的Servlet都能共享,,同一個服務器下的所有Servlet都能存和取“戒指”里的東西,怎么樣,夠神奇吧。具體在“戒指”里是怎樣存東西和取東西的還是看博客《進一步理解Servlet》.

 

好,明白了JavaWeb四大域,再聊聊別的,你看你在點瀏覽器頁面上的那些鏈接的時候,是不是頁面會一跳一跳的,很神奇,不信你可以再試着點點這個https://www.cnblogs.com/zyx110/(哈哈,淡定,別打我),是不是又跳到我的博客園頁面了。說重點,這種跳轉也是有名字的,一種叫轉發,另一種叫重定向。兩個都是跳轉,名字不一樣,功能也是不一樣的,我大概說兩種區別:

 

首先要知道,轉發在跳轉的時候帶的東西(參數)能被他要跳轉的頁面接收到,也是用“空間戒”帶的東西,只不過這個“空間戒”的名字叫Request域,而重定向在跳轉的時候,他可以在“空間戒”里裝東西,但是他要跳的頁面不能通過Request域(空間戒)接收他帶的東西,他如果非要讓他帶的東西讓別人接收的話可以通過ServletContext域(空間戒),看破不說破,讓重定向留點隱私,你們自己去看吧。

 

還有一點要知道,就是轉發只請求一次服務器,而重定向請求兩次。怎么理解,我舉個例子,准備好,我要開車了。知道我的都知道,我是個大二的學生,咳咳,先做個自我介紹,我叫***,男孩,性格活潑開朗,愛交朋友,愛學習,沒女朋友(那個,,,先就這吧,編不下去了),我用我自己舉個例,假如說我畢業后要領畢業證,本來很高興的事,不想東窗事發,由於在校期間掛科補考沒過,學校不給發畢業證。怎么辦,我記得像熱鍋上的螞蟻,大山里走出來的孩子要是拿不上畢業證,那不得讓村里人笑話,情急之下我開始找關系,注意了,現在分兩種情況:

情節一:

我費了九牛二虎之力找到了一位主任(是誰我也不知道,故事需要吧,先假想一個,現實很殘酷的,哪有這么容易找到的),這個主任就是負責這塊的,我也不能空着手去吧,拿出畢生心血買了兩條中華煙再加兩瓶茅台(這就是參數,拿這些應該差不多了吧),好,找到某主任跟他求情,主任一看我態度不錯,主要還知道他喜歡喝兩口,買酒了,就答應了,說我得跟校長說一下才行。我說好的好的,謝謝主任。然后主任拿着我送的中華煙和茅台酒,回家藏到櫃子里了,然后拿着過年沒吃完剩下的兩條黑蘭州去找校長,校長好說話,主任一說就答應了,畢竟還是要給主任點面子的。那這事算成了,不就我就得到通知,說來學校領畢業證,然后就證書到手了。

 

來,分析故事(純屬虛構,別當真),這個過程中不管中間是如何周轉的,我是不是只找了一次主任,然后事成后不管是校長說的還是主任說的,總之我得到了一個消息,這就是轉發,只請求一次服務器,中華煙、茅台、黑蘭州是我帶的參數,怎樣,理解了吧。

 

 

情節二:

我還是費勁九牛二虎之力找到了某主任,但我說了,生活不總是一帆風順的,這不,帶着煙酒(參數)去找某主任,可主任不吃這套,給拒絕了,但我也不好把送進去的東西再帶走吧,一咬牙一跺腳,就送他了,然后灰溜溜的回去了,到家后再找,看看有沒有跟情節一一樣的主任,這是后話了。

分析故事:從帶煙酒(參數)找主任被拒絕,回來后再找別的主任,這整個過程我跑了兩次,這就相當於你向服務器發出請求,然后服務器給你響應說訪問不了,你再去重新請求,然后你又發出請求跳到一個頁面上,這就是重定向。

 

 

 

故事補充:情節二中你再去找別的主任,之前買的東西沒有了吧,雖然故事中是把東西留第一個主任那了,回歸到知識點的話,這有個知識點,就是Request域的生命周期是只存在於一次請求,所以等到重定向第二次請求服務器的時候,參數已失效。

具體學習轉發和重定向看博客《重定向和轉發是什么垃圾》。

 

補充:再補充一點,故事純屬虛構,我還沒掛過科,在這提示並希望學弟學妹們在真實生活中千萬不要掛科,千萬不要,千萬!說三遍,很重要!!!

 

 

認識JSP

前面介紹並學習了Servlet,認真看了我推薦的博客的朋友肯定知道我們能通過Servlet向瀏覽器頁面輸出HTML樣式,但是雖然可以輸出,但是寫着很麻煩,代碼量很大,容易出錯,就像下面圖中所示的一樣,這時候就到了JSP閃亮登場的時候了。

 

 

 

JSP不僅成功解決了頁面顯示代碼量大的困難,而且里面還能寫Java代碼並執行。功能也算是很強大了。之前我提到了,JSP是Servlet,其底層就是用Servlet寫的,可以看看源碼,如何看源碼和如何知道JSP是Servlet,看《教你看JSP源碼》,知道了這些之后就看如何去學習JSP,關於JSP的知識我之前寫的很全,就不在這寫了,看我博客就行《JSP學習一》  ,《JSP學習二》。

 

 

認識JSTL和EL表達式

JSP固然強大,可是也有不足,在寫Java語句和HTML語句的時候,嵌套在一起書寫也是很麻煩,看下圖

 

 

這樣寫是不是感覺也很麻煩,這時候JSTL和EL表達式也都閃亮登場,EL表達式語法簡單,使用方便,用${  }代替了<%=  %>,簡化了書寫,還有JSTL,一些大牛們自己封裝了一套代碼,然后以標簽的形式讓我們使用,實現快速開發,在JSP很火的時候,許多公司都有自己的標簽庫,都是自己封裝的,這樣就提高了開發效率,因為我們可以自定義標簽,可以自己封裝代碼,把一些常用的功能,比如說分頁,封裝成標簽,經過一次封裝后,下次不光能自己用,也能讓別人用,許多代碼只需幾個標簽快速實現,你的能力有多大,舞台就有多大。

 

我靠,純手寫3500字了,真能說,我不說了,好累好困,大家都在過暑假,而我卻比在學校還忙,希望越努力越幸運吧!

 

是時候跟Servlet、 JSP正式告別了,以后我可能不會再寫Servlet了,至少目前這個暑假應該不會了,別人都說過時的JSP我卻研究了這么久,唉,,,,,,不知道有沒有意義,不說了,先這樣吧,此篇完,欲知后事如何,請看下回分解。

*****************************************************************************************************

我的博客園地址:https://www.cnblogs.com/zyx110/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM