淺析jsp和servlet的區別
阿新 • • 發佈:2019-02-16
一直都明白jsp和servlet的區別,也一直都很難瞬間用語言表達出來,近來,終於決定整理一下。
Servlet是一種伺服器端的Java應用程式,具有獨立於平臺和協議的特性,可以生成動態的Web頁面。JSP(Java Server Pages)是由Sun Microsystems公司倡導、許多公司參與一起建立的一種動態網頁技術標準。
一句話概括,Servlet和jsp的區別就是:servlet是java程式碼中巢狀html程式碼,jsp是html程式碼中巢狀servlet程式碼。但本質上卻也沒太大區別,jsp本質上也是一個servlet。下圖說明了這個問題:
jsp本質上是個servlet,因為在使用者第一次訪問jsp時,該jsp會先轉成java檔案,然後再編譯成class檔案,如果該jsp沒有改變的話,在伺服器的週期中該jsp只在第一次編譯,後面的使用者即使再訪問,也不會再編譯。所以本質上jsp還是個servlet。
雖然上文說到jsp和servlet的明顯區別在程式碼巢狀方面。但我們總是在追求高內聚,低耦合的系統,追求能多次複用並且易於維護的系統,很明顯,不論java程式碼中巢狀大量html或者html中巢狀大量java程式碼,都給維護造成很大困難,當然也會給開發加大了很大的工作量。所以現在基本不在servlet中寫html程式碼,也儘量少在jsp中寫java程式碼。只讓servlet完成控制器(C)的功能,只讓jsp完成檢視(V)的功能