JavaWeb学习心得总结
JavaWeb(JSP+Servlet)新手學習心得總結
說明:
由于篇幅的原因,本文只是對于JavaWeb項目的大致數據流程做一個介紹,同時引出一些JavaWeb開發中很基礎的知識點,且不會精確到具體代碼實現。
所以本文的適合讀者為剛剛接觸JavaWeb開發的人,或者是想了解一下網頁服務的大致流程的新手。
當然如果你關心具體實現,可以跟學https://www.bilibili.com/video/BV1BJ411L7NR,該教程從針對JavaWeb入門者的角度進行教學,非常適合新手。
同時如果你關心整體項目構建。可以查看https://gitee.com/YangTang-Gitee/library ,學習搭建一個簡單的JavaWeb項目。
推薦結合目錄食用。
預備知識:
1:Java 基礎知識
2:HTML、CSS、JavaScript等前端基礎知識
主要開發工具:
IntelliJ IDEA:非常流行的Java開發IDE,因為其足夠智能且可擴展性很強,目前市場占用率已經位居Java開發IDE榜首,且學生黨可以免費使用完整版,非常適合我等窮孩子。建議新手可以跟https://www.bilibili.com/video/BV1PW411X75p系統學習一下IDEA的使用。
一:JavaWeb服務容器
JavaWeb服務需要特定的容器來管理動態和靜態資源。
?
作為初學者,且只針對簡單的JavaWeb項目,Tomcat是一個不錯的Web 應用服務器。Tomcat最核心的功能是對于JSP與Servlet的管理。
二:Servlet技術
Servlet本質為Java接口或類,開發者通過實現或繼承Servlet接口或類形成自己的一個Servet子類,并在方法中寫上自己的業務,寫上給客戶端的返回等(比如MyFirstServlet):
同時配置該類的在當前Web服務中的訪問地址。
這樣瀏覽器就可以根據 Tomcat地址+當前Servlet的地址訪問到當前Servlet,并執行相關業務。
三:JSP
從語言的角度來講,可以將JSP理解為包含 Java語言+前端3大語言的一個文件。
從實現的本質上來講,JSP是需要傳輸給客戶端很多前端語句的 Servlet。
JSP中含有大量的前端標記語言等,這些將用來給用戶一個完整的界面 。 同時還有少量的Java語言,主要是為了能夠結合實際業務,為頁面提供真實的數據。
在Tomcat中,JSP被訪問時會自動被裝載成一個Servlet。其中的Java語言部分很自然就成了Servlet中的一部分,運行、得到數據等,而其中的前端語言部分會在結合Java部分運行結果后被Servlet寫給客戶端形成界面。所以JSP本質為返回給客戶端一整個完整界面的Servlet。
所以,既生Servlet,何生JSP ?
因為JSP的文件格式符合前端編程的習慣,你只需要在傳統的前端頁面加入少量Java語言就行,如下圖所示 。
當被裝載成Servlet時是這個樣子的:
所以如果開發者要直接在Servlet中去輸出一整合網頁顯然是不人性的,同樣如果在JSP中去摻雜大量的業務代碼也是不利于開發的。
于是在此基礎上就形成了Servlet主內,JSP主外的格局。即Servlet主要負責接收請求、處理業務等,然后將數據等傳遞給某個JSP,JSP負責描述界面、展示數據等。大致可以形成以下流程圖:
EL表達式與JSTL標簽:
從本質上來講這兩者是一樣的,都是JSP中為了簡化Java語言部分的編寫而生的,但是兩者的側重點不一樣。
EL的主要功能是簡化JSP開發中對對象的引用,更側重于數據交互。
JSTL的主要功能對Java中常用語句的封裝,比如你可以用類似HTML那樣標簽來做一個for循環,而不用像Java代碼中那樣手寫循環。
總而言之,沒有這兩個東西你也可以寫,但是有這兩個開發會簡單很多,代碼也會簡潔不少,值得一學。
四:MVC模式
MVC模式并不是新的技術,而是新的思想。
M代表Model,指一個確實的實體類,比如一本書,一個用戶等
V代表View,指返回給用戶看的視圖(JSP)
C代表Controller,指處理具體業務的代碼(Servlet)
Controller負責接收請求、處理業務,然后將處理的數據打包成Model,再將Model整個傳給JSP,JSP則將Model中的數據讀取并顯示。
這樣做可以降低數據與程序的耦合性,無論從開發還是維護,都會減少很多工作量。同時也可以使代碼邏輯更清晰,可讀性更強等。
五:數據庫連接
數據庫連接池
JDBC的基礎知識這里就不在復述,這里我們主要需要了解一個數據庫連接池的概念。
在基礎的獲取數據庫連接對象時,我們每次獲取都需要向數據庫申請獲取連接,驗證?戶名和密碼等,執?完 SQL 語句后斷開連接,這樣的?式會造成資源的浪費,數據連接資源沒有得到很好的重復利?。
而數據庫連接池的概念是,我先申請一批連接對象放到連接池中,當程序需要調用時則提供給它一個連接,而不用重新申請。用完后程序再把該連接還給連接池,而不是直接斷開連接,可供其他請求使用。
DBUtils
DBUtils 可以幫助開發者完成數據的封裝(結果集到 Java 對象的映射)。
因為在基礎的JDBC查詢中,返回結果通常為ResultSet。一方面根據上述MVC中M模式,我們需要自己手動去將數據封裝成對象,另一方面我們將不可避免的手寫循環去遍歷結果集,使得開發很低效。
六:過濾器
顧名思義,過濾器主要是對請求進行過濾的,保證特定的資源只能被特定的人、特定的情況訪問。一方面可以維護安全,另一方面也可以提供不同服務。
七:JavaWeb數據流程
根據以上概念我們就可以總結出一個JavaWeb,或者說大部分Web項目的大致數據流程圖。
上圖的大部分概念都已經介紹過,接下來對MVC之C中的幾個新概念再說明一下。
因為后臺的代碼是很復雜的,你每發送一個請求給一個Servlet,就要求他在當前Java文件即接受和返回信息,又處理具體業務,又要和數據庫通信。實現上是完全可以的,但是這會使得代碼耦合性很高,非常不適合大型項目開發,也不利于調試。
故我們可以用controller來接收請求,然后在controller中注入一個service的對象,使用service對象的方法來實現具體業務。 同樣,如果當前業務時需要使用到數據庫的,可以在service中注入一個repository對象,然后再調用他的方法來實現數據庫操作。
最終的后端的Java文件代碼包大致如下,至于前端的包會有一個專門的文件夾用來放JSP等前端資源。
八:JavaWeb常用功能
上述的東西就大致包含了JavaWeb基本流程,下文的東西都是些現實應用中經常會用到的功能模塊罷了。
1:Ajax技術:
Ajax = Asynchronous JavaScript and XML(異步的 JavaScript 和 XML)。其實核心思想很簡單,在不用刷新整個網頁的情況下刷新局部網頁數據。
比如你在B站看一個投票計數,投票數是時時刻刻都在變化的,而你不用刷新整個頁面就能看到最新的投票數據。這就是自動局部刷新,我只向后端要局部的數據,既可以避免整個頁面的不斷刷新,也可以避免重復請求固定的數據,導致效率降低。
2:文件上傳與下載
這個沒什么新鮮的,但是卻是必需功能。
3:監聽器
主要是對整個Java項目的運行狀況等進行監聽,增強Web應用的事件處理能力。
九:結語
如開頭提到的,本文檔只是個人在JavaWeb學習路上一個心得和理解的總結與分享,所以通篇沒有提到過具體實現,希望能夠給同作為新手的孩子畫一個模樣。
當然也希望大佬們看到后能在評論區批評一下孩子不對的地方。
Respect!
總結
以上是生活随笔為你收集整理的JavaWeb学习心得总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用阿里云OSS完成文件的上传样例
- 下一篇: Java中 VO、 PO、DO、DTO、