當你寫一個jsp頁面並執行後,觀察下tomcat編譯後的檔案,會生成相應的*.class,也就說jsp本質上是servlet. 反編譯該class檔案,你會發現該檔案中獲取到你的請求,並處理業務邏輯,然後把結果封裝為html輸出.
所以訪問的頁面都是傳送的請求,而不是靜態的xx.jsp檔案,攔截器攔截到該請求後呼叫相應的servlet處理業務邏輯,然後結果被封裝為靜態檔案xx.html輸出. 而輸出的頁面怎麼寫呢?很麻煩吧?所以jsp的作用就是使用一個模板,用特殊佔位符(比如jstl)來站位並控制簡單邏輯,後臺servlet處理完業務邏輯會按照相應的jsp模板替換為xx.html輸出.
當然也有直接用jsp做後臺開發的,因為本質上是一個class類,可以方便的呼叫後臺其他類.不過這樣違反mvc的開發原則,也不符合前後端分離的開發模式,程式碼無法維護,最重要的是你需要不時的使用醜陋的<%= >符號標註java部分,最終導致程式碼無法閱讀.
當使用框架之後,可以方便的控制請求字尾,java中一般使用 xx.do xx.action xx.html xx等,沒有特殊的意思,只是為了使攔截器方便的區分靜態檔案(*.css *.js等)與請求.
jsp最為一種古老的技術,個人開發中感覺已經很少了.比如現在的jfinal開發框架直接使用html模板,使用自定義的標籤,方便快速.
在大前端飛速發展的今天,甚至出現了完全前後端分離的模式,即全部頁面都是用ajax請求,後臺提供相應的api,所以jsp最終肯定要成為過去式.它只是一個模板.
當你寫一個jsp頁面並執行後,觀察下tomcat編譯後的檔案,會生成相應的*.class,也就說jsp本質上是servlet. 反編譯該class檔案,你會發現該檔案中獲取到你的請求,並處理業務邏輯,然後把結果封裝為html輸出.
所以訪問的頁面都是傳送的請求,而不是靜態的xx.jsp檔案,攔截器攔截到該請求後呼叫相應的servlet處理業務邏輯,然後結果被封裝為靜態檔案xx.html輸出. 而輸出的頁面怎麼寫呢?很麻煩吧?所以jsp的作用就是使用一個模板,用特殊佔位符(比如jstl)來站位並控制簡單邏輯,後臺servlet處理完業務邏輯會按照相應的jsp模板替換為xx.html輸出.
當然也有直接用jsp做後臺開發的,因為本質上是一個class類,可以方便的呼叫後臺其他類.不過這樣違反mvc的開發原則,也不符合前後端分離的開發模式,程式碼無法維護,最重要的是你需要不時的使用醜陋的<%= >符號標註java部分,最終導致程式碼無法閱讀.
當使用框架之後,可以方便的控制請求字尾,java中一般使用 xx.do xx.action xx.html xx等,沒有特殊的意思,只是為了使攔截器方便的區分靜態檔案(*.css *.js等)與請求.
jsp最為一種古老的技術,個人開發中感覺已經很少了.比如現在的jfinal開發框架直接使用html模板,使用自定義的標籤,方便快速.
在大前端飛速發展的今天,甚至出現了完全前後端分離的模式,即全部頁面都是用ajax請求,後臺提供相應的api,所以jsp最終肯定要成為過去式.它只是一個模板.