為什麼網上幾乎沒有見過後綴jsp結尾的網頁?

那麼jsp一般會用在哪裡呢?雖然學了jsp但是老師只講了用法,但我還是分不清它究竟要在什麼時候用。。。


一個原因是jsp也的確是用的少了。

第二個原因是就算用,也不是像早期php那樣每個頁面做一個jsp,然后里面jdbc一杆子捅到資料庫了。而是僅僅把jsp作為一個模版語言,當作mvc模式中的view來使用。這樣在url上,你是看不出它的view是jsp的。比如說/product/333這樣的url, 它只要能找到對應的controller就好,你根本看不出來它的view是用什麼技術做的。


當你寫一個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的。


因為jsp都是通過後台訪問的,顯示的都是後台的地址,所以你也可以把後台定義成.php(手動斜眼)


當你輸入http://www.google.com/ 的時候,實際是告訴瀏覽器用http的get 方法,去訪問http://www.google.com主機的80埠,參數是"/", 也就是 get /

這個時候,工作在應用層的google的伺服器,必須有一個程序來隨時監聽客戶端發來的消息,然後給出相應的返回值。比如,當接受到get /時,應該返回什麼。

*.jsp 也就相當於一個路由參數,拿到參數後,可以做一系列的操作。

每次請求jsp都是訪問servlet再用輸出流輸出的HTML,返回給瀏覽器可渲染的HTML。

這樣來說,只是一個參數,沒有後綴都是可以的。

比如這個問題的路由:https://www.zhihu.com/question/274946141

現在前後端分離的情況下,況且.jsp必須要在支持java的web伺服器里運行(例如tomcat,jetty,resin等),無法使用nginx等高並發伺服器,jsp越來越少。


首先一些答案是完全錯誤的,幾乎見不到 .jsp 後綴的網頁跟前後端分離沒有關係。

JSP 是 Java 中的一種模板技術,在 MVC 設計架構中屬於 View 層。在任何符合基本的 MVC 設計的 Web 程序中都不會讓 View 直接處理和響應請求。

你看不到網頁的 .jsp 後綴是因為對於後端而言你訪問的並不是 jsp 本身 ,而且負責調度模型處理並獲取數據和選擇合適的視圖(JSP)進行渲染的控制層(Controller)。

而這個控制層決定了 URL 和 Controller 單元的映射關係,你甚至可以故意弄出簡單偽裝後端語言的 .php 或者 .aspx 的 URL 映射規則,但實際上你仍然使用的是 Java 和 JSP。

所以這個問題的答案因為是傳統的 Web 應用程序是 MVC 設計架構,而不是什麼別的原因。

說前後端分離的實在是想得太多,明白什麼叫前後端分離嗎?

————

這是每個剛接觸 Web 開發的人都會產生的一個疑惑,同時也是一個基礎到我甚至想匿名的知識,居然還有強答的人,真的服。。。


用jsp寫代碼費力不討好,tomcat這個大坑導致載入慢,而且更新代碼還需要重啟tomcat保證穩定性,tomcat還爆出漏洞,所以前後端分離是由java後端推崇出來的,java一直是網站弱項,當年全棧時代,就是PHP是世界上最好的語言,java是惡魔.部署麻煩,工具鏈複雜,性能受tomcat限制.所以PHP成為了隨便寫寫網頁的最好工具,即時預覽,一鍵部署包,函數式調用,性能還算可以,魔術方法多.雖然很多學校和企業網站都用jsp寫,但是最後都因為性能和維護性差而被淘汰了.但是java在穩定性方面很有優勢,所以他們都更加後端的提供介面,提供一些功能性模塊.所以前端看見jsp很少了,但是java powered還是蠻多的.

jsp有著非常重的痕迹,比如我們還原鏈接的方式,看cookie的方式,比如404未重載都可以看出網站是否是使用了JSP,面對JAVA在web服務端編程市佔率的連連下跌,有的人還匿名大言不慚,誠然很多大公司還在用java,但都慢慢拋棄了Servlet,沒有了servlet,你覺得還能寫jsp?jsp是模板,那PHP也是模板咯?我們實名答題,居然要被匿名威脅?拉出數據來說話啊.還不好意思實名...


Jsp應該有一些學校或者政府的網站還在用。

不在乎技術更新,能用就行。

代碼基本也都是跑了十幾年的了。

兩年前我們學校實驗室都還用著大頭機呢。

現在的互聯網公司應該是沒幾個用的。

現在技術都很成熟了,哪個語言都有幾個高效便捷又省事的框架。


php是最好的語言


不學servlet就直接學jsp的都是流氓教學


因為用了你也看不出來,你能直接看到的不過是一個controller映射的地址,這是完全自定義的,它最終返回的是什麼由controller決定,你根本不知道


現在都是前後端分離架構了 jsp基本不解耦 太重


因為通行的做法是把jsp放到WEB-INF目錄下,不讓用戶直接訪問,而是通過controller/action層轉發到jsp。

現在的javaweb項目都是mvc架構,jsp屬於view層的東西,它只負責渲染,數據是在後端的業務邏輯 是獲取的。

另外,jsp可以運行Java代碼,對伺服器來說屬於比較危險的東西,所以一般伺服器都會禁止直接訪問jsp等有特殊腳本的文件


可以從以下兩點來看。基本是開發和使用的角度,角度不同那麼解讀的結果也不同。

1-耦合度。

Jsp處理邏輯的標籤是jstl,只有在jsp裡面有效。按照MVC的設計,邏輯層的代碼全部耦合在了視圖層view,不管最終編譯,代碼可讀性比較差也不適合團隊協作編碼。最重要的是,開發過程中代碼重構是經常發生的,如果想把後端代碼遷移成.net/python的服務,原jsp就沒用了,或者說改造成本很高。如果視圖層只是html就很容易遷移了。所以設計的時候最好是前後端分離的。如果前端需要邏輯處理展示控制等,可以選擇使用angular、react之類的開發框架。

2-靜態資源部署問題

說實話,總之我比較煩感jsp的資源路徑處理。考慮到與後端邏輯區分的攔截規則,不厭其煩的相對、絕對路徑獲取處理等操作很容易出錯也很浪費時間。如果前後端做了分離,前端服務可以單獨部署,假設不用cdn.把js/html/圖片資源統一歸類成靜態資源一起部署的話,靜態服務只關心靜態資源的轉發和處理。開發也容易針對靜態資源的性能做精細的優化。

歡迎指正。


大概是鄙視JS,後來隔p了,所以jsp就消失了吧?


問這個問題真的知道jsp是什麼東西嗎????


啊?你登錄一下163郵箱。 手動滑稽


圈子問題,很多政府網站,學校網站,保險公司的網站,用的還是jsp


我也是正在自學,剛剛接觸jsp的時候也是這種感覺,不知道這東西到底拿來幹嘛的,裡面可以寫Java代碼,但是老師又說不要寫Java代碼在裡面,然後它本質又是一個servlet,所以搞得很亂。現在以我可能比較不全面的理解認為,其實這東西就是拿來寫頁面的,彌補了html頁面是靜態的缺點,可以填充後台數據,應該就這樣吧。說得不好見諒,也請大佬指導指導


因為主流搜索引擎都不抓取以.jsp結尾的頁面,所以要麼改後綴要麼不用。


推薦閱讀:

TAG:Web開發 | 軟體工程 | JSP | 前端工程師 | 後台開發 |